🔍
対応のあるt検定(paired t-test)
概要
同一の対象に対して2つの条件を比較し、平均値に有意な差があるかを検定する手法
主な用途
パターン | 説明 | 実務ユースケース |
---|---|---|
時間軸の比較 | 同一対象の前後で変化を測定 | LP改修前後でCV率の変化 |
条件差の比較 | 同一対象に異なる施策や状態を適用して比較 | 同一顧客の施策AとBで売上比較 |
時系列的な環境比較 | 時間帯・曜日など外的条件の違いで行動を比較 | 平日と休日の訪問数比較 |
交互提示による比較 | 同一対象に2条件を交互に提示して反応を比較 | 広告訴求A/Bのクリック率比較 |
データ要件
- 従属変数:数値型(例:CV率、売上、訪問数、クリック率など)
- 属率変数:同一対象の2条件(例:LP改修前後、施策AとB、平日と休日、広告AとBなど)
- 前提条件:
- 測定対象が同一のペアであること(例:同一人物・同一地域)
- 2群の対応するデータの差が正規分布に従うこと
理論
同じ対象から得られた2つの値(前後・A/Bなど)を比較し、 その差分の平均が0であるかを検定
- 帰無仮説:差分の平均が0だった(=2つの比較対象に差がなかった)
- 対立仮説:差があった(両側検定)、上がった/下がった(片側検定)
【検定の手順】
-
差分データの算出
各対象について、2つの値の差分 を求めるd_i = x_i^{(1)} - x_i^{(2)} -
差分の平均と不偏分散を算出
- 平均:
\bar{d} = \frac{1}{n} \sum_{i=1}^n d_i - 不偏分散:
s^2 = \frac{1}{n - 1} \sum_{i = 1}^n {(x_i - \overline{x})^2} -
t統計量の算出
t = \frac{ \bar{d} }{ \sqrt{s^2 / n} } = \frac{ \bar{d} }{ s / \sqrt{n} } -
自由度
の t分布に基づいてp値を算出n - 1
→ p値が有意水準(例:0.05)未満なら、平均値に有意な差があると判断
実装コード例
Python
from scipy.stats import ttest_rel
# 施策前後のデータ ※差分データは正規分布に従う想定
before = df['before']
after = df['after']
# 対応のあるt検定
t_stat, p_val = ttest_rel(before, after)
print(f"t値 = {t_stat:.3f}, p値 = {p_val:.3f}")
# 評価(有意水準=0.05、両側検定で設定)
if p_val < 0.05:
print("→ beforeとafterに有意な差があります。")
else:
print("→ 有意な差は認められません。")
注意点・Tips
-
対応のあるt検定は「差分データが正規分布に従うこと」が前提
→ この前提が崩れると、p値や有意差判定の信頼性が下がる - サンプル数が多ければ中心極限定理[1]により多少の非正規性は許容される(ロバスト性[2])
-
n < 30程度なら差分データの正規性確認が必須:
小サンプルでは、差分データが正規分布に従っているかどうかの判断が難しく、
分布の歪み(偏りや外れ値)の影響を受けやすいため、正規性の確認が重要になる -
平均を使うため外れ値に弱い:
極端な値が結果を左右する
ケーススタディ
関連手法
- 前提条件に関連する手法
- Shapiro-Wilk検定(正規性の確認)
- Anderson-Darling検定(正規性の確認)
- Kolmogorov-Smirnov検定(正規性の確認)
- 類似手法
- Wilcoxon符号付順位検定(対応のある2群比較のノンパラメトリック検定)
- Studentのt検定 / Welchのt検定(独立2グループ間の平均比較)
- ANOVA(多群の平均比較)
Discussion