この計算ツールでできること
このツールは、形状パラメータ a・b に対して密接に関連する2つの特殊関数を、x の範囲にわたって表形式で計算します。下側不完全ベータ関数 \(B_x(a,b)\) は、ベータ関数の被積分関数を 0 から x まで積分した値であり、正規化不完全ベータ関数 \(I_x(a,b)\) はその積分を完全ベータ関数 \(B(a,b)\) で割った値です。\(I_x(a,b)\) はベータ分布 \(\text{Beta}(a,b)\) の累積分布関数(CDF)でもあり、二項分布・スチューデントの t 分布・F 分布をはじめとする多くの分布の CDF の基礎となっています。
使い方
形状パラメータ a と b(いずれも正の値)を入力します。続いて、計算を始める x(x の初期値)、増分(刻み幅)、繰り返し回数(行数)を指定してください。i 行目では \(x = \text{初期値} + i \times \text{刻み幅}\) が用いられます。値は [0, 1] の範囲内に収められ、x が 1 に達した時点で表は終了します。上部のボックスには完全ベータ関数 \(B(a,b)\) と最終行の値が表示され、スクロール可能な表には各 x に対する \(B_x(a,b)\) と \(I_x(a,b)\) が一覧表示されます。
計算式の解説
完全ベータ関数は、対数ガンマ関数に Lanczos 近似を用いて $$B(a,b) = \exp(\operatorname{lgamma}(a) + \operatorname{lgamma}(b) - \operatorname{lgamma}(a+b))$$ として数値的に安定に計算します。正規化値 \(I_x(a,b)\) は、古典的な Numerical Recipes の連分数展開(Lentz のアルゴリズム)で評価します。\(bt = \exp(\operatorname{lgamma}(a+b) - \operatorname{lgamma}(a) - \operatorname{lgamma}(b) + a\cdot\ln x + b\cdot\ln(1-x))\) としたとき、\(x < (a+1)/(a+b+2)\) の場合は \(I_x = bt\cdot\operatorname{betacf}(a,b,x)/a\) を、そうでない場合は \(I_x = 1 - bt\cdot\operatorname{betacf}(b,a,1-x)/b\) を用います。最後に \(B_x(a,b) = I_x(a,b) \times B(a,b)\) を求めます。端点 \(I_0 = 0\)、\(I_1 = 1\) は \(\log(0)\) を避けるため厳密に処理しています。
計算例
\(a = 1\)、\(b = 3\) のとき、$$B(1,3) = \frac{\Gamma(1)\Gamma(3)}{\Gamma(4)} = \frac{1\cdot 2}{6} = \frac{1}{3} \approx 0.333333$$ となります。\(x = 0.5\) では閉形式により \(B_x = (1 - (1-x)^3)/3 = (1 - 0.125)/3 = 0.291667\) となり、\(I_x = 0.291667 / 0.333333 = 0.875\) が得られます。対称性による確認として \(I_x(1,3) = 1 - (1-x)^3 = 1 - 0.125 = 0.875\) となり、結果が一致します。
よくある質問
Bx と Ix の違いは何ですか? \(B_x(a,b)\) は正規化前の積分そのものの値です。\(I_x(a,b) = B_x(a,b)/B(a,b)\) は 0 から 1 の範囲に収まるよう正規化された値です。
なぜ a と b は正でなければならないのですか? 積分とガンマ関数は \(a > 0\) かつ \(b > 0\) のときにのみ収束するためです。
刻み幅によって x が 1 を超えた場合はどうなりますか? 各 x は 1 に丸められ、表は \(x = 1\) で終了します。このとき \(B_x(a,b) = B(a,b)\)、\(I_x(a,b) = 1\) となります。