対応あるサンプルのt検定
2つの集団の平均を比較したいときには、各々のサンプルの平均値に差があるといえるかどうかについての検定を行う。
スマートフォン利用時間の変化に関する調査データ(架空データ)を用いる。
ある大学で学生の一日あたりのスマートフォンの利用時間を調査した。学生を無作為で50人抽出し、一週間の平均利用時間を記録する。
調査は同じ学生を対象にある人気ゲームアプリリリース前と後の二回実施し、その結果をまとめた(架空調査)。
このデータから人気ゲームアプリリリースの前後でスマホ利用時間が増えたと言えるか。
行ごとのデータがペアとして扱える場合には「対応あるサンプル」として平均値の差の検定を行う。
t検定と効果量
id | 前 | 後 | 差 |
---|---|---|---|
1 | 202 | 224 | -22 |
2 | 184 | 187 | -3 |
3 | 223 | 245 | -22 |
… |
対応あるサンプルにおいてはペアとなっている値の差を(検定)変数として、その平均が0でなければ「各サンプルの平均値に差がある」ということになる。
差分データを一つの変数として、その平均値と基準値0との1サンプルのt検定を行う。
data <- read.csv("http://kyoto-edu.sakura.ne.jp/weblesson/statistics/data/smartphone01-C.csv", fileEncoding = "utf-8") summary(data) x1 <- data$Before x2 <- data$After diff <- x1 - x2 mu <- 0 #基準値 N <- length(diff) #サンプルサイズ df <- N - 1 #自由度 #標準誤差 SE <- sqrt(var(diff)/N) #検定統計量t t.value <- (mean(diff) - mu) / SE #p(!= 基準値) 両側検定 (1 - pt(abs(t.value),df))*2 #p(> 基準値) 片側検定 1 - pt(t.value,df) #p(< 基準値) 片側検定 pt(t.value,df) #効果量d (mean(diff) - mu) / sd(diff) #効果量r sqrt(t.value^2/(t.value^2 + df))
R標準関数を用いた対応あるサンプルのt検定
Rではt検定にはt.test()関数を用いる。
- t.test(x, y, alternative="greater"/"less", paired=T/F, var.equal=T/F)
-
- x=検定変数(ベクトルデータ)
- y=比較対象のベクトルデータ
- alternative="greater"/"less" 片側検定の方向を指定する。
- paired=TRUE/FALSE データ間に対応があるかどうか。
- var.equal=TRUE/FALSE 等分散を仮定するか否か(Fもしくは省略時はWelch検定、TならStudent検定を用いる)。
data <- read.csv("http://kyoto-edu.sakura.ne.jp/weblesson/statistics/data/smartphone01-C.csv", fileEncoding = "utf-8") summary(data) x1 <- data$Before x2 <- data$After #対応あるサンプルのt検定(≠) t.test(x1,x2,paired=TRUE) #対応あるサンプルのt検定(>) t.test(x1,x2,paired=TRUE,alternative="greater") #対応あるサンプルのt検定(<) t.test(x1,x2,paired=TRUE,alternative="less")
効果量は別途計算する必要がある。「社会統計用R自作関数」収録のt.test.paired()関数を用いると、効果量もまとめて算出する。