12/12 MIKUセミナー

MikuHatsune2011-12-14

数学いらずの医科統計学PART6 の話。
対応のない/あるt検定について。
 
今回は平均値の比較がしたいということで、t検定を考えている。
t検定は教科書的には、正規分布を仮定しているが、正規分布には平均と分散の2パラメータが必要である。
 
帰無仮説H_0:若いマウスと年寄りマウスの膀胱括約筋弛緩は、同一の分布から得られる。
対立仮説H_1:若いマウスと年寄りマウスの膀胱括約筋弛緩は、平均が異なる分布から得られる。
 
サンプルの集合V=\{v_1,\hspace{3}v_2,\hspace{3} \cdots,\hspace{3} v_n\}
正規分布\Phi(\mu,\hspace{3}\delta^2)
として、確率P_r=(V\hspace{3}|\hspace{3}\mu,\hspace{3}\delta^2)最尤推定値を、H_0(パラメータが平均と分散)とH_1(パラメータは平均x2と分散x1 or 2)の場合で…
とやるのは非常に面倒なので、t検定がうまく作られているのだろう…
 
平均に差があるかをリサンプリング(ブートストラップ)法でやる。
 
帰無仮説H_0:若いマウスと年寄りマウスの膀胱括約筋弛緩は、同一の分布から得られる。
対立仮説H_1:若いマウスと年寄りマウスの膀胱括約筋弛緩は、平均が異なる分布から得られる。
 
を流用しよう。今、
若いマウスのサンプルS_{young}=\{s_{y1},\hspace{3}s_{y2},\hspace{3} \cdots,\hspace{3} s_{y8}\}
年寄りマウスのサンプルS_{old}=\{s_{o1},\hspace{3}s_{o2},\hspace{3} \cdots,\hspace{3} s_{o9}\}
がある。
H_0は、若いマウスと年寄りマウスを合わせたS_{all}=\{s_{a1},\hspace{3}s_{a2},\hspace{3} \cdots,\hspace{3} s_{a17}\}からリサンプリングしてS_{i,\hspace{3}young}S_{i,\hspace{3}old}を作る。そしてこの2群それぞれの平均\mu_{i,\hspace{3}young}\mu_{i,\hspace{3}old}の差\Delta_iが、オリジナルな2群の平均の差\Delta=\mu_{young}-\mu_{old}より大きくなることがどれだけあるか数えればいい。

old   <- c(20.8, 2.8, 50, 33.3, 29.4, 38.9, 29.4, 52.6, 14.3)
young <- c(45.5, 55, 60.7, 61.5, 61.1, 65.5, 42.9, 37.5)

all_sample <- c(old, young) # 合わせた分布
diff_mean <- mean(young) - mean(old)
niter <- 100000 # リサンプリングする回数
temp_old   <- matrix(sample(all_sample, size=niter*length(old)  , replace=TRUE), nr=niter)
temp_young <- matrix(sample(all_sample, size=niter*length(young), replace=TRUE), nr=niter)
result     <- rowMeans(temp_young) - rowMeans(temp_old)

sum(abs(result) >= diff_mean)/niter # p値

par(mfcol=c(1,2))
hist(rowMeans(temp_young), nclass=100, col=2, main="young mice")
abline(v=mean(rowMeans(temp_young)), lwd=4)

hist(rowMeans(temp_old), nclass=100, col=5, main="old mice")
abline(v=mean(rowMeans(temp_old)), lwd=4)
par(mfcol=c(1,1))

百万回試行して0.005くらいになる。