mct <- function(x) {を挙げている。
L <- NROW(x)
X <- 0
N <- 0
for (i in 1:(L - 1)) {
for (j in (i + 1):L) {
s <- (x[i, j] + x[j, i])
if (s > 0) {
N <- N + 1
X <- X + (x[i, j] - x[j, i]) ^ 2 / s
}
}
}
return(c( X2 = X, df = N, p = (1 - pchisq(X, N))))
}
mct2 <- function(x) {「ゼロ割」は避けるのではなく,積極的に正しく対処するべきということか?(同じようなことではあるが)
i <- col(x)[lower.tri(x)]
j <- row(x)[lower.tri(x)]
a <- mapply(function(i, j) (x[i, j] - x[j, i]) ^ 2 / (x[i, j] + x[j, i]), i, j)
chisq <- sum(a, na.rm = TRUE) # NaN も除かれる
df <- sum(!is.nan(a)) # !is.na(a) でもよい
return(c(X2 = chisq, df = df, p.value = pchisq(chisq, df, lower.tail = FALSE)))
}
STATISTIC <- sum(y[upper.tri(x)]^2/x[upper.tri(x)])を
STATISTIC <- sum(y[upper.tri(x)]^2/x[upper.tri(x)], na.rm=TRUE)にする(前の方の PARAMETER <- r * (r - 1)/2 は不要)。
PARAMETER <- sum(!is.nan(y[upper.tri(x)]^2/x[upper.tri(x)]))
> x = matrix(c(c(7, 2, 5, 3, 11, 2, 0, 3, 4, 0, 5, 9, 3, 15, 14, 10)), 4, 4)なお,「"Division by zero"を避けるために全部のセルに0.01を足す」というのは明らかに間違い(自由度が減らない)。
> mct(x)
X2 df p
15.428836864 5.000000000 0.008678852
> mct2(x)
X2 df p.value
15.428836864 5.000000000 0.008678852
> mcnemar.test(x) # 元のまま
McNemar's Chi-squared test
data: x
McNemar's chi-squared = NaN, df = 6, p-value = NA
> mcnemar.test2(x) # 修正したもの
McNemar's Chi-squared test
data: x
McNemar's chi-squared = 15.429, df = 5, p-value = 0.008679
No.22613 Re: ゼロでの割り算 【青木繁伸】 2018/09/09(Sun) 12:49
2 0
0 5
というのと
2 1
1 5
というのは,0-0 = 1-1 = 0 という情報を与えるという意味では同じなので,自由度は減らさなくてもよいかSTATISTIC <- sum(y[upper.tri(x)]^2/x[upper.tri(x)], na.rm=TRUE)だけの変更で,これは実質的には NaN の場合に 0 を加えるというのと同じであるから
PARAMETER はそのままPARAMETER <- r * (r - 1)/2とすれば,mcnemar.test(x+0.01) もありか。ただし,加える数は他のまともなセルのことも考えるとできるだけ小さい方が良いだろうとは思う。例えば +1e-15 とか
No.22614 Re: ゼロでの割り算 【中澤】 2018/09/09(Sun) 21:30
記事ありがとうございます。
確かにNaNが正しいですね。不正確な記述でした。
自由度の扱いは悩ましいですね。スキップでなくて分子がゼロなのでゼロとみなすということですね。勉強になりました。
No.22615 Re: ゼロでの割り算 【中澤】 2018/09/19(Wed) 17:55
http://minato.sip21c.org/bulbul2/20180915.html
に書きましたが,カテゴリ数が3以上の場合の拡張マクネマー検定と同様の帰無仮説を検定する方法としてBhapkarの検定というのがあって,irrパッケージのbhapkar()で実行できました。いま書いている論文ではこれを使おうと思います。
● 「統計学関連なんでもあり」の過去ログ--- 048 の目次へジャンプ
● 「統計学関連なんでもあり」の目次へジャンプ
● 直前のページへ戻る