【書評: 統計学が分かる】統計学初心者が統計学のおもしろさに触れられます! 


さっそく統計学に挫折したのでorz、『統計学がわかる』を読みました。この本はハンバーガーショプの店長と店員が、統計学を用いてライバル店との比較などを行うストーリーで構成されています。平均や分散、信頼区間、検定などの基本的な考え方をシンプルに理解できるので、統計学の初学者の方にすごくお勧めな本です!

今回はこの本の中で、特に勉強になった部分を中心にメモを書いておきます。

(03/22 09:45) 確認テストを中心に書き直し


🎳 [無料Web教材] ハンバーガー統計学にようこそ!

http://kogolab.chillout.jp/elearn/hamburger/

この本の内容は『ハンバーガー統計学にようこそ!』に無料で公開されています。もしご興味があればぜひご覧になってみてください。

🐡 第2章: 母集団・標本・区間推定・信頼区間・t分布

母集団が大きい場合にサンプリングして、母集団を推定する。

キーワード

母平均 => 標本の平均で推定できる
母分散 => 標本の不偏分散で推定できる
不偏分散 => ((データ - 平均値)**2)の総和 / (サンプルサイズ - 1)
95%信頼区間 => 母平均が95%の確率で含まれているような範囲
信頼区間 => 標本平均 +- t * 標準誤差
標本平均の標準偏差 => sqrt(不偏分散 / サンプルサイズ)
t分布 => 正規表現に似た「つりがね型」の分布。サンプルサイズが少ないと平、多いと正規分布に近づく
自由度 => サンプルサイズから1を引いたもの

確認テスト

# 1) 統計用語
a. 母集団
b. 標本集団
c. 無作為抽出
d. 正規分布

# 2) 信頼区間の計算
ave <- 65< span>
var <- 60< span>
標準誤差 <- sqrt(var 500)< span>

# 95%信頼区間
ave - 1.96*標準誤差 #=> 64.32104
ave + 1.96*標準誤差 #=> 65.67896

# 99%信頼区間
ave - 2.576*標準誤差 #=> 64.10765
ave + 2.576*標準誤差 #=> 65.89235

# 3) 信頼区間の意味
# 95%の確率で64.32104点-65.67896点におさまる
# 99%の確率で64.10765点-65.89235点におさまる

🏀 第3章: 帰無仮説・対立仮説・観測度数・期待度数・カイ二乗分布

仮説を建てその有効性を検証するための方法。

キーワード

帰無仮説 => 『○◯と◯◯との間には差がない』という仮説
対立仮説 => 帰無仮説が棄却されたときに採択される『差はないとは言えない、つまり差はある』
観測度数 => 『実際の売上』のような実際に観測された度数
期待度数 => 『同じ割合で売れるとした場合の売上』のように予測される度数
カイ(χ)2乗値 => 期待度数と観測度数のズレを表す値
カイ(χ)2乗値の自由度 => 変数のうち自由に選べるものの数

仮説検定の方法

1) 『○◯と◯◯との間には差がない』という形の帰無仮説をたてる
2) 期待度数と観測度数のズレを見るためカイ(χ)2乗値を計算する
3) カイ(χ)2乗値の出現確率を調べる
4) 有意水準を基準にして帰無仮説を棄却するか、あるいは採択するかを決める

🍮 カイ(χ)2乗分布の性質

期待度数と観測度数が完全に一致すれば、カイ(χ)2乗値はゼロになる
逆に、不一致(ズレ)が大きくなれば、カイ(χ)2乗値は大きな値となる

確認テスト

# 1) 
#=> 帰無仮説 担任の違いが子供の好き嫌いに影響を与えない

# 2)
#=> 対立仮説 担任の違いが子供の好き嫌いに影響を与える

# 3) 期待度数
kokugo_sakura <- 32 42 68 * #> 19.76471
kokugo_momo <- 36 42 68 * #> 22.23529
math_sakura <- 26 32 68 * #> 12.23529
math_momo <- 26 36 68 * #> 13.76471

# 4) カイ二乗値
(24-kokugo_sakura)^2/kokugo_sakura + (18-kokugo_momo)^2/kokugo_momo + (8 - math_sakura)^2/math_sakura + (18 - math_momo)^2/math_momo
#=> 4.483516

# 5)
# 自由度(2-1)の有意水準1%のカイ2乗値 => 6.63
#=> 4.48 < 6.63なので帰無仮説は採択

# 6)
#=> 以上の結果より、担任の違いは子供の好き嫌いに有意な影響を与えない

🗽 第4章: t検定(対応なし)

t検定とは、帰無仮説が正しいと仮定した場合に、統計量がt分布に従うことを利用して統計的な検定をする方法。ただし、t検定は2つの標本間の平均の差を調べる

キーワード

有意水準 => 偶然などではなくその要因が結果に違いを生み出したということ(1% or 5%をよく使う)
t分布における自由度 => サンプルサイズA + サンプルサイズB - 2
棄却域 => 統計的仮説を検定する場合に判断の基準となる領域

🐯 数式

平均偏差の平方和 => (データ - 平均値)**2の総和
推定母分散 => (標本Aの平均偏差の平方和+標本Bの平均偏差の平方和)/(サンプルサイズA +サンプルサイズB - 2)
t値 => 標本平均の差/sqrt(推定母分散*(1/サンプルサイズA + 1/サンプルサイズB))

t検定の手続き

1) 帰無仮説を建てる => 『○◯と◯◯との間には差がない』
2) 帰無仮説の否定である、対立仮説を建てる => 『○◯と◯◯との間には差がある』
3) 有意水準を決める
4) 得られた標本を使って、指標tを計算する
5) 標本の数から自由度を計算する
6) t分布表の該当する自由度のところを見て、求めたtが棄却域にはいっているかを判定し、帰無仮説を棄却するか、採択するかを決める
7) 帰無仮説を採択するか、対立仮説を採択するかを決める

確認テスト

# 1) 帰無仮説
#=> 漫画を使う方法と使わない従来の方法に差はない

# 2) 対立仮説
#=> 漫画を使う方法と使わない従来の方法には差はがある

# 3) t値
sakura <- c(7,8,10,5,8,7,9,5,6,9,10,6,7,8,7,9,10,6)< span>
momo <- c(9,9,6,10,9,8,10,7,9,10,6,8,9,9,10,7,8,8,10,9)< span>
t.test(sakura, momo)
# Welch Two Sample t-test
#
# data: sakura and momo
# t = -1.9464, df = 31.95, p-value = 0.06045
# alternative hypothesis: true difference in means is not equal to 0
# 95 percent confidence interval:
# -1.92150701 0.04372923
# sample estimates:
# mean of x mean of y
# 7.611111 8.550000
#=> t値は-1.94

# 4) 有意水準1%
#=> 1%の有意水準は2.704。t値の絶対値1.94よりも大きいので優位な差は存在しない

# 5) 結果の説明
#=> 漫画を使う方法と使わない従来の方法には優位な差がある

😼 第5章: t検定(対応あり)

t検定における「対応」とは?

2つのハンバーガーを食べ比べるなどのように直接比較ができるような標本の場合、「対応がある」とします。いいかえると、2つのハンバーガーを食べた母集団「1つ」を元に検定します。

数式

t => 差の平均/sqrt(不偏分散/サンプルサイズ)
or
t => 差の平均/sqrt(標本分散/(サンプルサイズ - 1))

確認テスト

# 1) 
# 帰無仮説 => 漫画を使った新手法と従来の手法の間に差はない

# 2)
# 対立仮説 => 漫画を使った新手法と従来の手法の間に差はある

# 3)
before <- c(9,8,10,7,5,9,10,10,8,10,10,6,8,9,10,9,10,9)< span>
after <- c(9,9,10,7,6,10,10,9,8,10,7,8,10,10,10,10,10,10)< span>
t.test(before,after, paired=TRUE)
# Paired t-test
#
# data: before and after
# t = -1.2432, df = 17, p-value = 0.2307
# alternative hypothesis: true difference in means is not equal to 0
# 95 percent confidence interval:
# -0.8990450 0.2323783
# sample estimates:
# mean of the differences
# -0.3333333
# => t値は-1.2432

# 4) 有意水準1%
# => 有意水準1%は2.898。t値の絶対値よりも大きいので優位な差は存在しない

# 5)
# 漫画を使った従来の手法と今回の手法の間には優位な差がない

🚜 第6章: 分散分析(1要因)

分散分析(ANOVA)は、観測データにおける変動を誤差変動と各要因およびそれらの交互作用による変動に分解することによって、要因および交互作用の効果を判定する、統計的仮説検定の一手法。1要因の分散分析を一元配置分散分析ともいうそうです。

キーワード

分散分析とは、全体の平均が各群(各標本集団)がどれほどずれているかを分析すること

分散分析(1要因)の手続き

1) 帰無仮説を建てる => 『3つ以上の標本集団の間には差がない』
2) 帰無仮説の否定である、対立仮説を建てる => 『3つ以上の標本集団の間には差がある』
3) 有意水準を決める
4) 得られた標本を使って、全体の平方和、群間の平方和、郡内の平方和を計算する
5) 分散分析表を作り、自由度、平均平方を計算する
6) 指標F = 群間の平均平方/ 郡内の平均平方 を計算する
7) F分布表の該当する自由度からFが棄却域に入っているかを判定し、帰無仮説を棄却するかを決める

確認テスト

touseigun <- c(6,5,7,6,8,4,6,5,8,4,5,6,5,4,5)< span>
kyumanga <- c(5,6,9,7,7,6,8,5,6,9,5,4,7,6)< span>
shinmanga <- c(6,8,9,6,8,6,9,7,6,5,9,6,10,8,9,6)< span>

# 1) 3つの群の分散と分析
## 統制群:
mean(touseigun) #=> 平均: 5.6
sd(touseigun) #=> 標準偏差: 1.298351
## 旧マンガ群:
mean(kyumanga) #=> 平均: 6.428571
sd(kyumanga) #=> 標準偏差: 1.504572
## 新マンガ群:
mean(shinmanga) #=> 平均: 7.375
sd(shinmanga) #=> 標準偏差: 1.543805

# 2) 帰無仮説
#=> 3つの群の間に優位な差はない

# 3) 対立仮説
#=> 3つの群のの間には優位な差が存在する

# 4) 分散分析表
# 一元配置分散分析
score = c(touseigun,kyumanga,shinmanga)
group = c(rep(1,14),rep(2,16),rep(3,15))

# oneway.test関数を使う場合
oneway.test(score ~ group, var=T)
# One-way analysis of means
#
# data: score and group
# F = 5.9065, num df = 2, denom df = 42, p-value = 0.00549

# 分散分析表
anova(lm(score ~ group))
# Analysis of Variance Table
#
# Response: score
# Df Sum Sq Mean Sq F value Pr(>F)
# group 1 24.254 24.2544 11.72 0.001369 **
# Residuals 43 88.990 2.0695
# ---
# Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

# aov関数を使う場合
result <- aov(score ~ group)< span>
summary(result)
# Df Sum Sq Mean Sq F value Pr(>F)
# group 1 24.25 24.25 11.72 0.00137 **
# Residuals 43 88.99 2.07
# ---
# Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

# 5) 有意水準1%
#=> 群間の自由度2、郡内の自由度が42の自由度の場合、有意水準1%のF値は5.18
#=> F値は5.9065なので棄却域に入り、帰無仮説は棄却される

# 6) 結論
#=> 3つの群の間の少なくとも1つに優位な差が存在する

おそらくグループか自由度の指定方法をちょっとミスっていると思うので、正しくはなさそう(帰無仮説の棄却は正しい)。後日知識がついたら再度トライするつもりです。

参考リンク

Rで1要因の分散分析

ハンバーガー屋さんの例をRで解いています。3つのグループがある場合の比較方法が書かれていて助かりました。

🐮 第7章: 分散分析(2要因)

キーワード

残差 => 誤差の推定量。1要因の場合の郡内のズレと同義。
相互作用 => 2つの要因によって起こるズレを相互作用と呼ぶ

分散分析(2要因)の手続き

1) 帰無仮説を建てる => 『要因1, 要因2,交互作用による差はない』
2) 帰無仮説の否定である、対立仮説を建てる => 『要因1 or 要因2 or 交互作用による差がある』
3) 有意水準を決める
4) 得られた標本から全体の平方和、要因1の平方和、要因2の平方和、残差の平方和、全体の平方和を計算
5) 分散分析表を作り、自由度、平均平方を計算する
6) 指標Fを計算する
7) F分布表の該当する自由度からFが棄却域に入っているかを判定し、帰無仮説を棄却するかを決める

確認テスト

suki_touseigun  <- c(7,8,6,8,10,7,8,8,9,7)< span>
kirai_touseigun <- c(4,6,5,4,3,7,5,6,4,5)< span>
suki_manga <- c(8,9,10,10,8,8,9,7,10,8)< span>
kirai_manga <- c(8,7,8,6,9,7,8,8,10,8)< span>

# 1) 帰無仮説
# a) 漫画を使った勉強法と統制群の間に平均点の差はない
# b) 算数の好き嫌いに平均点の差はない
# c) 相互作用にも平均点の差はない
# a, b, cをすべて満たす

# 2) 対立仮説
#=> 上のa,b,cのいづれかに平均点の差がある

# 3) 平均・標準偏差
ave_suki_touseigun <- mean(suki_touseigun) #> 7.8
sd_suki_touseigun <- sd(suki_touseigun) #> 1.13529
ave_kirai_touseigun <- mean(kirai_touseigun) #> 4.9
sd_kirai_touseigun <- sd(kirai_touseigun) #> 1.19721
ave_suki_manga <- mean(suki_manga) #> 8.7
sd_suki_manga <- sd(suki_manga) #> 1.05934
ave_kirai_manga <- mean(kirai_manga) #> 7.9
sd_kirai_manga <- sd(kirai_manga) #> 1.10050

# 4) グラフ
#=> 挫折

# 5) 分散分析表
# マンガ・統制群の平方和
touseigun <- c(suki_touseigun, kirai_touseigun)< span>
manga <- c(suki_manga, kirai_manga)< span>
ave_tou <- mean(touseigun) #> 6.35
ave_man <- mean(manga) #> 8.3
zen_heikin <- mean(c(touseigun, manga)) #> 7.325
mantou_heihowa <- (ave_man-zen_heikin)^2*length(manga) + (ave_tou -zen_heikin)^2*length(touseigun) < span>
#=> 38.025

# 好き嫌いの平方和
suki <- c(suki_touseigun, suki_manga) < span>
kirai <- c(kirai_touseigun, kirai_manga) < span>
ave_suki <- mean(suki) #> 8.25
ave_kirai <- mean(kirai) #> 6.4
suki_heihouwa <- (ave_suki - zen_heikin)^2*length(suki) + (ave_kirai zen_heikin)^2*length(kirai) < span>
#=> 34.225

# 相互作用の平方和
gunkan_heikin_zure <- (ave_suki_touseigun - zen_heikin)^2*length(suki_touseigun) + (ave_kirai_touseigun zen_heikin)^2*length(kirai_touseigun) (ave_suki_manga zen_heikin)^2*length(suki_manga) (ave_kirai_manga zen_heikin)^2*length(kirai_manga)< span>
sougo_heihouwa <- gunkan_heikin_zure - mantou_heihowa suki_heihouwa < span>
#=> 11.0249

# 残差の平方和
zansa_heihouwa <- sum((suki_touseigun - ave_suki_touseigun)^2) + sum((kirai_touseigun ave_kirai_touseigun)^2) sum((suki_manga ave_suki_manga)^2) sum((kirai_manga ave_kirai_manga)^2)< span>
#=> 45.5

# 全体の平方和
zentai_heihouwa <- mantou_heihowa + suki_heihouwa sougo_heihouwa zansa_heihouwa< span>
#=> 128.775

# マンガ・統制群の自由度: 条件数(郡の数) - 1
mantou_ziyudo <- 1< span>
# 好き嫌いの自由度: 条件数(郡の数) - 1
suki_ziyudo <- 1< span>
# 相互作用の自由度
sougo_ziyudo <- mantou_ziyudo * suki_ziyudo #> 1
# 全体の自由度
zentai_ziyudo <- length(c(suki_touseigun, kirai_touseigun, suki_manga, kirai_manga)) - 1< span>
#=> 39
# 残差の自由度
zansa_ziyundo <- zentai_ziyudo - mantou_ziyudo suki_ziyudo sougo_ziyudo< span>
#=> 36

# マンガ・統制群の平均平方
mantou_hehe <- mantou_heihowa mantou_ziyudo < span>
#=> 38.025
# 好き嫌いの平均平方
suki_hehe <- suki_heihouwa suki_ziyudo < span>
#=> 34.225
# 相互作用の平均平方
sougo_hehe <- sougo_heihouwa sougo_ziyudo< span>
#=> 11.025
# 全体の平均平方
zansa_hehe <- zansa_heihouwa zansa_ziyundo< span>
#=> 1.263889

# マンガ・統制群のF値
mantou_f <- mantou_hehe zansa_hehe< span>
#=> 30.08571
# 好き嫌いのF値
suki_f <- suki_hehe zansa_hehe< span>
#=> 27.07912
sougo_f <- sougo_hehe zansa_hehe< span>
#=> 8.723077

🐠 あとがき

初心者が最初に統計学の世界を触れるときにぜひ読んでほしい本。計算がわかりやすいので、理解しやすいです! 個人的には統計を好きになれる本だと思う!

🎉 おねがい

いろいろ初心者すぎてわけがわからない状態ですが、もしこういうふうにしたらいいとか、ツッコミ大歓迎です。もしよかったらぜひコメントをお願いします!

👽 変更来歴

(02/27 19:00) [無料Web教材] ハンバーガー統計学にようこそ! を追加

(03/22 09:45) 確認テストを中心に書き直し

🖥 VULTRおすすめ

VULTR」はVPSサーバのサービスです。日本にリージョンがあり、最安は512MBで2.5ドル/月($0.004/時間)で借りることができます。4GBメモリでも月20ドルです。 最近はVULTRのヘビーユーザーになので、「ここ」から会員登録してもらえるとサービス開発が捗ります!

📚 おすすめの書籍