人工的に作成したデータを分析すると,統計の理解が捗ります.「p値ちっちゃい,やったー」みたいな意味のない分析するより,こっちのほうが統計初学者には勉強になるのではないか,と思います.
次のような例を考えてみましょう.
仮説検定を繰り返してp値の分布がどうなっているかを調べる
最初に正規分布に従う乱数を作ります
rnorm(10, 0, 1)
たとえばこのコードは平均0標準偏差1の正規分布に従う乱数を10個作ります.
次に,正規分布(平均0,標準偏差sd)に従う乱数列を二つ作り,その平均値をt検定する関数を定義します関数の名前はcoin1
です.
#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 = 25)
仮説検定は通常,データに対して一回しか用いません.だから計算されたp値は1個です.
しかし計算された,たった一つのp値をみても,正しい仮説が何かは分かりません.帰無仮説が正しいときp値は一様分布に従います.