概ね正規分布に従うであろう、二つのグループの
平均の差の有意検定には、あらかじめ平均の差が正規分布すると
分かっているため、標本数に応じて、t検定、z検定が利用出来ます。
自然界の多くのケースで、データは正規分布すると見込めるので、
この2つの検定はパワフルなのですが、
そうは云っても標本が本来属する母集団が正規分布すると、
どうもはっきりしないケースはあります。
例えば、二つのグループの中央値の差や、平均の比率
明らかに正規分布していない2つのグループの平均の差など、
これら統計量の分布は分かっていません。
その際、コンピュータの力を利用して、統計分布を作成、その上で検定を行う手法が
過去に提案、現在では実用上の立場を確立した手法があります。
それがBootStrap法
BootStrap法の解説
とある標本データの母集団の平均値を95%信頼区間で推定するケースで、
BootStrap法を適用した場合の手順を記すと下記のようになります
1. 母集団から得たサンプルデータから、重複を許して復元抽出する
2. 復元抽出したデータに対して、平均値を算出し、保持する
3. 1から2を反復(B)することで、平均値の分布を得る
反復数は一般には、1000〜2000。ひとまず3000を与える。
4. 3で得た統計量の統計分布の信頼区間を算出
信頼区間算出には、一番簡単な方法ではパーセンタイル法が利用されます。
上の解説の統計Rコード
標本データ 100,21,212, 123, 78, 121, 45, 12,145の母集団の平均値を信頼区間95% で推定したい。
>data <- c(100,21,212, 123, 78, 121, 45, 12,145)
>for(i in 1:3000){
smpled <- sample(data, length(data), replace=T)
boot[i] <- mean(smpled)
}
>hist(boot)
>quantile(boot,p=c(0.025,0.975))
2.5% 97.5%
57.10556 134.88889
標本データが属する母集団のデータ平均値は、信頼区間95%で、57.10556〜134.88889の間にあると
判断されます。
以下、少し応用。。。
平均値の差の有意検定
二つのグループの平均値の差の分布は分かっていないので、
平均値の差の検定には、BootStrap法が利用されます。
グループxの標本データ
100,21,212, 123, 78, 121, 45, 12,145,200,350,212,100, 200
グループyの標本データ
205, 300, 424, 246, 89, 200, 499, 120, 200,400,700,242,1000,1400
帰無仮説を立てる
グループxの母集団の平均値 - グループyの母集団の平均値 = 0
ブートストラップヒストグラムの生成
ブートストラップ法(B = 5000)を行い、平均値の差のヒストグラムを生成。
信頼区間判定
ブートストラップヒストグラムの95%信頼区間に平均値の差=0があるか?を検証
平均の差=0が信頼区間にあれば、帰無仮説は棄却されず、平均の差は有意とは言えない
平均の差=0が信頼区間になければ、帰無仮説は棄却され、平均の差は有意と言える
平均値の差の有意検定(Rコード)
x <- c(100,21,212, 123, 78, 121, 45, 12,145,200,350,212,100, 200)
y <- c(205, 300, 424, 246, 89, 200, 499, 120, 200,400,700,242,1000,1400)
mean.boot <- numeric(0)
# ブートストラップ反復実施
for(i in 1:5000){
x1 <- sample(x,length(x),replace=T)
y1 <- sample(y,length(y),replace=T)
mean.boot[i] <- mean(x1) - mean(y1) # 統計量:
}
#2.5%点、97.5%点の計算→95%信頼区間の推定(パーセンタイル法を利用)
quantile(mean.boot, p=c(0.025,0.975))
2.5% 97.5%
-499.2875 -121.4946
95%信頼区間に0がないため、帰無仮説は棄却され、グループxとグループyの平均値の差は有意と言える。
いちおー、
#ヒストグラム表示
hist(mean.boot)