QCプラネッツ 品質のプロフェッショナルを育成するサイト

不完全ベータ関数が計算できる

統計学

「不完全ベータ関数が計算できない」と困っていませんか?

こういう疑問に答えます。

本記事のテーマ

不完全ベータ関数が計算できる
  • ①不完全ベータ関数とは
  • ➁不完全ベータ関数は手計算できない
  • ➂プログラムを使って不完全ベータ関数を計算しよう

①不完全ベータ関数とは

ベータ関数とは

詳細は関連記事をご覧ください。

ベータ関数がよくわかる
ベータ関数は自力で解けますか?本記事ではベータ関数の導出方法や性質、ガンマ関数との関係をわかりやすく解説します。大学の数学のような難解な説明は一切していません。、大学受験で頻出問題となるベータ関数は受験でも統計学でも重要です。受験生と統計学を学ぶ人は必読です。

式は

\(B(m,n)= \displaystyle \int_{0}^{1} x^{m-1}(1-x)^{n-1} dx\)
=\(\frac{(m-1)!(n-1)!}{(m+n-1)!}\)

不完全ベータ関数とは

積分区間が違います。

\(B(m,n)= \displaystyle \int_{0}^{z} x^{m-1}(1-x)^{n-1} dx\)
=??

大した差ではないですが、計算の大変さが全然ちがいます。

不完全ベータ関数はメジアンランク法に使う

信頼性工学のメジアンランク法で不完全ベータ関数を使うので、解説します。

詳細は関連記事をご覧ください。

➁不完全ベータ関数は手計算できない

完全なベータ関数を部分積分する

まず、部分積分すると、漸化式が作れます。

\(\displaystyle \int_{0}^{1} x^{m-1}(1-x)^{n-1} dx\)を部分積分すると、
\(\left[ \frac{1}{m}x^{m} (1-x)^{n-1} \right]_{1}^{0}\)
=\(\displaystyle \int_{0}^{1} x^{m-1}(1-x)^{n-1} dx\)
+\(\frac{n-1}{m}\displaystyle \int_{0}^{1} x^{m}(-1)(1-x)^{n-2} dx\)

(左辺)= \(\left[ \frac{1}{m}x^{m} (1-x)^{n-1} \right]_{1}^{0}\)は0です。

(右辺)=\(I(m.n)\)-\(\frac{n-1}{m}I(m+1,n-1)\)
となり、
0=\(I(m.n)\)-\(\frac{n-1}{m}I(m+1,n-1)\)
から漸化式が作れて、
積分\(I(m.n)\)= \(\displaystyle \int_{0}^{1} x^{m-1}(1-x)^{n-1} dx\)が計算できます。

不完全なベータ関数を部分積分する

同様に積分区間が[0,z]においても、部分積分すると、漸化式が作れます。

\(\displaystyle \int_{0}^{z} x^{m-1}(1-x)^{n-1} dx\)を部分積分すると、
\(\left[ \frac{1}{m}x^{m} (1-x)^{n-1} \right]_{z}^{0}\)
=\(\displaystyle \int_{0}^{z} x^{m-1}(1-x)^{n-1} dx\)
+\(\frac{n-1}{m}\displaystyle \int_{0}^{z} x^{m}(-1)(1-x)^{n-2} dx\)

(左辺)= \(\left[ \frac{1}{m}x^{m} (1-x)^{n-1} \right]_{z}^{0}\)は0にならず、zの変数になります。です。

(右辺)=\(I(m.n)\)-\(\frac{n-1}{m}I(m+1,n-1)\)
となり、
(左辺のzの式)=\(I(m.n)\)-\(\frac{n-1}{m}I(m+1,n-1)\)
から漸化式が作れますが、

ここから手計算はキツイ。。。

なので、

プログラムを使って不完全ベータ関数を計算しよう

➂プログラムを使って不完全ベータ関数を計算しよう

二項定理を使って、不完全ベータ関数の計算式を作る

では、やってみましょう。

\(B(m,n)= \displaystyle \int_{0}^{z} x^{m-1}(1-x)^{n-1} dx\)
ここで、\((1-x)^{n-1}\)を二項定理で展開します。大丈夫ですか?

QCには欠かせない二項定理、統計学、抜取検査、信頼性工学と大活躍です。

\((1-x)^{n-1}\)=\(\sum_{r=0}^{n-1} {}_{n-1}C_r 1^r (-x)^{n-1-r}\)

これを積分式に代入します。ちょっと難しいけど、頑張りましょう。

\(B(m,n)= \displaystyle \int_{0}^{z} {}_{n-1}C_r x^{m-1}(1-x)^{n-1} dx\)
= \(\displaystyle \int_{0}^{z} x^{m-1} \sum_{r=0}^{n-1} {}_{n-1}C_r 1^r (-x)^{n-1-r} dx\)
\(x\)の次数を合計します。

= \(\displaystyle \int_{0}^{z} \sum_{r=0}^{n-1} {}_{n-1}C_r (-1)^{n-1-r} x^{n+m-2-r} dx\)

\(x\)の整式なので、積分すると、
\(\left[ \sum_{r=0}^{n-1} {}_{n-1}C_r (-1)^{n-1-r} \frac{1}{n+m-1-r} x^{n+m-1-r} \right]_{z}^{0}\)
=\( \sum_{r=0}^{n-1} {}_{n-1}C_r (-1)^{n-1-r} \frac{1}{n+m-1-r} z^{n+m-1-r} \)

となります。これをプログラムに入れて計算させます。

プログラム(Excel VBA)を使って不完全ベータ関数を計算しよう

では、プログラムを公開します。実際、いじってみてください。

VBAプログラム例

1. Sub gam()
2.
3. gok = 0 ‘B(m,n) 初期化
4.
5. Dim nn As Long, mm As Long
6. nn = Cells(2, 3): mm = Cells(3, 3): zz = Cells(4, 3)
‘自然数n,mと、実数(0~1)zをセルに代入
7.
8. For i1 = 1 To nn ‘nの値 1~nまで
9. Cells(i1 + 6, 2) = i1
10. For j1 = 1 To mm ‘mの値 1~mまで
11. Cells(6, j1 + 2) = j1
12. gok = 0 ‘初期化
13. For k1 = 0 To i1 – 1
‘rの値 0~n-1まで(二項定理)
14.
15. ‘積分の計算
16. gok = gok + WorksheetFunction.Combin(i1 – 1, k1) *
((-1) ^ (i1 – 1 – k1))
* (1 / (i1 + j1 – k1 – 1))
* (zz ^ (i1 + j1 – k1 – 1))
17. Next k1
18. Cells(i1 + 6, j1 + 2) = gok ‘結果を出力
19. Next j1
20. Next i1
21.
22. End Sub

計算例

z=1のとき

z=1のときは、完全なベータ関数ですから

\(B(m,n)= \displaystyle \int_{0}^{1} x^{m-1}(1-x)^{n-1} dx\)
=\(\frac{(m-1)!(n-1)!}{(m+n-1)!}\)

の値と一致します。

上のプログラムの計算結果は

不完全ベータ関数

となり、
\(B(m,n)\)= \(\frac{(m-1)!(n-1)!}{(m+n-1)!}\)
と一致します。

確かに、\(m=4,n=5\)を代入するとB(m,n)は
\(B(4,5)\)= \(\frac{(4-1)!(5-1)!}{(4+5-1)!}\)
= \(\frac{3!・4!}{8!}\)
=\(\frac{1}{280}\)
=0.003571

図を見ると確かに、 \(m=4,n=5\)のときは、0.003571となり、計算結果が一致しています。

z=zのとき

テキトウな値を入れて、確認しましょう。

不完全ベータ関数

z=0.5の場合を計算しましたが、0から1の間の実数を入れれば、上のプログラムで一瞬で計算してくれます。是非活用ください!

できましたね。

まとめ

「不完全ベータ関数が計算できる」を解説しました。

  • ①不完全ベータ関数とは
  • ➁不完全ベータ関数は手計算できない
  • ➂プログラムを使って不完全ベータ関数を計算しよう


Warning: count(): Parameter must be an array or an object that implements Countable in /home/qcplanets/qcplanets.com/public_html/wp-content/themes/m_theme/sns.php on line 119

    Warning: Invalid argument supplied for foreach() in /home/qcplanets/qcplanets.com/public_html/wp-content/themes/m_theme/sns.php on line 122
error: Content is protected !!