メモ MHOR ~R関数(Fisher、MH)・手計算;点推定
・Rで必要になるデータの整理、手計算MHORをメモする.
Fisherの正確確率 ← ORのみ ;記述訂正
MH関数・正確確率付き ← MHOR ;記述訂正
■ データの処理
空白行を探知し、削除する.
例 c6 <-complete.cases(d6)
dr <- d6[c6,] dr:操作するデータ
・表
yts_ts <-xtabs(~y+tam+sake,data=data7)
2つのtab:sありの方のtab と なしtab
Rでの表現 表計算での表現
> yts_ts[,,2]
■ Fisher's Exact Test
個々の表に対して、Fisher's Exact Test するR関数があって、
fisher.test(yts_ts[,,1])
--------
Fisher's Exact Test for Count Data
data: yts_ts[, , 1] サケあり層だけをtest
p-value = 2.705e-06
alternative hypothesis: true odds ratio is not equal to 1
95 percent confidence interval:
3.562507 56.561822
sample estimates:
odds ratio
12.41095
---------
%tileが広い.
・図示
表ごとに、plot の前に t ( ) で転置しておく. 《 転置は t()》
例 t_y<-t(yts_ts[,,2]) 意味: sakeあり:2の表を 転置する
上左表と同じ順で図示される.
・手計算によるMH調整ORを組む.
を書く.
R script
MHOR_yt<-(as*ds/sums+a*d/sum_)/(bs*cs/sums+b*c/sum_)
サケあり、なしtab の aからd,n
MHOR_yt
[1] 9.318758
手計算でのMHORは、関数 mantelhaen.test;statsからのものと一致(下記).
ところで、MHORはどうしても各層MHORの ”間をとっている” 感が残る.
また、MHORのCIは、漸近的でないものをどう考えるか、は根の深い疑問.
---------------
■ mantelhaen.test R関数
: 基本機能であるstats 3元分割表が必要
mantelhaen.test(yts_ts)
Mantel-Haenszel X-squared = 29.231, df = 1,
p-value = 6.424e-08
・・ 95% 3.868831 22.445863
・・ cMH 9.318758
-
なお、exact=TRUE とすると【fisherの正確確率】に・・また、common odds ratio も conditional MLE になるのだそうだ;奥村氏.
-
mantelhaen.test(yts_ts,exact=TRUE)
Exact conditional test of independence in 2 x 2
x k tables
data: yts_ts
S = 38, p-value = 2.284e-08
alternative hypothesis: true common odds ratio is not equal to 1
95 percent confidence interval:
3.771102 27.427056 ← exactなしだと 3.6 22 くらい
sample estimates:
common odds ratio
9.467893 ← exactなしだと9.319くらい
-