The One with ...

研究用のメモなどを公開しています

人工的に作成したデータを分析すると,統計の理解が捗る.「p値ちっちゃい,やったー」みたいな意味のない分析するより,こっちのほうが統計初学者には勉強になるのではないか,と思う.

次のような例を考えてみよう.

#仮説検定を繰り返してp値の分布がどうなっているかを調べる
#最初に正規分布に従う乱数を作る

rnorm(10, 0, 1)
#これで平均0標準偏差1の正規分布に従う乱数が10個作れる

#次の関数coin1は正規分布(平均0,標準偏差sd)に従う乱数列を二つ作り,
#その平均値をt検定する関数である

#coin1
coin1<-function(n,sd){
  x <- rnorm(n, 0, sd)
  y <- rnorm(n, 0, sd)
  z<-t.test(x,y,var.equal=T)
  z$p.value}

#関数testは関数coin1をk回繰り返す

test<-function(k,n,sd){
  x <- c()   # 空の(要素数ゼロの)リストを作る
  for (i in 1:k) {
    y <- coin1(n,sd) #コイン1000回投げt検定の結果p値のみ返す
    x <- c(x,  y)   }
  x
}

#最後にp値の分布をみる

hist(test(k=1000,n=10000,sd=5), breaks = 100)

 

仮説検定は通常,データに対して一回しか用いない.だから計算されたp値は1個だ.

しかし計算された,たった一つのp値をみても,正しい仮説が何かは分からない.帰無仮説が正しいときp値は一様分布に従う.