人工知能

pythonによる統計学演算実習

準備

pythonでは、あらかじめnumpy, scipyモジュール等をインポートします。

pythonのコマンドラインで実行していくこともできますが、jupyter notebookを利用するとグラフ表示ができ、プログラム修正も簡単に行うことができます。

jupyter notebookはTCP9999番ポートを利用しますので、ネットワーク環境に応じて該当ポートを開放してください。

各言語毎の統計量に関する関数

一変量解析

Excel R Python
合計 SUM(値1,値2,…) sum(x) sum(x)
算術平均 AVERAGE(値1,値2,…) mean(x) np.mean(x)
幾何平均 GEOMEAN(値1,値2,…) prod(x)^(1/length(x)) stats.gmean(x)
調和平均 HARMEAN(値1,値2,…) 1/sum(1/x)*length(x) stats.hmean(x)
中央値 MEDIAN(値1,値2,…) median(x) np.median(x)
最頻値 MODE(値1,値2,…)  - stats.mode(x)
偏差平方和 DEVSQ(値1,値2,…) sum((x-mean(x))^2)
標本分散
(Nで割る)
VARP(値1,値2,…) var(x)*(length(x)-1)/length(x) np.var(x)
不偏分散
(N-1で割る)
VAR(値1,値2,…) var(x) np.var(x, ddof=1)
標準偏差
(Nで割る)
STDEVP(値1,値2,…)  - np.std(x)
標準偏差
(N-1で割る)
STDEV(値1,値2,…) sd(x) np.std(x, ddof=1)
最大値 MAX(値1,値2,…) max(x) max(x)
最小値 MIN(値1,値2,…) min(x) min(x)
レンジ MAX-MIN range(x)
パーセンタイル PARCENTILE(配列,戻り値)
四分位点 QUARTILE(配列,戻り値) quantile(x) np.percentile(x,value)
四分位偏差 IQR(x)
5数要約 fivenum(x)
要約統計量 summary(x)
尖度 KURT(値1,値2,…) stats.kurtosis(x)
歪度 SKEW(値1,値2,…) stats.skew(x)
度数 FREQUENCY(データ配列,区間配列)

一変量解析の演習

基本統計量

【例題】ある会社のセールスマンの1ヶ月間の商品販売台数

名前 販売台数 偏差 偏差の平方
A 5 0 0
B 3 -2 4
C 4 -1 1
D 7 2 4
E 6 1 1
合計 25 0 10
平均 5
分散 2.5
標準偏差 1.6
■標準関数、標準モジュールでの計算

各データを変数xに代入し、各統計量を表示してみます。

出力結果

■自作関数での計算

平均値、分散、標準偏差などの統計値はnumpyモジュールの関数で簡単に出力することができますが、計算過程の理解を深めるために、関数を自作して実行し、上記と同じ結果になることを確認します。

出力結果

今後のために各種統計量を出力する関数を作成しておきます。

基準値

【例題】あるクラスの国語と数学の点数

No. 国語 数学
1 90 93
2 57 90
3 56 80
4 54 63
5 53 55
6 52 45
7 50 40
8 45 27
9 40 20
10 33 17
平均値 53.0 53.0
標準偏差 15.0 28.1

基準化した値=基準値

出力結果

基準値の平均は0、標準偏差は1になります。

出力結果
※pythonのfloat形式の計算の過程上、平均値は完全には0になっていません。

偏差値に変換してみます。(見やすくするために小数点以下を切り捨てます。)

出力結果


二変量解析の演習

■標準関数、標準モジュールでの計算

量的変数×量的変数

【例題】身長と体重の相関

No. 身長x 体重y xの
偏差
yの
偏差
xの
偏差2乗
yの
偏差2乗
偏差の積
A 146 45 -4 -5 16 25 20
B 145 46 -5 -4 25 16 20
C 147 47 -3 -3 9 9 9
D 149 49 -1 -1 1 1 1
E 151 48 1 -2 1 4 -2
F 149 51 -1 1 1 1 -1
G 151 52 1 2 1 4 2
H 154 53 4 3 16 9 12
I 153 54 3 4 9 16 12
J 155 55 5 5 25 25 25
平均値 150 50
合計 104 110 98

相関係数の計算

基本統計量を確認してみます。

出力結果

相関係数を計算します。

出力結果

単回帰分析

単回帰式の傾きaと切片bを求め、式を導出します。

出力結果

決定係数

回帰式による予測値と実測値との差を計算します。

No. 身長x 体重y
実測値
体重y
予測値
残差 残差の
平方
A 146 45 46.2 1.2 1.44
B 145 46 45.3 -0.7 0.49
C 147 47 47.2 0.2 0.04
D 149 49 49.1 0.1 0.01
E 151 48 50.9 2.9 8.41
F 149 51 49.1 -1.9 3.61
G 151 52 50.9 -1.1 1.21
H 154 53 53.8 0.8 0.64
I 153 54 52.8 -1.2 1.44
J 155 55 54.7 -0.3 0.09
合計 0 17.38

出力結果

決定係数r2の平方根は相関係数rに等しいことを確認します。

出力結果

 

確率分布

matplotlibをグラフ描画に利用します。

二項分布

成功確率pの試行をn回行った場合の二項分布から生成される乱数を生成します。

試行回数nを増やせば増やすほど、正規分布の形に近づいていくことがわかります。
成功確率pの値を変えると、グラフの頂点部分が移動することがわかります。

ポアソン分布

単位時間当たり平均λ回発生する事象について、発生回数の乱数を生成します。

たとえば1時間当たり10回クリックされるWEB広告において、それぞれクリックされる回数毎の確率がわかります。

正規分布

標準正規分布(平均0、標準偏差1)の乱数を生成します。