【統計】McNemar's test(マクネマー検定)

マクネマー検定のメモ。
対応のある比率の差の検定でノンパラメトリックな手法。

【目次】


帰無仮説、対立仮設


次のクロス表を考える。薬剤投与前後での効果有無などの2×2データ。

After Total
Yes No
Before Yes a b AB
No c d CD
Total AC BD N


帰無仮説  H_{0}: b = c (前後に関連なし)

・対立仮設  H_{1}: b \neq c (前後に関連あり)


前後の比率に差がないという帰無仮説であり、bセルとcセルのペア数が同じかどうかを見ることになる。
bセルとcセルのみを見るため不均衡データには注意。

計算式等



検定統計量

  \chi_{0}^{2} = \dfrac{\left( \left| b-c \right| - Correct\right) ^{2}}{b+c}

 Correct=1(連続修正あり)、Correct=0(連続修正なし)
 bセルとcセルの合計が25以下なら連続修正ありが良い。
 検定統計量  \chi_{0}^{2} は自由度1のカイ二乗分布に従う。

前後の比率の差とその信頼区間

  \dfrac{a+b}{N}-\dfrac{a+c}{N}=\dfrac{b-c}{N}

  \dfrac{b-c}{N}±1.96\dfrac{1}{N}\sqrt{\left( b+c\right) -\dfrac{\left( b-c\right) ^{2}}{N}}


下記架空データでの計算。前後のクロス集計から  \chi_{0}^{2} を求め、カイ二乗検定を行う。


Rで検算。

> ads <- matrix(data=c(10,15,20,25),nrow=2)
> mcnemar.test(ads, correct=T)

    McNemar's Chi-squared test with continuity correction

data:  ads
McNemar's chi-squared = 0.45714, df = 1, p-value = 0.499
> mcnemar.test(ads, correct=F)

    McNemar's Chi-squared test

data:  ads
McNemar's chi-squared = 0.71429, df = 1, p-value = 0.398


プログラムコード


R

mcnemar.test(ads, correct=T)  #-- 連続修正あり
mcnemar.test(ads, correct=F)  #-- 連続修正なし


SAS

proc freq data=ADS;
    tables before * after / agree;
    weight cnt / zeros;
    exact mcnem;
run;


参考


統計学(出版:東京図書), 日本統計学会編

本ブログは個人メモです。 本ブログの内容によって生じた損害等の一切の責任を負いかねますのでご了承ください。