高校数学10分プログラミング(数学B編 4.確率分布と統計的な推測)6日目「確率変数の和と積を考える1」
マガジンリスト > 数学B編 4.確率分布と統計的な推測 > 6日目 課題
おはようございます。
本日は、高校数学10分プログラミング(数学B編 4.確率分布と統計的な推測)の6日目です。
本日の課題は、確率変数$${X}$$と$${Y}$$の和に対する期待値、分散及び標準偏差を求めるプログラムを作成することです。
確率変数の和と積
まず、確率変換の和と積について解説しておきます。
確率変数の和と期待値
$${X,Y}$$は確率変数、$${a,b}$$は定数とする。
$${ E(X+Y)=E(X)+E(Y) }$$
$${ E(aX+bY)=aE(X)+bE(Y) }$$
確率変数の独立
2つの確率変数$${X,Y}$$があって、$${X}$$のとる任意の値$${a}$$と、$${Y}$$のとる任意の値$${b}$$について$${P(X=a, Y=b)=P(X=a)P(Y=b)}$$が成り立つとき、確率変数$${X}$$と$${Y}$$は互いに独立であるという。
独立な確率変数の積の期待値、和の分散
$${X,Y}$$は互いに独立な確率変数、$${a,b}$$は定数とする。
独立な確率変数の積の期待値
$${ E(XY) = E(X)E(Y) }$$
独立な確率変数の和の分散
$${V(X+Y)=V(X)+V(Y)}$$, $${V(aX+bY)=a^2V(X)+b^2V(Y)}$$
課題
10円硬貨1枚と100円硬貨1枚を同時に投げるとき、表の出た硬貨の金額の和の期待値と標準偏差を求めるプログラムを作成してください。
2つの解法
今回の課題は、2つの方法で表の出た硬貨の金額の和の期待値と標準偏差を計算することができます。1つ目は、同時分布を利用して$${E(aX+bY), V(aX+bY)}$$を計算する方法です。今回はこの方法で行います。2つ目は確率変数の独立性を利用して先に$${E(X),E(Y),V(X),V(Y)}$$を求めてその後$${aE(X)+bE(Y)}$$や$${a^2V(X)+b^2V(Y)}$$を計算する方法です。こちらは次回(7日目)に行います。
アルゴリズム設計
$${X}$$を10円硬貨の裏が出たとき 0 、表が出たとき 1 となる確率変数とし、$${Y}$$を100円硬貨の裏が出たとき 0 、表が出たとき 1 となる確率変数とします。このとき、この課題の同時分布は
$$
\begin{array}{c||cc|c}
\hline
X \backslash Y & 0 & 1 & \mathrm{計} \\
\hline \hline
0 & 1/4 & 1/4 & 1/2 \\
1 & 1/4 & 1/4 & 1/2 \\
\hline
\mathrm{計} & 1/2 & 1/2 & 1 \\
\hline
\end{array}
$$
となります。今回は、この同時分布を利用して、表の出た硬貨の金額の和の期待値$${m}$$と標準偏差$${\sigma}$$を計算します。
$$
m=E(10X+100Y) = \sum_{x=0}^1 \sum_{y=0}^1 (10x+100y)p_{x,y}
$$
$$
v = V(10X+100Y) = \sum_{x=0}^1 \sum_{y=0}^1 (10x+100y -m)^2p_{x,y}
$$
$$
\sigma = \sqrt{v}
$$
プログラム
今回の課題の同時分布を用いて確率変数の和の期待値と標準偏差を求めるプログラムを示します。
// 10円硬貨1枚と100円硬貨1枚を同時に投げるとき、
// 表の出た硬貨の金額の和の期待値と標準偏差を求める。
// 同時分布を利用
void setup(){
int a = 10; // 10円
int b = 100; // 100円
// 同時分布P
float[][] p = {{1.0/4.0,1.0/4.0},{1.0/4.0,1.0/4.0}};
// 同時分布による期待値の計算
float m = 0.0;
for(int x=0; x<=1; x++){ // 10円硬貨の裏(0)、表(1)
for(int y=0; y<=1; y++){ // 100円硬貨の裏(0)、表(1)
m =
}
}
// 同時分布による分散の計算
float v = 0;
for(int x=0; x<=1; x++){ // 10円硬貨の裏(0)、表(1)
for(int y=0; y<=1; y++){ // 100円硬貨の裏(0)、表(1)
v =
}
}
// 同時分布による標準偏差の計算
float sigma = sqrt(v);
// 期待値、分散、標準偏差の値をコンソールに出力
println("期待値 :", m);
println("分散 :", v);
println("標準偏差:", sigma);
}
ソースコード1 同時分布を用いて確率変数の和の期待値と標準偏差を求めるプログラム(未完成)
ソースコード1では、同時分布 p を2次元配列で準備して、その同時分布を用いて確率変数の和の期待値 m 、分散 v 及び標準偏差 sigma を求めています。
ただし、期待値 m と分散 v を計算する部分は未完成です。
// 同時分布による期待値の計算
float m = 0.0;
for(int x=0; x<=1; x++){ // 10円硬貨の裏(0)、表(1)
for(int y=0; y<=1; y++){ // 100円硬貨の裏(0)、表(1)
m =
}
}
// 同時分布による分散の計算
float v = 0;
for(int x=0; x<=1; x++){ // 10円硬貨の裏(0)、表(1)
for(int y=0; y<=1; y++){ // 100円硬貨の裏(0)、表(1)
v =
}
}
これらの計算の部分を追記してソースコード1を完成させてください。
なお、スケッチ名は「SumofProbabilityVariables」としてください。
それでは、よろしくお願いします。
MK's papa