1章 割合いと確率


みなさんは割り算は出来ますか?


「インパクトで気を引こうとして、何かの啓蒙本でも読んだの?」とかの声が聞えてきそうですが、割り算は非常に大切ですので復習してみましょう。


早速ですが、9÷2はいくつですか?


学校で最初に習うやり方でやってみましょう。

9から2を引けなくなるまで引いて答えを導いてみます。


9-2=7

7-2=5

5-2=3

3-2=1


1からはもう2は引けないので1が余りました。

4回引けて1が余ったので、4余り1ですね。


では、もう少し進めて今度は小数点も登場させてみます。

2÷4.5はいくつですか?


これは1回も引けませんので余りだけになってしまいます。

仕方がないので電卓でやってみましょう、すると0.44444.....と出てきます。

最近の関数電卓ではInftyProjectにように分数での表示も出来ます。

筆者は某ネット通販最大手で買った1500円ぐらいの関数電卓を使っていますが、数式のイメージまま計算できますし、ちょっとした計算ならPCを立ち上げるより早いので大変便利です。

サイコロを振る計算などでも、Rや表計算などではInftyProjectInftyProjectのようになってしまいますが、関数電卓ではInftyProjectと数式通りに打ち込めますし、答えも分数で出してくれます。

小数⇔分数変換も、ボタン一つで重宝しています。


全くの余談でした、話を戻します。


日常生活では、「割り勘」とか「山分け(分配)」とか、均等に分けるという場面が多く出てきます。

「何かをn等分する」という場面で割り算は大活躍します。

ですから、なのか理由は知りませんが、最初に割り算を習う時は、引き算の延長のように習うので、小学校低学年でも分けるという計算が出来るようになります。

ですが、割り算を分割する計算式だと思っていると確率計算では行き詰まります。


0.5の半分はいくつですか? 0.5÷0.5? 違いますよね、これじゃ1になってしまいます。

割り算は必ずしも分ける計算ではありません。

割られる方が、割る方に対してどのぐらいの大きさかを表す式なのです。

言い方を変えると、分子は分母に対してどのぐらいの大きさかという計算式です。


例えば6÷2は3ですね。6は2に対して3倍の大きさという意味になります。

0.6÷0.2も、やっぱり3です。

確率の計算はInftyProjectが基本になります。


起こり得る全部の事象より、求める事象の方が大きいという事はありませんので、必ず1以下の答えになる筈です。

分母より分子が小さくなければ、確率の計算式としては何処かが間違っている事になります。

当たり前の話でしたが、割り算の考え方が違っているとボタンを掛け違えたまま進んでしまいますので、再確認をしてみました。



さて、次は面積と確率の話です。

下の円グラフは、

○が60

×が5

△が12

☆が23

のデータを表示したものです。

この色分けされた面積の大きさがそのまま確率の大きさになります。

中心に向かってダーツを投げた場合に、当たる確率と考えれば判り易いと思います。

image001.png


○のところに当たる確率はInftyProjectです。

もし円全体の面積が小さかったり大きかったりすると、当たり前ですが確率に影響します。

データに過不足があれば当然精度の低い確率しか出せません。


このグラフの○、×、△、☆が何かの集計値だったとします。

これはサイコロのように始めから決まっているものではなく、データを集めて始めて判る確率です。

このような確率を統計的確率と呼びます。

サイコロのように始めから決まっている確率を数学的確率と呼びます。


統計的確率は注意が必要です。

ただ単純に割合いを出しても、それは集計値で確率とは言えません。


経済データはバブル前後やプラザ合意前後でも随分違ってる筈です。

これらを一緒くたにしたデータで、何かの確率を出したとしても信用し難いですよね。


統計データを確率として見るには、現状とほぼ同じ背景を持っているデータに絞って分析されたデータであるべきです。

いくら綿密に計算しているようでもデータがダメだといけないよ、という話でした。



参考ですが、この円グラフを出すRのコードです。

x <- c(60,5,12,23)

pie(x,col=rainbow(5),density=50,label=c("○","×","△","☆"),angle=140)



今度はガウス分布(正規分布)のグラフです。

image002.png


実はこれは、正確には正規分布ではなくて、それに極めて近いデータを乱数で発生させてグラフ化しています。

それに対して水色で塗られた部分、本来の正規分布の標準偏差+1の部分を重ねて表示しています。


このグラフを描画したRのプログラムです。

#####################################################

#Rで描く正規分布っぽいグラフ

#####################################################

dat<-rnorm(1000)               #正規分布を前提にしたデータを1000個作成

hist(dat,main="",xlab="",ylab="")   #上で作成したデータをヒストグラムで表示

par(new=T)                      #次に続く線グラフをヒストグラムに重ねて描く宣言

plot(density(dat), xlab="" , ylab="",  #線グラフを赤色で描く

   main="" , col="red",axes=F) 

xv <- seq(0, 1, length=10)            # 0~1の部分を青く塗りつぶす準備1

yv <- dnorm(xv)                       # 0~1の部分を青く塗りつぶす準備2

polygon(c(xv,rev(xv)),           # 0~1の部分を青く塗りつぶす本番

     c(rep(0,10),rev(yv)),  

    ,col="cyan",xlab="" , ylab="")  

#####################################################

#上で作った1000個のデータが正規分と言えるか否かの検定

#####################################################

shapiro.test(dat)              #正規性の検定  

Shapiro-Wilk normality test       #検定結果出力

data:  dat 

W = 0.9971, p-value = 0.06654



Rというソフトウェアは、統計解析に特化したフリーのソフトウェアでデータベースとも連動して動く優秀なソフトウェアです。

WindowsもMacOSもLinuxもUnixも用意されているので、興味がある方は是非試して見て下さい。興味が無い方も参考程度に眺めて下さい。


少しだけコードの説明をすると、dat<-rnorm(1000)で、datと言う変数に1000個のデータを入れています。

rnormというのは乱数を発生する関数です。


現実の分析では、この行で乱数ではなく手元のデータをdatに入れます。変数の名前は好きに付けられます。

あとはプログラムのコメント通りですね。


コードの最後の方のshapiro.test(dat)は、シャピロ-ウィルク検定というものでデータが正規分布してると言えるか確かめています。

本当はグラフを描く前に検定しないと順番的におかしいのですが、コードが見やすくなるので最後に持ってきています。

このshapiro.testの出力の、W = 0.9971は検定量です。

p-value = 0.06654の方は、「有意だ」、「棄却だ」と仮説検定などをよくやる方にはおなじみのp値の事です。

p値が0.05以下の時は、有意水準5%で検定の結果NGでした、と判断します。つまり正規分布していませんよ、となります。

p値については別のコラムで紹介しています。

この検定は、少しシビアみたいですので実際のデータに応用する場合には、外れ値などをクリーニングしておかないとNG判定ばかりになるかも知れません。



プログラムの話にズレてしまいましたので、割合いの話に戻します。


これも円グラフと考え方は同じです。

この赤い線で描かれている山全部の面積が1となります。

集計データの全てで、確率的に考えるなら起こり得る事象の全てにあたります。

正規分布は左右対称の山型のグラフで中心の一番高いところが平均値になります。

この平均値を0、標準偏差を1としたものを標準正規分布と言います。


これも面積を計算すれば、その比率に応じて確率が求められます。

このデータを、槍投げの距離としてイメージしてみて下さい。

平均に近いところほど沢山のデータが集まっていて、離れるほど少なくなる筈です。

中心からX分だけ離れた距離に槍が刺さる確率は、この正規分布のグラフの中心からX分だけ離れたところまでの面積と同じになります。

標準偏差で+1分だけ離れた距離に刺さる確率は、水色の面積と同じになります。


先ず、標準偏差の公式InftyProjectを使って確率密度を求めます。

面積を求めるのであればInftyProjectと積分しないといけません。

これは、Rでも少し難しい計算なので、Maximaという数学ソフトに、

romberg((1/sqrt(2*%pi))*%e^((-1*(x^2))/2),x,0,1);と打ち込んで計算してもらいます。

すると0.34134473402459と返ってきました。

>  integrate(dnorm, 0,1)

0.3413447 with absolute error < 3.8e-15

InftyProject

pnorm(1)-pnorm(0)


これが山全体に対して標準偏差1の割合いになります。


大変な計算ですね。


ですので、普通は正規分布表というものを見ます。

それを見れば、標準偏差1の時は、0.3413と載っています。


大切なのはそれが面積の割合であることの認識です。

データをグラフ化してみて、山が偏っていたりする場合は、当然違う面積計算になってしまいます。

つまり正規分布表を見ても、そのデータの確率にはなりません。

しかし計算が大変難しいので、正規分布に近似していると判断できるのであれば、検定結果を明示した上で正規分布表に頼るしかありません。



確率を見かけるとき、数学的確率より統計的確率の方がはるかに多いと思いますが、その出し方は大体こんな感じになります。


今回は、割り算、割合いと確率を取り上げました。



さて、前章で模擬テストの結果、合格率が80%なら80%と受け取るべきだとしました。

80%が集計値だとしても、本番の試験でも同じ傾向の出題で同じ受験者が受けるとすれば、似たような結果が予想出来ます。

ですが、模擬とは違う傾向の問題が出るかもしれませんし、受験生の成長度合いなど、実際の試験はやってみなければ誰にも分りません。


だからと言って何の指標もないと困りますよね。

模試の結果を妥当である確率としてそこから始めるしかありません。


このような確率を主観確率といいます。

そして主観確率を扱い易いのががベイズ確率です。


「ベイズ確率は造語であってベイズ統計とすべき」、「ベイジアンフィルターというものがあるが、あれはベイス統計ではない」などのように、ベイズという言葉の使い方に警鐘をならす声もありますが、このコラムでは、一緒くたにベイズと呼んでしまいます。


そのような訳で、次章ではベイズを理解するために最低限必要になる確率分布や条件付き確率などを取り上げ、ベイズ確率についても少し触れてみたいと思います。



前章へ 次章へ

メインメニュー