「統計ソフトをブラックボックスにせずに、定義に基づいて、きちんと計算してみよう」のコーナー
m <- round(100*runif(1)) # サンプルサイズを適当に代入 n <- round(100*runif(1)) # 乱数生成関数使ってます x <- round(100*rnorm(m)) # 上記のサンプルサイズに基づく y <- round(100*rnorm(n)) # 標本を適当に生成 v <- ( # v: x, y の分散を合算 (m-1)*var(x) + (n-1)*var(y) )/( m+n-2 ) t <- ( # 公式にしたがって、t値を算出 mean(x)-mean(y) )/( sqrt( v*(1/m + 1/n) ) ) t == t.test(x,y, # R付属の関数(t.test)のt値と等価であることを確認 var.equal=T)$statistic # "TRUE"ならOK
なぜこんなまどろっこしいことをやっているかというと、べつに「手計算でもできるんだよ」と言いたかったわけではなく、t検定が実際のところ何を検定(test)しているのかを明確にするためです。統計手法をきちんと理解する上で、定義式を数理的に理解しておくことは必須です。
自由度にもよりますが、原則的には、t値の「絶対値」が大きくなればなるほど、有意になりやすいことはご存じだと思います。
そこで、t値の算出公式において、分子の絶対値が大きくなればなるほど、t値の絶対値も大きくなることがわかると思います。上記の赤色部分がその「分子」にあたります。"mean(x)-mean(y)" つまり、平均値の差です。
当たり前かもしれませんが、t検定は結局のところ、両グループの平均値が同じか(つまり、差がゼロか)どうかをテストしています。
なので、「両グループは同質か?」とか「2つのサンプルは同じ母集団から抽出されてきたものか?」などということをテストしているわけではありませんのでご注意を(そもそも、これらを統計的に明らかにすることはきわめて困難だと思います)。
※余談ですが、t値の絶対値が大きいのは、大きな分子のときですが、同様に、分母が小さいときも大きなt値が得られます(よね?)。後者が生じる場合は、2つのサンプルがどのような特徴を有しているときでしょうか。こちらももよければ考えてみて下さい。