次の値の表があります。
25 75
38 162
オッズ比は0.7037で、log(OR)は-0.3514です。値がa、b、c、dの分割表の場合、log(OR)の分散は次のように与えられます。
(1/a + 1/b + 1/c + 1/d)
Rのこのデータからlog(OR)のp。値を計算するにはどうすればよいですか(0と大幅に異なるかどうか)。
次の値の表があります。
25 75
38 162
オッズ比は0.7037で、log(OR)は-0.3514です。値がa、b、c、dの分割表の場合、log(OR)の分散は次のように与えられます。
(1/a + 1/b + 1/c + 1/d)
Rのこのデータからlog(OR)のp。値を計算するにはどうすればよいですか(0と大幅に異なるかどうか)。
回答:
分割表を入力してp値を出力するフィッシャーの正確確率検定を使用できます。オッズ比は1であるという帰無仮説と、オッズ比が1ではないという対立仮説があります。
(tab <- matrix(c(38, 25, 162, 75), nrow=2))
# [,1] [,2]
# [1,] 38 162
# [2,] 25 75
fisher.test(tab)
#
# Fisher's Exact Test for Count Data
#
# data: tab
# p-value = 0.2329
# alternative hypothesis: true odds ratio is not equal to 1
# 95 percent confidence interval:
# 0.3827433 1.3116294
# sample estimates:
# odds ratio
# 0.7045301
この場合、p値は0.23です。
これを行う別の方法(フィッシャーの正確確率検定以外)は、値を二項GLMに入れることです。
d <- data.frame(g=factor(1:2),
s=c(25,75),
f=c(38,162))
g <- glm(s/(s+f)~g,weights=s+f,data=d,
family="binomial")
coef(summary(g))["g2",c("Estimate","Pr(>|z|)")]
## Estimate Pr(>|z|)
## -0.3513979 0.2303337
尤度比検定(上記のWald値よりもわずかに正確)を行うには、次のようにします。
anova(g,test="Chisq")
与える
## Df Deviance Resid. Df Resid. Dev Pr(>Chi)
## NULL 1 1.4178
## g 1 1.4178 0 0.0000 0.2338
rms
f <- lrm(y ~ groups, weights=freqs)
f # prints LR chi-sq, d.f., P, many other quantities
ここでネストされたモデルは、このモデルとインターセプトのみのモデルです。
lrm()
デフォルト、出力形式などが異なりますが、統計モデル(IIUC)は同じですglm(...,family="binomial")