数学への挑戦 第二弾〜まとめ1:数理モデルxプログラミング〜

前回は確率変数の足し算を行いました。しかし、イマイチな感じです。。。
なので、これらをまとめるために「樹形図」を使用して今までの学習したものをまとめようと思います。

今までのまとめ

  1. 傘を持っていくべきか、持っていかないべきか?
  2. 数理モデルをJavaで表現する
  3. 喫煙率を求めるモデル
  4. コインの表裏(確率変数)
  5. コインの表裏(期待値と分散)
  6. 卒業までに彼氏ができる確率
  7. 確率変数の足し算

使用する書籍は下のものです。

1.傘を持っていくべきか、持っていかないべきか?

ここでは、傘を持っていくことの嫌度(損失)を-2とし、雨に濡れることの嫌度(損失)を-10として計算式(数理モデル)を作成しました。
ポイントは「全てのケースに対する結果を数値化する」と言うところでした。
具体的には以下のようになります。

<前提>
行動の選択肢は「傘を持ってくる」 or 「持ってこない」の2つ
<嫌度>
雨に濡れることの嫌度 = -10(濡れないとき = 0)
傘を持ってくることの嫌度 = -2
<確率>
雨の確率: 60% = 0.6
晴れの確率: 40% = 0.4

上記のようになります。

平均的な損失を求める

上でまとめたものを表にすると下のようになります。
<天気(確率 : 嫌度)>

傘を持ってくる 持ってこない
Ⅰ 晴れ(0.4 : -2) Ⅲ 晴れ(0.4 : 0)
Ⅱ 雨(0.6 : -2) Ⅳ 晴れ(0.6 : -10)

これらの結果(Ⅰ -> Ⅳ)から平均を求めると

<傘を持ってきた場合の損失>
Ⅰ + Ⅱ + Ⅲ + Ⅳ = (0.4 - 2) + (0.6 - 2) = -0.8 - 1.2 = -2のようになります。
<傘を持ってこない場合>
Ⅰ + Ⅱ + Ⅲ + Ⅳ = (0.4 0) + (0.6 -10) = 0 - 6 = -6

2.数理モデルをJavaで表現する

そして、変数にできるものを変数化(一般化)してやるとしたのようになる。

降水確率60% = 0.6 = p : 晴れの確率40% = 1 - p
雨に濡れる嫌度 = -10 = -c : 傘を持ってくる嫌度 = -c/5

雨の場合
(0.4 x -2) + (0.6 x -2) = -2 => ((1-p) x -2) + (p x -2) = (-2 + 2p) + (-2p) => 平均は「-2」
晴れの場合
(0.4 x 0) + (0.6 x -10) = -6 => ((1-p) x 0) + (p x -10) = 0 + -10p = 平均は「-10p」

ここで「雨に濡れる嫌度が1/5」になっているのでこれも変数化します。変数名は「a」にします、そして割合なので0 < a < 1」になります。まとめると以下のようになります。

雨の確率 = p : 晴れの確率 = 1 - p
雨に濡れる嫌度 = -c : 傘を持ってくる嫌度 = -ac

これを式にすると。。。

傘を持って来た時
((1-p) x -ac) + (p x -ac) = (-ac + pac) + (-pac) = -ac
傘を持ってこなかった時
((1-p) x 0) + (p x -c) = (0 - pc) = -pc

結果として、

a > p

なので、「雨の確率がa(傘を持ってくる嫌度の割合)より大きい時」ということになります。

3. 喫煙率を求めるモデル

回答のランダム化で、出た結果のグループ分けを行う
1.Aグループ = コインで表が出た人
2.Bグループ = コインで裏が出た人
3.Cグループ = Aの中でタバコを吸った人
4.Dグループ = Bグループでタバコを吸った人

実際に行ってはいないけれど「仮に」喫煙者が400人いたとするのであれば、喫煙率は「400 / 1000 = 40%」になるので「コイントスでA, Bグループ(500人ずつ)にいる喫煙者社の割合(確率)も40%で200人ずついることになる。

求めるべき値の喫煙者数=400は下のようにして求めることができる。

|B U C| = |B| + |C|
|B U C| - |B|=  |C| 両辺から|B|を引く

下の値を使用して計算すると。。。
|B U C|=600, |A|=500, |B|=500
次のような計算式で求めることができる
|B U C| - |B| = |C| = 100
|C| / |A| = 100 / 500 = 0.2 = 40%
となる。。。つまり喫煙者の割合は「40%」になり「仮定」で示した「400」と言う数値も正しいものであると言える。

と言うような感じで、集合を使った時の考え方を学びました。

4. コインの表裏(確率変数)

確率変数

前回の話では、コインの表裏を使ったので下のような確率が存在します。

出来事 確率
裏が出る 0 0.5(1/2)
表が出る 1 0.5(1/2)

そして、出来事の集合をΩ={裏, 表}のように表現します。
さらに、(わかりやすいように)コインがちょっと曲がっていて上の確率が変わり下のようになったとします。(仮定)

出来事 確率
裏が出る 0 0.4
表が出る 1 0.6

ここでの「0」「1」が確率変数というものになります。

サイコロの場合
目の数 1 2 3 4 5 6
確率 1/6 1/6 1/6 1/6 1/6 1/6

1〜6が確率変数で下のように数式で表します。
1(実現値) x 1/6(確率)

そして一般化するとE[X] = xi pi
のように表現できる。

5. コインの表裏(期待値と分散)

目の数 1 2 3 4 5 6
確率 1/6 1/6 1/6 1/6 1/6 1/6

1〜6が確率変数で下のように数式で表します。
1(実現値) x 1/6(確率)

そして一般化するとE[X] = xi pi
のように表現できる。

期待値

期待値=<確率変数の実現値> x <実現値の確率>の合計

つまり、サイコロの期待値は・・・

(1 x 1/6) + (2 x 1/6) + (3 x 1/6) + (4 x 1/6) + (5 x 1/6) + (6 x 1/6) = 3.5となる。

6. 卒業までに彼氏ができる確率

「出会った男性が青葉のことを好きになる or ならない」で考えます。

好きになる 好きにならない
1 0

そして、確率変数の時と同じように表にすると下のようになります。

出来事 確率
好きにならない 0 1 - p
好きになる 1 p

P(X1 = 1) = p
P(X2 = 0) = 1-p

これが、ベルヌーイ分布というもだと書いてありました。

確率変数Xが、「確率pでX=1」となり、「確率1-pでX=0」となる時、確率変数Xはベルヌーイ分布に従う、という

男性1(X1) 男性2(X2) 男性3(X3) 合計
No No No 0
Yes No No 1
No Yes No 1
No No Yes 1
Yes Yes No 2
Yes No Yes 2
No Yes Yes 3
Yes Yes Yes 3

上の表が起こりうるパターンを一覧化したものです。
これらの期待値を算出するためにはどう考えたら良いかを学習しました。

7. 確率変数の足し算

上の表にあるもので実際に同時には起きない事象があります。

X1, X2の独立下確率変数を1つの塊としてみる

と言うことが「確率変数の足し算」と言う意味です。
これはどう言うことかと言うと

「男性1が好きになり、男性2が好きにならない」という事象と「男性2が好きになり、男性1が好きにならない」という事象は「同時に起きない」

と言うことなので、

パターン数が1のもの(合計が0 or 3)

① P(X1 + X2 + X3 = 0) = P(X1=0, X2=0, X3=0) = P(X1=0)P(X2=0)P(X3=0) = 1/2 x 1/2 x 1/2 = 1/8

②P(X1 + X2 + X3 = 3) = P(X1=1, X2=1, X3=1) = P(X1=1)P(X2=1)P(X3=1) = 1/2 x 1/2 x 1/2 = 1/8

パターン数が2のものは合計が(2になるもの)

③ P(X1 + X2 + X3 = 2) = P(X1=1, X2=1, X3=0) 
+ P(X1=0, X2=1, X3=1)
+ P(X1=1, X2=0, X3=1)

= P(X1=1)P(X2=1)P(X3=0) 
+ P(X1=0)P(X2=1)P(X3=1)
+ P(X1=1)P(X2=0)P(X3=1)
= 1/8 + 1/8 + 1/8 = 3/8

パターン数が3のもの(合計が1)

④P(X1 + X2 + X3 = 1) = P(X1=1, X2=0, X3=0) 
+ P(X1=0, X2=1, X3=0)
+ P(X1=0, X2=0, X3=1)

= P(X1=1)P(X2=0)P(X3=0)
+ P(X1=0)P(X2=1)P(X3=0)
+ P(X1=0)P(X2=0)P(X3=1)
= 1/8 + 1/8 + 1/8 = 3/8

これらを表にすると
<X1 + X2 + X3>

実現値 0 1 2 3
確率 1/8 3/8 3/8 1/8

とちょっと長くなりましたが、こんな感じで学習してきました。

これから、ちょいと学習レベルを上げていく感じです。
つまり、実際に数理モデルを扱うための学習になって行きます。

でわでわ。。。

関連ページ

Java版のNumpyのまとめ〜Deep Learningで使える〜



数理モデル関連

第二弾

第三弾

投稿者:

takunoji

音響、イベント会場設営業界からIT業界へ転身。現在はJava屋としてサラリーマンをやっている。自称ガテン系プログラマー(笑) Javaプログラミングを布教したい、ラスパイとJavaの相性が良いことに気が付く。 Spring framework, Struts, Seaser, Hibernate, Playframework, JavaEE6, JavaEE7などの現場経験あり。 SQL, VBA, PL/SQL, コマンドプロント, Shellなどもやります。

コメントを残す