今回はRを用いて1サンプルのt検定(母平均の検定)について考えてみます。
1サンプルのt検定とは?
仮説として仮定された母平均に対して、サンプルから推定された母平均との差の統計的有意性を検定します。
もう少し普通の言葉で言うならば、収集したデータから推定した母集団の平均値とある値との差が偶然によるものなのか、それとも偶然とは呼べないほど大きな差があるのかを検証する手続きです。
R言語での関数はt.test()
R言語で1サンプルのt検定を行うには、2サンプルの検定と同じくt.test関数を用います。2サンプルのt検定では、二つのサンプルを引数として設定しますが、1サンプルのt検定では、サンプルに加えて、muという引数に任意の値を設定します。例えば、母平均が0であると仮定した場合のt.test関数の設定は以下のようになります。
res <- t.test(sample, mu = 0)
*** t.test関数の出力の見方
t検定の結果はt値、自由度、p値をチェックしましょう。t値は以下のような数式で得られる値です。
おおまかに言えば、仮定した母平均とサンプル平均の差を散らばりの大きさで割った大きさということになります。大きければ大きいほど、母平均のばらつきからはあり得ないサンプル平均が得られていることを意味します。どの程度あり得ないのかを表しているのがp値です。典型的には、5%を有意水準(つまりあり得ないと判断する境界線)として、これよりもp値が小さければ、得られた差は「統計学的に有意」と言います。
なぜt分布で検定するのか?
サンプルの平均値のサンプリング分布(つまり何回もサンプルの平均を取った時に現れる分布)って「中心極限定理」があるから、正規分布ではないのか?だとしたら母平均の検定も正規分布をつかったほうがいいのではと思います。どうやら母分散が既知の場合には正規分布でよいみたいです。でも、サンプルから計算した普遍分散を母分散の推定値とする場合には、t分布の方がより精度の高い推定になるそうです。「みたいです」とか「〜だそうです」ばかりだとなんともすっきりしません。今回は、これをシミュレーションで確かめてみます。
シミュレーション
サンプルサイズ6の場合
標本分散と普遍分散はサンプルサイズが小さい時ほど差が大きくなるので、n=6というかなり小さめのサンプルサイズを採用してみましょう。シミュレーションでは、母集団として、平均0、分散(標準偏差)1の分布を考えます。ここからランダムに6つの値を選んできて、その平均と普遍分散を求めましょう。次に、この平均値が母平均として仮定される(そしてそれが正解なのですが)0との差を求めます。そして、それをサンプルから求めた標準誤差で割ります。これがサンプルから計算されるt値です。これを繰り返すと、毎回違う値が計算されるわけですが、どんどん繰り返してその分布を作ってみましょう。
res <- rep(NA,5000)#5000回計算した平均値をこのベクトルに保存する for (i in 1:5000){ data <- rnorm(6, 0,1) # 平均0、標準偏差1の正規分布からランダムに6つの値を取り出す res[i] <- mean(data)/sqrt(sd(data)/6) }
これにt分布の確率密度曲線(青線)と標準正規分布の確率密度曲線(赤線)を重ねてみた結果が以下の図です。確かにt分布の確率密度曲線(青線)の方が正規分布の確率密度曲線(赤線)よりもデータのヒストグラムに近い形をしています。
今回のシミュレーションでは、母分散がわかっているので、試しに、サンプルの普遍分散ではなく、母分散をつかった場合も計算してみます。すると、以下のようなグラフになりました。確かに標準正規分布の確率密度曲線(赤線)の方がヒストグラムにより近い形状です。
サンプルサイズ30なら?
同じことをサンプルサイズ30の場合でやってみた結果もお見せします。上が、サンプルの普遍分散を利用した場合、下が母分散の正しい値を利用した場合です。このサンプルサイズだとt分布と正規分布で確率密度曲線の形状にほとんど差がないので、母分散の値が既知でも未知でも同じような分布になりそうです。