研究室に配属されたばかりの新入生や、これからRで統計分析を始めたいと思っている方へ向けて、【R講座】では、RとRStudioの基本的な使い方から統計手法の選び方、基本的なデータ分析方法を解説しています。特にRが初めての方でも安心して学べるように、RStudioのクリック操作も紹介していきます。実際のコード例を交えながら進めるので、これからの研究やデータ分析に、役立てていただけたら嬉しいです。

みなさん、こんにちは!
ここでは、この回で紹介したマクネマー検定について解説しています。
- マクネマー検定の概要
- マクネマー検定の方法
- 結果の見方
マクネマー検定とは

マクネマー検定は、対応のある名義尺度データの差を評価するための検定方法です。例えば、ある農薬の効果を評価する際に、同じ作物に対して農薬使用前後の病害発生率を比較するのに使用できます。
マクネマー検定を実施する際には以下の条件を確認します。
- 対応の有無:対応あり
- 正規性:必要なし
- 等分散性:必要なし
- 群数:2群
- データ尺度:名義尺度
マクネマー検定では次の仮説を設定します。
- 帰無仮説(H0):計測の前後で結果に差はない。
- 対立仮説(H1):計測の前後で結果に差がある。
関数の構造と引数オプション

Rでマクネマー検定を行うには、
関数を使用します。mcnemar.test()
# マクネマー検定の関数
mcnemar.test(x, y = NULL, correct = TRUE)
- x: 2次元のクロス集計表を含む行列形式、または factor オブジェクトを指定します。
- y: factor オブジェクトを指定します。x が行列の場合、この引数は無視されます。
- correct: 検定統計量を計算する際に連続性補正を適用するかを示す論理値です。補正を適用する場合は
TRUE
、適用しない場合はFALSE
を指定します。

まとめると、
関数は次の二つの入力方法となります。mcnemar.test()
mcnemar.test(行列)
mcnemar.test(ベクトル1, ベクトル2)
分析の実践

次のステップでデータを分析していきます。
- STEP 1データの読み込み
csvファイルからデータを読み込みます。
- STEP 2マクネマー検定の実行
関数でマクネマー検定を実行します。mcnemar.test()
- STEP 3結果の出力
計算された結果がコンソールペインに出力されます。
使用するデータ

この講座では、説明のために同じ CSV データを使い回しています。
実際には、データの性質(分布・尺度・サンプル数など)に合わせて、適切な統計検定を選びましょう。
このcsvファイルには次のデータが含まれています。
Before | After |
---|---|
Cure | Cure |
NoCure | Cure |
NoCure | Cure |
NoCure | Cure |
NoCure | Cure |
NoCure | Cure |
NoCure | Cure |
NoCure | Cure |
NoCure | Cure |
NoCure | NoCure |
データの読み込み
まずは、次のコードを使って、オブジェクト「data
」にread.csv()
関数でcsvファイルのデータを代入します。
# データの読み込み
data <- read.csv(file.choose(),
check.names = F)
マクネマー検定
Table()
を使う方法行列データに変換してマクネマー検定を実行します。
# 行列に変換して実行
tab <- table(data)
mcnemar.test(tab)
行列データに変換してマクネマー検定を実行します。
# ベクトルでマクネマー検定実行
mcnemar.test(data$Before, data$After)
結果の見方
結果はコンソールペインに表示されます。
McNemar's Chi-squared test with continuity correction
data: tab
McNemar's chi-squared = 6.125, df = 1, p-value = 0.01333
この結果から、p値が0.05より小さいため、BeforeとAfterに有意な差があったと判断します。
項目 | 説明 |
---|---|
有意水準 (α) | 帰無仮説を棄却する基準。通常 0.05(5%) や 0.01(1%) を使用する。 例: α = 0.05なら、5%未満の確率で偶然起こる差を「有意」と判断する。 |
p値 | 検定統計量が観測された値以上になる確率。 p値 < 有意水準 (α) なら、統計的に有意と判断し、帰無仮説を棄却する。 |
統計的に有意とは? | 「偶然の変動では説明できない差がある」と判断すること。ただし「実験的に重要」や「因果関係がある」とは限らない。 |
信頼区間 (Confidence Interval, CI) | 母集団の真の値(2つのグループの平均値の差)が含まれる範囲を示す。例えば 95%信頼区間 は、繰り返し実験したときに95%の確率で真の値(平均値の差)を含む。 |
信頼区間と有意性の関係 | もし信頼区間が ゼロ(または比較対象の値)を含まなければ、統計的に有意と判断できる。 例:平均差の95%信頼区間が (0.5, 2.3) なら、有意水準5%で有意。 |
注意点 | 統計的有意でも「効果の大きさ(実用的な意味)」とは異なる。 p値が大きくても「差がない」とは言えない(サンプル数が少ない可能性)。 |
まとめ
- マクネマー検定の概要
- ノンパラメトリック・対応あり・2群
- 名義尺度
- マクネマー検定の方法
mcnemar.test(行列)
mcnemar.test(ベクトル1, ベクトル2)
- 結果の見方
- 有意水準・p値・信頼区間から判断
- 統計的な意味と実用的な意味に注意

ここでは、Rを使用してマクネマー検定を行う方法について解説しました。
Rでは、コードの文法が正しければどんな統計手法でも計算が実行されてしまうため、結果が出たからといって安心するのは危険です。統計解析では、データの種類や前提条件に適した手法を選ぶことが重要であり、誤った検定を適用すると意味のない結果を得てしまう可能性があります。
そのため、単にコードを動かすだけでなく、
- データの分布(正規分布かどうか)
- 変数の尺度(カテゴリーデータか、連続データか)
- サンプルサイズ(母数が少ないと適さない検定もある)
などを考慮し、統計の知識をもとに適切な解析方法を選択する必要があります。