COVID19による在宅勤務継続中……
自宅の顕微鏡でコツコツ見てきたデータを元に、ある病理分布のステージングを作ったのですが、
オンラインミーティングで、
「そのステージングの信頼性を示す統計が必要。」
と言われました(そりゃそうだ)。
文献を漁ると、マクネマー検定(McNemar's test)とロジスティック回帰(Logistic regression)の組み合わせで示せるっぽい……
つまり、領域Aでは+だけれども領域Bでは-という違いが有意差を持ってでているかどうか。
有意差がなければ同じステージにいれ、有意差があれば次のステージ、というイメージ。
というわけでR備忘録。
McNemar検定
トライ内容
ある領域A2病変+/-で、次の領域Bで病変+/-...と段階的にMcNemar's testをしてみる。
領域A | 病変+ | 病変- | 計 |
領域B, 病変+ | a | b | a + b |
領域B, 病変- | c | d | c + d |
計 | a + c | b + d | N |
Rで計算
計算は、Rの標準パッケージで。
> x <- matrix(c(a, b, c, d), ncol=2, byrow=T)
> mcnemar.test(x, correct=F)
※各記述の意味
- a,b,c,dは上の表の各項目の数値を入れる。
- matrix: 行列を作りますよ。
- nrow: 行の指定。
- ncol: 列の指定。
- byrow=T: 要素を上の行から順に左から右へ埋める場合。
もしくは、
>mcnemar.test(matrix(c(a, b, c, d), 2, 2), correct=FALSE) #連続性の補正をしない場合
>mcnemar.test(matrix(c(a, b, c, d), 2, 2) #連続性の補正をする場合
>binom.test(c(c, b)) #二項検定による正確な有意確率
※correct=Fを引数に与える事で、連続性の補正を抑制できる。
Yatesの連続補正を行うかどうかは、判断がややこしいようですが、わかりやすい指標として
- b+c/2 <= 5の場合:補正あり
- b+c/2 > 5の場合:補正なし
というのがありました1。
実際に補正あり/なしで検討してみる、てゆーのもありみたいです。
※生データのテーブルで作業
データ例(ファイル名:staging)
No. | regionA | regionB |
1 | Yes | No |
2 | Yes | Yes |
3 | No | Yes |
4 | No | No |
5 | Yes | No |
6 | No | Yes |
入力例:
上記テーブルをコピーして、
> staging<-read.table("clipboard", header=TRUE)
> .Table<-xtabs(~regionA+regionB,data=staging,subset=)
> .Table
出力例:
regionB | ||
resionA | No | Yes |
No | 1 | 2 |
Yes | 2 | 1 |
ここで標準パッケージのMcNemar.testを使う。
入力例:
mcnemar.test(.Table,correct=FALSE)
出力例:
McNemar's Chi-squared test
data: .Table
McNemar's chi-squared = 0, df = 1, p-value = 1
オッズ比と95%信頼区間も
オッズ比と95%信頼区間も求めたい場合。
まず、eact2x2パッケージをインストールし、ライブラリとして読み込む。
> install.packages("exact2x2")
> library(exact2x2)
その後で、
> mcnemar.exact(matrix(a,b,c,d), nrow=2))
例えば、下記のようなデータだった場合、
regionB | ||
resionA | Yes | No |
Yes | 51 | 0 |
No | 10 | 0 |
> mcnemar.exact(matrix(51,10,0,0), nrow=2))
出力例:
Exact McNemar test (with central confidence intervals)
data: matrix(c(51, 10, 0, 0), nrow = 2)
b = 0, c = 10, p-value = 0.001953
alternative hypothesis: true odds ratio is not equal to 1
95 percent confidence interval:
0.0000000 0.4461255
sample estimates:
odds ratio
0
References
- 兵庫大学健康科学部健康システム学科「健康統計の基礎・健康統計学」HP <http://hs-www.hyogo-dai.ac.jp/~kawano/HStat/?plugin=cssj&page=2009%2F13th%2FMcNemar_Test>
- 統計解析 R-Tips 66.カテゴリデータの検定 <http://cse.naro.affrc.go.jp/takezawa/r-tips/r/66.html>
- 奥村晴彦HP/統計・データ解析/McNemar検定 <https://oku.edu.mie-u.ac.jp/~okumura/stat/mcnemar.html>
- 臨床医のためのRコマンダーによる医学統計解析マニュアル<http://rcommanderdeigakutoukeikaiseki.com/McNemer.html>
- R基本統計関数マニュアル<https://cran.r-project.org/doc/contrib/manuals-jp/Mase-Rstatman.pdf>
- Rによる統計処理<http://aoki2.si.gunma-u.ac.jp/R/index.html>