度数分布のグラフをベータ分布のグラフで近似する

 シミュレーションで得られたグラフがベータ分布に似ているからベータ分布で近似することにしてGeminiに教わった。必要ない質問と回答は省き、質問の順番を入れ替えて記録しておく。

ある度数分布のグラフf(x),x=0~1があります。このグラフの平均値と分散値の求め方を教えてください。

区間 $[0, 1]$ で定義された離散的な度数分布(またはヒストグラムなど)のグラフ $f(x)$ について、平均値と分散値の求め方を解説します。

$x$ が取り得る値が離散的(飛び飛びの値)である場合と、連続的な確率密度関数とみなす場合で少し表記が変わりますが、基本的な考え方は同じです。ここでは一般的によく使われる「階級値(または観測点)と度数」が与えられている場合の求め方を説明します。

1. 基本的なデータ構造の仮定

  • $x_i$:各階級の代表値(横軸の値。$0 \le x_i \le 1$)
  • $f_i$ または $f(x_i)$:各 $x_i$ における度数(または相対度数、確率)
  • 総度数 $N = \sum f_i$ (※もし $f(x)$ がすでに総和が $1$ になるように正規化された確率質量関数や相対度数の場合は $N = 1$ として扱えます)

2. 平均値(期待値)の求め方

平均値 $\mu$ は、「値 × 重み(度数)」の総和を「重みの総和」で割ることで求められます。

$$\mu = \frac{\sum_{i} x_i f(x_i)}{\sum_{i} f(x_i)}$$

  • ※$f(x)$ がすでに相対度数(総和が $1$)に変換されている場合は、分母は $1$ になるため $\mu = \sum x_i f(x_i)$ となります。

3. 分散の求め方

分散 $\sigma^2$ は、「(値 - 平均)の2乗 × 重み」の総和を重みの総和で割ったものです(「2乗の平均 - 平均の2乗」でも計算できます)。

計算方法 A:定義通り(平均からの偏差の2乗平均)

$$\sigma^2 = \frac{\sum_{i} (x_i - \mu)^2 f(x_i)}{\sum_{i} f(x_i)}$$

計算方法 B:計算が楽な公式(2乗の平均 - 平均の2乗)

$$\sigma^2 = \frac{\sum_{i} x_i^2 f(x_i)}{\sum_{i} f(x_i)} - \mu^2$$

まとめ(計算の手順)

  1. 各点 $x_i$ とその度数 $f(x_i)$ の積 $x_i f(x_i)$ を足し合わせて、総度数で割り平均値 $\mu$ を求めます。
  2. 各点について $x_i^2 f(x_i)$ を足し合わせて総度数で割り、「2乗の平均」を求めます。
  3. 「2乗の平均」から「平均の2乗 ($\mu^2$)」を引くことで分散 $\sigma^2$ を求めます。

ベータ分布の区間は0~1ですが、それを横軸で縮めてa~bの区間に分布しているグラフがあります。この縮まったグラフの平均値と分散値から標準ベータ分布の平均値と分散値を求める方法を教えて。

ベータ分布の変域を標準の $[0, 1]$ から任意の区間 $[a, b]$ に線形変換(拡大・縮小と平行移動)したときの、平均と分散の関係について解説します。

$X$ を標準ベータ分布に従う確率変数(変域 $[0, 1]$)とし、それを $[a, b]$ に拡張した確率変数を $Y$ とします。

1. 確率変数の変換関係

$X$ から $Y$ への変換は次のように表されます。

$$Y = (b - a)X + a$$

このとき、標準ベータ分布($X$)の平均を $\mu_X$、分散を $\sigma_X^2$ とし、変換後の分布($Y$)の平均を $\mu_Y$、分散を $\sigma_Y^2$ とします。

2. 平均値の関係と逆算方法

平均値の性質(期待値の線形性)により、平均は次のように変換されます。

$$\mu_Y = (b - a)\mu_X + a$$

したがって、$Y$ の平均値 $\mu_Y$ から標準ベータ分布の平均値 $\mu_X$ を求める公式は次のようになります。

$$\mu_X = \frac{\mu_Y - a}{b - a}$$

3. 分散値の関係と逆算方法

分散の性質(定数の加算は分散に影響せず、定数倍の二乗が外に出る)により、分散は次のように変換されます。

$$\sigma_Y^2 = (b - a)^2 \sigma_X^2$$

したがって、$Y$ の分散値 $\sigma_Y^2$ から標準ベータ分布の分散値 $\sigma_X^2$ を求める公式は次のようになります。

$$\sigma_X^2 = \frac{\sigma_Y^2}{(b - a)^2}$$

また、標準偏差で考えると以下のようになります。

$$\sigma_X = \frac{\sigma_Y}{b - a}$$

まとめ

区間 $[a, b]$ に縮められた(あるいは引き伸ばされた)分布の平均 $\mu_Y$ と分散 $\sigma_Y^2$ が分かっている場合、標準ベータ分布(区間 $[0, 1]$)の平均 $\mu_X$ と分散 $\sigma_X^2$ は以下の計算で求められます。

  • 標準ベータ分布の平均 ($\mu_X$):$$\mu_X = \frac{\mu_Y - a}{b - a}$$
  • 標準ベータ分布の分散 ($\sigma_X^2$):$$\sigma_X^2 = \frac{\sigma_Y^2}{(b - a)^2}$$

ベータ分布の平均値と分散値からB(α,β)のαとβを求める式を教えてください。

ベータ分布の平均値 $\mu$ と分散値 $\sigma^2$ から、形状母数 $\alpha$ と $\beta$ を求める公式は次のとおりです。

1. 求める公式

平均 $\mu$ と分散 $\sigma^2$ を用いて、$\alpha$ と $\beta$ はそれぞれ次のように表されます。

  • $\alpha$ の計算式:$$\alpha = \mu \left( \frac{\mu(1 - \mu)}{\sigma^2} - 1 \right)$$
  • $\beta$ 的な計算式:$$\beta = (1 - \mu) \left( \frac{\mu(1 - \mu)}{\sigma^2} - 1 \right)$$

2. 導出の仕組み

標準ベータ分布の平均 $\mu$ と分散 $\sigma^2$ は、母数 $\alpha, \beta$ を用いて次のように定義されます。

  1. 平均 ($\mu$):$$\mu = \frac{\alpha}{\alpha + \beta}$$
  2. 分散 ($\sigma^2$):$$\sigma^2 = \frac{\alpha \beta}{(\alpha + \beta)^2 (\alpha + \beta + 1)}$$

この2つの連立方程式を $\alpha$ と $\beta$ について解くことで、上記の逆算公式が得られます。

ExcelではCDFを求める関数しかないので、次のようにPDFを求めるようにアドバイスされたのですが、正しいですか?

区間 \([a,b]\) にスケールされたベータ分布の PDF は

$f(x)=\frac{(x-a)^{\alpha-1}(b-x)^{\beta-1}}{(b-a)^{\alpha+\beta-1}B(\alpha,\beta)}$

はい、そのアドバイスは完全に正しいです。

区間 $[a, b]$ にスケール(拡大・縮小)されたベータ分布の確率密度関数(PDF)の式として、ご提示いただいた以下の式は数学的に正確です。

$$f(x)=\frac{(x-a)^{\alpha-1}(b-x)^{\beta-1}}{(b-a)^{\alpha+\beta-1}B(\alpha,\beta)}$$

なぜこの式になるのか(確認)

標準ベータ分布(区間 $[0, 1]$)の確率密度関数を $g(t)$ とすると、

$$g(t) = \frac{t^{\alpha-1}(1-t)^{\beta-1}}{B(\alpha,\beta)} \quad (0 \le t \le 1)$$

これを任意の区間 $[a, b]$ に引き伸ばす変数は $x = (b-a)t + a$ (逆変換は $t = \frac{x-a}{b-a}$)となります。

確率変数の変換における微分(ヤコビアン)は $\frac{dt}{dx} = \frac{1}{b-a}$ となるため、密度関数 $f(x)$ は $g(t)$ に $\frac{1}{b-a}$ を掛けたものになります。

これを整理すると、ご提示いただいた式(分母に $(b-a)^{\alpha+\beta-1}$ がかかる形)にきれいに一致します。

BETA.DISTが使えないのです。

BETA.DIST が使えない古いバージョンのExcel(または古い関数である BETADIST を使う環境)では、おっしゃる通り直接PDFを出す機能がないため、工夫が必要です。

ベータ関数 $B(\alpha, \beta)$ をExcelで直接計算したい場合は、以下の数式でスッキリ表すことができます:

$$B(\alpha, \beta) = \frac{\Gamma(\alpha)\Gamma(\beta)}{\Gamma(\alpha+\beta)}$$

2. $B(\alpha, \beta)$ の正しい計算方法

Excelでベータ関数 $B(\alpha, \beta)$ を正確に計算するには、ガンマ関数の対数(GAMMALN)を使って次のように記述する必要があります。

EXP(GAMMALN(α) + GAMMALN(β) - GAMMALN(α + β))

$$f(x)=\frac{(x-a)^{\alpha-1}(b-x)^{\beta-1}}{(b-a)^{\alpha+\beta-1}B(\alpha,\beta)}$$を求めるのに、途中でlnを入れて計算する方法を他の所で教わったのですが、どういうことだと思いますか?

それは非常に実践的で、コンピュータやExcelで計算する際の「桁あふれ(アンダーフロー・オーバーフロー)」を防ぐためのプロのテクニックです。

なぜグラフを描くためにわざわざ $\ln$(自然対数)を経由するのか、その論理的な理由を解説します。

1. そのまま計算することの「危険性」

Excelなどのコンピュータは、極端に大きな数や、極端に小さな数($0.0000\dots 01$ のような数)を扱うのが非常に苦手です。一定の限界を超えると、強制的に $0$ として扱ってしまったり(アンダーフロー)、計算エラーを起こしたりします。

ベータ分布の式を再確認してみます。

$$f(x)=\frac{(x-a)^{\alpha-1}(b-x)^{\beta-1}}{(b-a)^{\alpha+\beta-1}B(\alpha,\beta)}$$

もし $\alpha$ や $\beta$ が大きな値になった場合(あるいは $x$ が $a$ や $b$ に極端に近い場合)、分子の $(x-a)^{\alpha-1}$ などは天文学的に小さな数字になり、Excelは計算の途中でこれを「$0$」と見なしてしまいます。同様に、分母の $B(\alpha,\beta)$ も極端に小さな値になります。

結果として「極小の数 $\div$ 極小の数」という処理が発生し、正しい高さが計算できずグラフの形が崩壊してしまいます。

2. $\ln$ を使って計算を安全にする魔法

そこで、「掛け算・割り算・累乗」を「足し算・引き算・掛け算」に変換できる対数 $\ln$ の性質を使います。数式全体を一度 $\ln$ の世界に持ち込むと、次のように分解できます。

$$\ln f(x) = (\alpha-1)\ln(x-a) + (\beta-1)\ln(b-x) \\ \hspace{40pt} - (\alpha+\beta-1)\ln(b-a) - \ln B(\alpha,\beta)$$

さらに、先ほど修正で使ったように、ベータ関数の対数 $\ln B(\alpha,\beta)$ はガンマ関数の対数(Excelの GAMMALN)を使って足し算・引き算で表せます。

$$\ln B(\alpha,\beta) = \ln \Gamma(\alpha) + \ln \Gamma(\beta) - \ln \Gamma(\alpha+\beta)$$

これを組み合わせると、計算中の値はせいぜい数十から数百程度の「安全な数値の足し算・引き算」だけになり、Excelが途中で $0$ に丸めてしまう事故が絶対に起きなくなります

3. 最後に元に戻す($\exp$)

$\ln f(x)$ の世界で安全に計算を終えたら、最後に指数関数(Excelでは EXP 関数)を使って本来の $f(x)$ の値に戻します。

$$f(x) = \exp(\ln f(x))$$

まとめ:教わった方法の意味

つまり、他の所で教わった「途中で $\ln$ を入れて計算する方法」というのは、次のようなプロセスを指しています。

  1. 全体を対数化する(途中の計算で桁あふれが起きないようにする)
  2. 足し算・引き算だけで $\ln f(x)$ を安全に計算する
  3. 最後に $f(x) = \exp(\dots)$ で元の確率密度の値に戻す

前回、私が分母の $B(\alpha, \beta)$ を直すために EXP(GAMMALN(α) + GAMMALN(β) - ...) という数式をご提案しましたが、あれは「分母だけ」に対数のテクニックを使ったものでした。教わった方法は、それを「関数全体」に対して適用した、より完璧でエラーに強い計算方法と言えます。非常に論理的で正しいアプローチです!

度数分布のグラフ
元の度数分布のグラフ
ベータ分布のグラフ
近似したベータ分布のグラフ
日記
シェアする
いしい@長文をフォローする

コメント

タイトルとURLをコピーしました