人工知能

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(データ配列,区間配列)

二変量解析

Excel R Python
相関係数 CORREL(配列1,配列2) np.corrcoef(x, y)
単回帰式の傾きa SLOPE(目的変数,説明変数)
単回帰式の定数項b INTERCEPT(目的変数,説明変数)
決定係数 RSQ(目的変数,説明変数)
相関比
連関係数

確率分布

Excel R Python
二項分布 BINOMDIST(X,n,p,定数)
X:0からnまでの整数で確率Pの事象が起こる回数
n:試行回数
p:ある事象が起こる確率
定数:0または1
(0はP(x)、1はP(0)からP(X)までの累積確率)
ポアソン分布 POISSON(X,m,定数)
X:発生回数
m:平均
定数:0または1
正規分布 NORMDIST(X,n,p,定数)
x:特定の値
m:平均値
s:標準偏差
定数:0または1
標準正規分布の累積確率 NORMSDIST(z)
z:基準値
標準正規分布の基準値 NORMSINV(p)
p:累積確率
t分布における確率
(母平均の検定のp値をとる確率)
TDIST(X,自由度,尾部)
X:検定統計量t
自由度:n-1
定数2
t分布におけるt値 TINV(確率,自由度)
カイ2乗分布における確率 CHIDIST(X,自由度)
X:検定統計量T
自由度:n-1
カイ2乗分布におけるX2値 CHINV(確率,自由度)

一変量解析の演習

基本統計量

【例題】ある会社のセールスマンの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に等しいことを確認します。

出力結果

質的変数×量的変数

【例題】年齢と好きな商品の相関

No. 年齢(歳) 好きな商品
1 29 A
2 32 A
3 35 A
4 36 A
5 38 B
6 40 B
7 41 B
8 43 B
9 48 B
10 20 C
11 22 C
12 24 C
13 29 C
14 35 C
15 38 C

質的変数×質的変数

【例題】中学生の学年とゲーム機購入予定の相関

No. 学年 好きな商品
1 1年 ある
2 1年 ある
3 1年 ない
4 2年 ある
5 2年 ある
6 2年 ある
7 2年 ない
8 3年 ある
9 3年 ない
10 3年 ない

確率分布

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

二項分布

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

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

ポアソン分布

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

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

正規分布

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