Rでt検定

t検定

  • 【ざっくりいうと】
    • 統計的仮説検定のひとつ。2群の平均値を比較する手法
  • 【厳密にいうと】
    • 2群の背後に仮定される母集団の平均値が異なることを示したい場合に使用する
  • 【数学的には】
    • 2群の背後に単一の母集団を仮定して,その仮定の下で今回のデータが得られる確率を計算する
    • → その確率があまりに低かったら,2群は単一の母集団からサンプルされたのではないと結論する


t検定の種類

  • 片側検定⇔ 両側検定
    • 片側検定:どちらかがどちらかよりも平均値が大きい!という仮説がある
    • 両側検定:2群の平均値は違うだろう!という仮説
  • 対応のないt検定⇔ 対応のあるt検定
    • 対応なし:2群のデータに対応(高い相関)が仮定されない
    • 対応あり:2群のデータに対応(高い相関)が仮定される:同じ対象(参加者など)からデータが生成されるなど
  • Rではウェルチのt検定がデフォルトになっている(これでいい)

統計検定の詳しいこと(初歩的なこと)については心理学統計入門(板口・森,2017)を参照ください(Amazonリンク)

Rでt検定

  • t.test(x, y)
  • x, yにそれぞれの群(条件)のデータを入力する
    • x, yは一列ずつ,数値データ
  • オプション
    • 片側検定⇔両側検定(デフォルト)
      • alternative = "greater", "less", "two.sided"(default)
    • 対応のないt検定(デフォルト)⇔対応のあるt検定
      • paired = T, F (default)


t検定の実行と結果の保存

ダミーデータに対するt検定

result <- t.test(1:10, 2:11)

result

  Welch Two Sample t-test

data:  1:10 and 2:11
t = -0.73855, df = 18, p-value = 0.4697
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
 -3.844662  1.844662
sample estimates:
mean of x mean of y 
      5.5       6.5 

結果の値を得る

  • resultに保存された結果をひとつずつ取り出すことが可能
    • result$statistic: t値
    • result$parameter: 自由度
    • result$p.value: p値
    • result$conf.int: 信頼区間
    • result$estimate: それぞれの群の平均値
    • result$null.value: それぞれの群の平均値


空書データに対するt検定

  • Itaguchi et al. (2019)のデータを使用する(基礎3と同じ作業)


# read.xlsxで読みこんだデータをdataに保存

library(openxlsx)

data <- read.xlsx("pone.0226832.s001.xlsx")


# 空書データは同じ人から得られたデータなので,対応のあるt検定を使う

# 空書データは空書条件の方が成績が良いという仮説があるため,片側検定を使う

# 例として,空書条件と静止条件の成績を比較する

result2 <- t.test(data$Kusho, data$Static, alternative="greater", paired=T)

result2

  Paired t-test

data:  data$Kusho and data$Static
t = 4.02, df = 25, p-value = 0.0002353
alternative hypothesis: true difference in means is greater than 0
95 percent confidence interval:
 0.8626305       Inf
sample estimates:
mean of the differences 
                    1.5 

効果量dの算出

  • 効果量とは効果の大きさに関する指標であり,サンプルサイズ(データ数)から独立である
    • 詳しいことは教科書参照してください
  • 今回は,2群の差に関する効果量dを算出する
    • ちなみに,人によっては少し算出式が異なるので注意(どれがいいかは議論あり)


t値から算出する方法

  • 論文に書いてあるt値からでも事後的に算出可能
    • 計算簡単なので,ぜひ覚えておいてください
    • Rを使う場で言うのもなんだけど,電卓やエクセル等で計算してもOK


  • 対応なしのt検定
    • d = |t| × sqrt( (n1 + n2) / (n1 × n2) )
      • n1,n2はそれぞれの群内のデータ数(あるいは参加者数)
      • 2群のデータ数が 等しいときには,当たり前だけどn1=n2
  • 対応ありのt検定
    • d = |t| × sqrt(1 / n)
      • nは1群内のデータ数(あるいは参加者数)


# 実行

# nrowはデータの行数を数えてくれる関数

d1 <- abs(result$statistic)*sqrt((10+10)/10*10)

d2 <- abs(result2$statistic)*sqrt(1/nrow(data))