統計勉強しなおし

『多変量解析の理論と実践』より、t検定をちゃんと数式からやり直そう、と思い勉強。
ついでにpythonガリガリ計算してみました。
もっとよい方法(関数)があるのだろうけど取り合えず見つけた関数をトライ&エラー。つかれた・・
まず標本相関係数rを計算。rの計算式を置いときます。Texで記載チャレンジ!

\displaystyle{

r = \frac{S _ {xy}}{\sqrt{S _ {xx}}\sqrt{S _ {yy}}} = \frac{\sum_{i=1}^n (x _ i- \overline{x})(y _ i- \overline{y})}{\sqrt{\sum_{i=1}^n (x _ i- \overline{x})^2}\sqrt{\sum_{i=1}^n (y _ i- \overline{y})^2}}
\\
\overline{x}:=x(広告費)の平均
\\
\overline{y}:=y(売り上げ)の平均
}

import math 
import numpy as np

#広告費
adv = [8.5,6.6,7.0,6.3,6.0,5.5,13.0,12.3,9.3,5.9,8.3,6.1]
#売り上げ
uri = [450,350,300,320,310,330,550,560,450,330,360,320]
#データ数
Dn = len(adv)

#平均値
ave_adv = np.mean(adv)
ave_uri = np.mean(uri)

#偏差積和
Hensa_adv = [d- ave_adv for d in adv]
Hensa_uri = [d- ave_uri for d in uri]
Sxy = sum([x * y for (x,y) in zip(Hensa_adv, Hensa_uri)])
Sxx = sum(np.power(Hensa_adv,2))
Syy = sum(np.power(Hensa_uri,2))

#標本相関係数
r = Sxy / (math.sqrt(Sxx)*math.sqrt(Syy))
print (r)

# 散布図かくよ
import matplotlib.pyplot as plt
plt.scatter(adv, uri)

r = 0.9543790784669018

f:id:jalan_jalan:20191016001909p:plain
散布図出力

相関係数0.95、相関バリバリですね。
さらにここからt検定の式にあてはめます。

\displaystyle{
t =\frac{r}{s _ r} = r\sqrt{\frac{n-2}{1-r^2}}
\\
(s _ {r} =\sqrt{\frac{1-r^2}{n-2}} )
}

#t値を計算
t = r*(np.sqrt((Dn-2)/(1-r**2)))
print(t)

t = 10.107284282176632
を得ました(教科書ではrの小数点を3位までしか使っていなかったので、数値が少し違います)。

t分布表の(自由度Φ, 優位水準α)=(10, 0.05)を調べると、t = 2.228
出力結果と比べて、10.107 > 2.228 なので、「広告費と売上額に相関は無いよ」という帰無仮説を棄却して
「広告費と売上額に相関があります、もっと広告すれば売り上げ増えるっぽいです」という結論になりました。めでたし。

・・・授業を受けていた時から思っていたのですが、この帰無仮説を棄却して~対立仮説を採択して~というのが分かりづらいんですよね。現役の頃はさっぱりわからず、試験の結果もギリギリだった気がします。
「理論は知ってる」のですが、再勉強するならこの辺も腑に落ちるようにしたいですね。あと数式の幾何学的な意味とかもわかれば面白い。
相関係数がプロットの「楕円み」を表すのはさっき知りました!(今更)

ではでは