同じ被験者に対して複数の条件で測定を行う実験は、心理学や医学の研究で極めて一般的です。たとえば、ある薬剤の効果を評価するために、同じ患者に対して投薬前・投薬1週間後・投薬1ヶ月後の3時点で血圧を測定する場合です。
このような対応のあるデータ(repeated measures)を一元配置ANOVAで分析すると、被験者間の個体差が誤差に含まれるため検出力が低下します。反復測定分散分析(repeated measures ANOVA)は、個体差を明示的にモデルから除去することで、条件間の差をより精密に検出します。
反復測定分散分析を理解すると、以下のような応用が可能です。
- 臨床試験: 同じ患者の治療前後の変化を複数時点で追跡する縦断研究の解析に必須です
- 心理学実験: 被験者内デザイン(同じ被験者が全条件を経験する)の解析に標準的に使われます
- 教育評価: 学生の成績の時間的変化を追跡する場面で利用されます
- スポーツ科学: 同じ選手のパフォーマンスを異なるトレーニング条件で比較する場合に有効です
本記事の内容
- 反復測定デザインの利点と対応のある $t$ 検定との関係
- 平方和の分解と被験者効果の除去
- 球面性の仮定とMauchlyの検定
- Greenhouse-Geisser補正とHuynh-Feldt補正
- Pythonによる実装と可視化
前提知識
この記事を読む前に、以下の記事を読んでおくと理解が深まります。
反復測定デザインの利点
個体差の制御
反復測定デザインの最大の利点は、被験者間の個体差を除去できることです。
たとえば、3種類の教授法の効果を比較する実験を考えましょう。
独立群デザイン(被験者間デザイン): 15人の学生を5人ずつ3群に分け、各群に異なる教授法を適用します。しかし、学生の能力には個人差があるため、群間の差が教授法の効果なのか個人差なのか区別しにくくなります。
反復測定デザイン(被験者内デザイン): 5人の学生全員に3種類の教授法を順番に経験させ、それぞれの後にテストを実施します。同じ学生が全条件を経験するため、個人の能力差は全条件に共通して影響し、条件間の差から取り除くことができます。
数学的には、反復測定ANOVAは誤差分散から被験者効果を分離することで、より小さな誤差分散を実現し、F統計量を大きくします。
対応のある $t$ 検定との関係
条件が2つ($k = 2$)の場合、反復測定ANOVAは対応のある $t$ 検定と完全に等価です。$F = t^2$ の関係が成り立ちます。反復測定ANOVAは、この対応のある $t$ 検定を3つ以上の条件に自然に拡張したものと位置づけられます。
反復測定デザインの利点を理解したところで、数学的なモデルを定式化しましょう。
モデルと平方和の分解
記号の定義
- $n$: 被験者数
- $k$: 条件(水準)の数
- $Y_{ij}$: 被験者 $i$($i = 1, \dots, n$)の条件 $j$($j = 1, \dots, k$)における観測値
構造モデル
反復測定ANOVAの構造モデルは次の通りです。
$$ \begin{equation} Y_{ij} = \mu + \pi_i + \tau_j + \varepsilon_{ij} \end{equation} $$
- $\mu$: 全体平均
- $\pi_i$: 被験者 $i$ の効果(被験者間の個体差)
- $\tau_j$: 条件 $j$ の効果(これが検定の対象)
- $\varepsilon_{ij}$: 残差($\varepsilon_{ij} \sim N(0, \sigma^2_\varepsilon)$)
制約条件: $\sum_i \pi_i = 0$, $\sum_j \tau_j = 0$。
平方和の分解
全変動を条件間・被験者間・残差に分解します。
$$ \begin{equation} SS_T = SS_{\text{between conditions}} + SS_{\text{between subjects}} + SS_{\text{residual}} \end{equation} $$
$$ SS_T = SS_C + SS_S + SS_{CS} $$
各平方和の定義:
$$ SS_T = \sum_{i=1}^{n}\sum_{j=1}^{k}(Y_{ij} – \bar{Y}_{\cdot\cdot})^2 $$
$$ SS_C = n\sum_{j=1}^{k}(\bar{Y}_{\cdot j} – \bar{Y}_{\cdot\cdot})^2 $$
$$ SS_S = k\sum_{i=1}^{n}(\bar{Y}_{i\cdot} – \bar{Y}_{\cdot\cdot})^2 $$
$$ SS_{CS} = \sum_{i=1}^{n}\sum_{j=1}^{k}(Y_{ij} – \bar{Y}_{i\cdot} – \bar{Y}_{\cdot j} + \bar{Y}_{\cdot\cdot})^2 $$
ここで $\bar{Y}_{\cdot j}$ は条件 $j$ の平均、$\bar{Y}_{i\cdot}$ は被験者 $i$ の平均、$\bar{Y}_{\cdot\cdot}$ は全体平均です。
自由度
$$ \underbrace{nk – 1}_{SS_T} = \underbrace{k – 1}_{SS_C} + \underbrace{n – 1}_{SS_S} + \underbrace{(n-1)(k-1)}_{SS_{CS}} $$
F統計量
条件効果のF統計量は次の通りです。
$$ \begin{equation} F = \frac{MS_C}{MS_{CS}} = \frac{SS_C / (k-1)}{SS_{CS} / [(n-1)(k-1)]} \end{equation} $$
帰無仮説 $H_0: \tau_1 = \tau_2 = \cdots = \tau_k = 0$ のもとで、球面性の仮定が成り立つとき、$F \sim F(k-1, (n-1)(k-1))$ です。
重要な違い: 独立群の一元配置ANOVAでは分母が全残差 $MS_E$(すべての変動のうち条件で説明されない部分)ですが、反復測定ANOVAでは分母が $MS_{CS}$(被験者効果も除去した後の残差)です。$SS_S$ を取り除くことで $MS_{CS} < MS_E$ となり、F統計量が大きくなります。これが反復測定デザインの検出力の源です。
しかし、この検定が正しく機能するためには球面性という追加の仮定が必要です。
球面性の仮定
球面性とは何か
球面性(sphericity)は、反復測定ANOVAに固有の仮定であり、独立群のANOVAにおける等分散性の仮定に対応します。
直感的には、球面性は「すべての条件ペア間の差の分散が等しい」ことを要求します。条件 $j$ と条件 $j’$ の差 $D_{jj’} = Y_{ij} – Y_{ij’}$ について、
$$ \begin{equation} \text{Var}(D_{jj’}) = \text{const.} \quad \text{for all } j \neq j’ \end{equation} $$
例えば、3条件の場合、$\text{Var}(Y_{i1} – Y_{i2})$, $\text{Var}(Y_{i1} – Y_{i3})$, $\text{Var}(Y_{i2} – Y_{i3})$ がすべて等しいことを要求します。
球面性の数学的定義
より正確には、球面性は共分散行列 $\bm{\Sigma}$ の構造に関する条件です。$k$ 条件の観測ベクトル $\bm{Y}_i = (Y_{i1}, \ldots, Y_{ik})^\top$ の共分散行列を $\bm{\Sigma} = (\sigma_{jj’})$ とします。
複合対称性(compound symmetry)は球面性の十分条件(より強い仮定)です。
$$ \bm{\Sigma} = \begin{pmatrix} \sigma^2 & \rho\sigma^2 & \cdots & \rho\sigma^2 \\ \rho\sigma^2 & \sigma^2 & \cdots & \rho\sigma^2 \\ \vdots & & \ddots & \vdots \\ \rho\sigma^2 & \rho\sigma^2 & \cdots & \sigma^2 \end{pmatrix} $$
複合対称性は、すべての分散が等しく、すべての相関が等しいことを要求します。これは球面性よりも強い条件です。
球面性の条件は、直交変換行列 $\bm{C}$($k-1$ 個の直交コントラスト)を使って $\bm{D} = \bm{C}^\top \bm{Y}_i$ を構成したとき、$\bm{C}^\top \bm{\Sigma} \bm{C} = \lambda \bm{I}$(スカラー $\lambda$ と単位行列 $\bm{I}$ の積)が成り立つことです。つまり、直交コントラストの共分散行列がスカラー行列であるという条件です。
球面性が破れる状況
球面性が破れる典型的な状況を理解しておきましょう。
-
時間的に離れた測定の相関が低い場合: 薬の効果を投薬前・1週間後・1ヶ月後・6ヶ月後に測定する場合、隣接する時点の相関は高いが離れた時点の相関は低くなります。この自己回帰的な相関構造は球面性を破ります
-
条件ごとに分散が異なる場合: ある条件での測定が他の条件より変動が大きい場合(例: 新しい教授法は個人差が大きい)、分散の不等性が球面性を破ります
-
キャリーオーバー効果: ある条件の経験が次の条件の結果に影響する場合、条件間の相関構造が非対称になり、球面性が破れることがあります
イプシロン補正の直感
Greenhouse-Geisser のイプシロン $\hat{\varepsilon}$ は、球面性からの逸脱の程度を0から1の間で表す指標と理解できます。$\hat{\varepsilon} = 1$ のとき球面性は完全に成り立っており、$\hat{\varepsilon} = 1/(k-1)$(下界)のとき球面性からの逸脱が最大です。
イプシロン補正の効果は、F分布の自由度を縮小することです。球面性が破れると、F統計量の帰無分布は名目上の $F(k-1, (n-1)(k-1))$ よりも裾が軽くなり、補正なしのp値は過度に小さくなります(偽陽性が増える)。自由度をイプシロン倍に縮小することで、正しいサイズの検定が得られます。
Mauchlyの球面性検定
球面性の仮定が成り立つかどうかを検定する方法としてMauchlyの検定が標準的に使われます。
Mauchlyの検定統計量は、差の共分散行列の正規化された行列式に基づきます。帰無仮説は「球面性が成り立つ」であり、p値が小さければ球面性の仮定が棄却されます。
球面性が成り立たない場合の補正
球面性が成り立たない場合、F統計量の自由度を補正する方法が提案されています。
Greenhouse-Geisser(GG)補正: 補正係数 $\hat{\varepsilon}_{GG}$ を計算し、自由度を $\hat{\varepsilon}_{GG}$ 倍に縮小します。
$$ F \sim F(\hat{\varepsilon}_{GG}(k-1),\, \hat{\varepsilon}_{GG}(n-1)(k-1)) $$
$\hat{\varepsilon}_{GG}$ は $\frac{1}{k-1} \leq \hat{\varepsilon}_{GG} \leq 1$ の範囲を取り、球面性が完全に成り立つとき $\hat{\varepsilon}_{GG} = 1$、最悪の場合は $\hat{\varepsilon}_{GG} = \frac{1}{k-1}$ です。
Huynh-Feldt(HF)補正: GG補正は保守的すぎる場合があるため、やや緩めの補正として提案されました。
$$ \hat{\varepsilon}_{HF} = \frac{n(k-1)\hat{\varepsilon}_{GG} – 2}{(k-1)[n – 1 – (k-1)\hat{\varepsilon}_{GG}]} $$
実用的なガイドライン
- Mauchlyの検定を実行する
- 球面性が棄却されない($p > 0.05$)場合: 補正なしのF統計量を使う
- 球面性が棄却された場合: – $\hat{\varepsilon}_{GG} > 0.75$ ならHF補正を使う – $\hat{\varepsilon}_{GG} \leq 0.75$ ならGG補正を使う
効果量
偏イータ二乗
反復測定ANOVAにおける効果量として最も一般的なのは偏イータ二乗(partial eta squared, $\eta_p^2$)です。
$$ \begin{equation} \eta_p^2 = \frac{SS_C}{SS_C + SS_{CS}} \end{equation} $$
偏イータ二乗は「条件効果の分散を、条件効果と誤差の分散の合計で割ったもの」であり、被験者効果 $SS_S$ を含みません。これは独立群ANOVAのイータ二乗 $SS_C / SS_T$ とは異なり、被験者効果が混入しない「純粋な条件効果の大きさ」を表します。
一般的な目安として、$\eta_p^2 = 0.01$(小)、$\eta_p^2 = 0.06$(中)、$\eta_p^2 = 0.14$(大)が使われます。
一般化イータ二乗
偏イータ二乗はデザイン(被験者間 vs 被験者内)によって値が変わるため、メタ分析などで異なるデザインの研究を比較する場合には不適切です。一般化イータ二乗(generalized eta squared, $\eta_G^2$)はこの問題を解決するために提案されました。
$$ \eta_G^2 = \frac{SS_C}{SS_C + SS_S + SS_{CS}} $$
一般化イータ二乗は被験者効果 $SS_S$ を分母に含めるため、偏イータ二乗よりも小さい値になりますが、デザイン間で比較可能です。
多重比較(事後検定)
なぜ多重比較が必要か
反復測定ANOVAの結果が有意($F$ 検定で $H_0$ を棄却)であった場合、「どの条件ペア間に有意な差があるか」を特定するために事後検定(post-hoc test)が必要です。
ボンフェローニ補正付き対応あり $t$ 検定
最もシンプルな方法は、すべての条件ペアについて対応のある $t$ 検定を行い、ボンフェローニ補正(有意水準を $\alpha / \binom{k}{2}$ に調整)を適用することです。$k$ 条件の場合、$\binom{k}{2} = k(k-1)/2$ 個のペアワイズ比較を行います。
Tukey-Kramer法(反復測定版)
より検出力の高い方法として、反復測定デザインに適応したTukey法があります。ただし、球面性の仮定が成り立つ場合に適用すべきです。
実用的な推奨
球面性が成り立つ場合はTukey法やBonferroni法を使い、球面性が成り立たない場合は各ペアについてBonferroni補正付きの対応あり $t$ 検定を行うのが安全です。あるいは、球面性に依存しない多変量法(後述)を使うこともできます。
多変量アプローチ
MANOVAベースの検定
球面性の仮定に問題がある場合の代替手法として、多変量アプローチがあります。差の変数 $D_{ij} = Y_{ij} – Y_{ij_0}$(ある基準条件 $j_0$ との差)を作り、これらの差の変数に対して多変量検定(Hotelling の $T^2$ やWilksのラムダなど)を行います。
多変量アプローチの利点は球面性を仮定しないことですが、サンプルサイズが条件数に比べて十分大きい必要があります($n > k$ が必要条件)。
Pythonで実装して確認しましょう。
Pythonによる実装
反復測定ANOVAのスクラッチ実装
import numpy as np
from scipy import stats
import matplotlib.pyplot as plt
def repeated_measures_anova(data):
"""
一要因反復測定ANOVA
Parameters
----------
data : ndarray, shape (n, k) 被験者×条件の観測値
Returns
-------
result : dict ANOVA表の各値
"""
n, k = data.shape
N = n * k
grand_mean = np.mean(data)
condition_means = np.mean(data, axis=0) # (k,)
subject_means = np.mean(data, axis=1) # (n,)
# 平方和
SS_T = np.sum((data - grand_mean)**2)
SS_C = n * np.sum((condition_means - grand_mean)**2)
SS_S = k * np.sum((subject_means - grand_mean)**2)
SS_CS = SS_T - SS_C - SS_S
# 自由度
df_C = k - 1
df_S = n - 1
df_CS = (n - 1) * (k - 1)
# 平均平方
MS_C = SS_C / df_C
MS_S = SS_S / df_S
MS_CS = SS_CS / df_CS
# F統計量
F_val = MS_C / MS_CS
p_val = 1 - stats.f.cdf(F_val, df_C, df_CS)
# Greenhouse-Geisser のεの計算
# 差の共分散行列からεを推定
# 簡易的な計算: 条件間の共分散行列を使用
cov_matrix = np.cov(data.T) # k×k
k_val = k
mean_var = np.trace(cov_matrix) / k_val
grand_cov_mean = np.mean(cov_matrix)
row_means = np.mean(cov_matrix, axis=1)
numerator = (np.trace(cov_matrix) / k_val - grand_cov_mean)**2
denominator = (1 / (k_val - 1)) * (
np.sum(cov_matrix**2) / k_val**2
- 2 * np.sum(row_means**2) / k_val
+ grand_cov_mean**2
)
epsilon_gg = numerator / denominator if denominator > 0 else 1.0
epsilon_gg = min(epsilon_gg, 1.0)
# GG補正後のp値
df_C_gg = epsilon_gg * df_C
df_CS_gg = epsilon_gg * df_CS
p_val_gg = 1 - stats.f.cdf(F_val, df_C_gg, df_CS_gg)
return {
"SS": {"C": SS_C, "S": SS_S, "CS": SS_CS, "T": SS_T},
"df": {"C": df_C, "S": df_S, "CS": df_CS},
"MS": {"C": MS_C, "S": MS_S, "CS": MS_CS},
"F": F_val, "p": p_val,
"epsilon_gg": epsilon_gg, "p_gg": p_val_gg,
"means": {"conditions": condition_means, "subjects": subject_means,
"grand": grand_mean}
}
# --- テストデータ ---
np.random.seed(42)
n, k = 10, 4 # 10人の被験者、4条件
# 被験者効果(個人差)+ 条件効果 + 誤差
subject_effects = np.random.randn(n) * 5
condition_effects = np.array([0, 2, 5, 3])
data = np.zeros((n, k))
for i in range(n):
for j in range(k):
data[i, j] = (50 + subject_effects[i] + condition_effects[j]
+ np.random.randn() * 2)
# 反復測定ANOVA
result = repeated_measures_anova(data)
# 独立群ANOVAとの比較
F_indep, p_indep = stats.f_oneway(*[data[:, j] for j in range(k)])
print("=" * 60)
print("反復測定分散分析の結果")
print("=" * 60)
print(f"\n条件の数: {k}, 被験者数: {n}")
print(f"\n各条件の平均: {result['means']['conditions'].round(2)}")
print(f"\n--- ANOVA表 ---")
print(f"{'要因':<12} {'SS':>10} {'df':>5} {'MS':>10} {'F':>8} {'p':>10}")
print("-" * 60)
for src, label in [("C", "条件"), ("S", "被験者"), ("CS", "残差")]:
ss = result["SS"][src]
df = result["df"][src]
ms = result["MS"][src]
f_str = f"{result['F']:.3f}" if src == "C" else ""
p_str = f"{result['p']:.6f}" if src == "C" else ""
print(f"{label:<12} {ss:>10.2f} {df:>5} {ms:>10.2f} {f_str:>8} {p_str:>10}")
print(f"\nGreenhouse-Geisser ε = {result['epsilon_gg']:.4f}")
print(f"GG補正後p値 = {result['p_gg']:.6f}")
print(f"\n--- 比較: 独立群ANOVA ---")
print(f"F = {F_indep:.3f}, p = {p_indep:.6f}")
print(f"\n反復測定ANOVAのF値は独立群ANOVAの"
f"{result['F']/F_indep:.1f}倍大きい")
この結果から、以下のことが確認できます。
-
反復測定ANOVAのF値は独立群ANOVAよりも大幅に大きい。これは被験者間の個体差($SS_S$)を誤差から除去した効果です。被験者効果が大きいほど、この差は顕著になります
-
Greenhouse-Geisserのεは1に近いほど球面性の仮定が妥当であることを示しています。εが1から離れるほど、補正の必要性が高くなります
可視化
import numpy as np
import matplotlib.pyplot as plt
condition_labels = [f"Cond {j+1}" for j in range(k)]
fig, axes = plt.subplots(1, 2, figsize=(13, 5.5))
# 被験者ごとのプロファイルプロット
ax = axes[0]
for i in range(n):
ax.plot(range(k), data[i, :], "-o", alpha=0.4, markersize=5,
color="gray", linewidth=1)
ax.plot(range(k), result["means"]["conditions"], "-o", color="red",
markersize=10, linewidth=3, label="Group mean", zorder=5)
ax.set_xticks(range(k))
ax.set_xticklabels(condition_labels)
ax.set_xlabel("Condition", fontsize=12)
ax.set_ylabel("Score", fontsize=12)
ax.set_title("Subject profiles", fontsize=13)
ax.legend(fontsize=11)
ax.grid(True, alpha=0.3)
# 条件平均と信頼区間
ax = axes[1]
means = result["means"]["conditions"]
se = np.sqrt(result["MS"]["CS"] / n)
ci = stats.t.ppf(0.975, result["df"]["CS"]) * se
ax.bar(range(k), means, color="steelblue", alpha=0.7, edgecolor="white",
width=0.6)
ax.errorbar(range(k), means, yerr=ci, fmt="none", color="black",
capsize=5, linewidth=2)
ax.set_xticks(range(k))
ax.set_xticklabels(condition_labels)
ax.set_xlabel("Condition", fontsize=12)
ax.set_ylabel("Mean score", fontsize=12)
ax.set_title("Condition means with 95% CI\n"
"(within-subject error)", fontsize=12)
ax.grid(True, alpha=0.3, axis="y")
plt.tight_layout()
plt.savefig("repeated_measures_anova.png", dpi=150, bbox_inches="tight")
plt.show()
この可視化から、以下のことが読み取れます。
-
左図のプロファイルプロットは被験者ごとの反応パターンを示している。灰色の各線が個々の被験者、赤い線が条件平均です。被験者間でスコアの絶対値は大きく異なりますが、条件間の相対的な傾向(条件3が最も高いなど)はほぼ共通しています。この「共通の傾向」が条件効果であり、「絶対値の違い」が被験者効果です
-
右図の棒グラフは条件平均と被験者内誤差に基づく95%信頼区間を示している。この信頼区間は被験者間変動を除去した後の精度を反映しているため、独立群デザインの信頼区間よりも狭くなります
反復測定ANOVAの前提条件の確認
正規性の検定
反復測定ANOVAは、残差($Y_{ij} – \bar{Y}_{i\cdot} – \bar{Y}_{\cdot j} + \bar{Y}_{\cdot\cdot}$)が正規分布に従うことを仮定しています。正規性の検定にはシャピロ・ウィルク検定が最も検出力が高いとされています。
ただし、ANOVAは正規性からの逸脱にある程度頑健(ロバスト)であることが知られています。特にサンプルサイズが大きい場合、中心極限定理により平均値の分布は正規分布に近づくため、正規性の仮定の違反による影響は小さくなります。
正規性が著しく破れている場合は、ノンパラメトリックな代替手法としてフリードマン検定(Friedman test)を使うことができます。フリードマン検定は各被験者内で条件のランクを付け、ランクに基づいて検定を行います。
外れ値の影響
反復測定ANOVAは外れ値の影響を受けやすいため、分析前に外れ値の確認が重要です。特に、特定の被験者の特定の条件でのみ極端な値が見られる場合、その被験者×条件の観測がF統計量に大きな影響を及ぼす可能性があります。
被験者間×被験者内の混合デザイン
実際の研究では、被験者内要因(反復測定)と被験者間要因(群分け)を同時に含む混合デザイン(mixed design / split-plot design)がよく使われます。
例えば、薬剤群とプラセボ群(被験者間要因)の患者を、投薬前・投薬1ヶ月後・投薬3ヶ月後(被験者内要因)に測定する場合です。
混合デザインのモデルは次のようになります。
$$ Y_{ijk} = \mu + \alpha_i + \pi_{j(i)} + \tau_k + (\alpha\tau)_{ik} + \varepsilon_{ijk} $$
ここで $\alpha_i$ は群効果(被験者間)、$\pi_{j(i)}$ は群 $i$ 内の被験者 $j$ の効果、$\tau_k$ は時間効果(被験者内)、$(\alpha\tau)_{ik}$ は群×時間の交互作用です。
交互作用 $(\alpha\tau)_{ik}$ が有意であれば、「時間変化のパターンが群によって異なる」ことを意味し、治療効果の解釈にとって最も重要な知見です。
反復測定ANOVAの限界と代替手法
反復測定ANOVAにはいくつかの限界があります。
欠測値の扱い: 反復測定ANOVAでは、1人でも1条件のデータが欠けると、その被験者のデータがすべて分析から除外されます(リストワイズ削除)。欠測値が多い場合、検出力が大幅に低下します。この問題に対処するには、混合効果モデル(mixed-effects model, 混合効果モデルの理論を参照)を使います。混合効果モデルは欠測値が存在しても(MAR: Missing at Random の仮定のもとで)すべてのデータを有効に利用できます。
非等間隔の時点: 反復測定ANOVAは測定時点の間隔を考慮しません。投薬後1日目・2日目・30日目のように測定間隔が不等である場合、条件を名義変数として扱うANOVAでは時間の連続的な構造を活用できません。混合効果モデルや成長曲線モデルの方が適切です。
球面性への依存: 前述の通り、球面性の仮定が破れると第1種の過誤率が膨張します。補正法はあるものの、根本的な問題を解決するには多変量アプローチか混合効果モデルの使用が推奨されます。
まとめ
本記事では、反復測定分散分析の理論を被験者内変動の制御から球面性の補正まで解説しました。
- 反復測定デザインは被験者間の個体差を誤差から除去することで、独立群デザインよりも高い検出力を実現します
- 平方和の分解 $SS_T = SS_C + SS_S + SS_{CS}$ により、条件効果・被験者効果・残差を分離します
- 球面性の仮定は条件ペア間の差の分散が等しいことを要求し、違反した場合はGreenhouse-GeisserやHuynh-Feldt補正が必要です
- Pythonでの実装により、反復測定ANOVAが独立群ANOVAよりも大きなF値を生むことを数値的に確認しました
次のステップとして、以下の記事も参考にしてください。
- 共分散分析 — 共変量を統制した分散分析
- 二元配置分散分析 — 2つの因子の分析
- クラスカル・ウォリス検定 — ノンパラメトリックな代替手法