🍶

HCI研究者の心理統計ノート:ウェルチの t 検定 / Welch t-test

2023/01/04に公開

HCI研究者の心理統計ノート

https://zenn.dev/tmizuho/articles/e8890371f683bd

Introduction

ウェルチの t 検定 (Welch t-test) は、2つの対応のないデータ間の平均値に差があるかどうかを検定する方法で、データに正規性が仮定できる場合に使用できます。

HCI研究では、2条件参加者間計画 (between-subject design) の実験において、条件1と条件2で評価指標に統計的に有意な差があるかどうかを調べる際に使用します (e.g., 既存手法 vs 提案手法)。

正規性が仮定できない場合は、ウィルコクソンの順位和検定 (Wilcoxon rank sum test) の使用を検討してください。

類似の手法に スチューデントの t 検定 (Student t-test) がありますが、スチューデントの t 検定はデータに等分散性が仮定出来る場合にしか適用できません。一方で、ウェルチの t 検定では 等分散性の仮定は必要ありません。等分散性のあるデータ、ないデータともに適用することが出来ます。詳しくは、記事下部の For Your Information も参照してください。

R Sample Code

# ライブラリのインポート
library(tidyverse)

# csvファイルの読み込み
# 整然データを想定: 一行が一観測。 "参加者ID, 独立変数, 従属変数" の形。
data <- read_csv("csvファイルのパス", show_col_types=F) %>%
    # コードの再利用可能性を高めるために列名を変更
    mutate(s=factor("参加者IDの列名"), A=factor("独立変数の列名"), y="従属変数の列名") %>%
    # 必要な列だけ抽出
    select(s, A, y)

# 欠損値や外れ値など、解析から除外するべきデータがあれば削除
# 割愛

# 記述統計量の確認
data %>%
    group_by(A) %>%
    summarize(N=n(), Mean=mean(y), SD=sd(y), SE=sd(y)/sqrt(n()), Min=min(y), Median=median(y), Max=max(y))

# 簡単なグラフを描画して確認
data %>%
    # 平均と標準誤差を計算
    group_by(A) %>%
    summarize(Mean=mean(y), SE=sd(y)/sqrt(n())) %>%
    # ggplot で作図開始。x軸は実験条件、y軸は評価指標(平均値)。
    ggplot(aes(x=A, y=Mean, fill=A)) +
    # 棒グラフ
    geom_bar(stat="identity") +
    # エラーバー
    geom_errorbar(aes(ymin=Mean-SE, ymax=Mean+SE), width=.2, size=.75) +
    # 軸ラベルの設定
    labs(x="Condition", y="Measurement") +
    # カラーパレット
    scale_fill_brewer(palette="Blues") +
    # テーマの調整
    theme_light() +
    theme(legend.position="none") +
    theme(panel.grid.major.x=element_blank(), panel.grid.minor.y=element_blank())

# 対象とするふたつのデータ
a1 <- data %>% filter(A==levels(data$A)[1]) %>% pull(y)
a2 <- data %>% filter(A==levels(data$A)[2]) %>% pull(y)

# 正規性の検定 p > alpha なら ok (棄却された場合は、ウィルコクソンの順位和検定へ)
shapiro.test(c(a1, a2))

# ウェルチのt検定
t.test(a1, a2, var.equal=F)

# 効果量 Cohen's d: 目安は small(0.2), medium(0.5), large(0.8)
n1 = length(a1)
n2 = length(a2)
s = sqrt(((n1-1)*sd(a1)**2+(n2-1)*sd(a2)**2)/(n1+n2-2))
d = abs(mean(a1) - mean(a2)) / s
cat(paste("Cohen's d = ", d, "\n", sep=""))

How to Report : LaTeX Sample

Japanese

正規性が棄却されなかったため (Shapiro-Wilk test, \textit{p} $>$ .05), ウェルチの \textit{t} 検定を実施した結果,YはA1条件がA2条件に比べて有意に高かった (\textit{t} (X) = X.XX, \textit{p} = .XX, Cohen's \textit{d} = X.XX).

English

Because normality assumption was not violated (Shapiro-Wilk's normality test, \textit{p} $>$ .05), we conducted an Welch's \textit{t} test. The result showed that Y was significantly higher in the A1 condition than in the A2 condition (\textit{t} (X) = X.XX, \textit{p} = .XX, Cohen's \textit{d} = X.XX).

For Your Information

スチューデントとウェルチ、どちらを選べばよいか

等分散性の検定を実施し、等分散性が仮定できればスチューデントの t 検定を実施し、仮定できなければウェルチの t 検定を実施するというのがよく知られる手順です。しかし、「等分散性の検定を実施した後、t 検定を実施することは検定の多重性の問題がある。したがって、等分散性の検定はせずに、いきなりウェルチの t 検定を実施する方がよい」という議論があるようです。一方で、教科書などでは「問題ない」という見方が多いように感じますし、まだ答えが出ているわけではないと思うので、統計学者ではない私達は今のところは神経質にならなくてもよいと考えています。
https://biolab.sakura.ne.jp/welch-test.html

Discussion