为什么我的p值在逻辑回归输出,卡方检验和OR的置信区间之间有所不同?


37

我建立了Logistic回归,其中在接受治疗后(Curevs. No Cure)治愈了结果变量。本研究中所有患者均接受治疗。我有兴趣查看是否患有糖尿病与该结局有关。

在R中,我的逻辑回归输出如下所示:

Call:
glm(formula = Cure ~ Diabetes, family = binomial(link = "logit"), data = All_patients)
...
Coefficients:
            Estimate Std. Error z value Pr(>|z|)    
(Intercept)   1.2735     0.1306   9.749   <2e-16 ***
Diabetes     -0.5597     0.2813  -1.990   0.0466 *  
...
    Null deviance: 456.55  on 415  degrees of freedom
Residual deviance: 452.75  on 414  degrees of freedom
  (2 observations deleted due to missingness)
AIC: 456.75

但是,优势比的置信区间包括1

                   OR     2.5 %   97.5 %
(Intercept) 3.5733333 2.7822031 4.646366
Diabetes    0.5713619 0.3316513 1.003167

当我对这些数据进行卡方检验时,我得到以下信息:

data:  check
X-squared = 3.4397, df = 1, p-value = 0.06365

如果您想自行计算,则治愈和未治愈组的糖尿病分布如下:

Diabetic cure rate:      49 /  73 (67%)
Non-diabetic cure rate: 268 / 343 (78%)

我的问题是:为什么p值和包括1的置信区间不一致?


糖尿病的置信区间是如何计算的?如果使用参数估计和标准误差来形成Wald CI,则将exp(-。5597 + 1.96 * .2813)= .99168作为上限。
hard2fathom 2015年

@ hard2fathom,最有可能使用的OP confint()。即,可能性被剖析。这样,您将获得类似于LRT的CI。您的计算是正确的,但应构成Wald CI。我在下面的答案中有更多信息。
gung-恢复莫妮卡

在更仔细地阅读后,我投票了。说得通。
hard2fathom 2015年

Answers:


64

使用广义线性模型,可以运行三种不同类型的统计检验。它们是:Wald检验,似然比检验和得分检验。优秀的UCLA统计帮助站点在此处对它们进行了讨论。下图(从其站点复制)有助于说明它们:

在此处输入图片说明

  1. zNNN
  2. 似然比检验着眼于最大和零值时的似然比(或对数似然差)。通常认为这是最好的测试。
  3. 得分测试是基于似然性中的空值的斜率。通常情况下,这种方法的功能不那么强大,但是有时无法计算出全部可能性,因此这是一个不错的后备选项。

summary.glm()confint()profile()1.96χ2

Nppα=.05.05

下面,我在线性预测变量的范围内剖析系数,并明确地(通过anova.glm())进行似然比检验。我得到与您相同的结果:

library(MASS)
x = matrix(c(343-268,268,73-49,49), nrow=2, byrow=T);  x
#      [,1] [,2]
# [1,]   75  268
# [2,]   24   49
D = factor(c("N","Diabetes"), levels=c("N","Diabetes"))
m = glm(x~D, family=binomial)
summary(m)
# ...
# Coefficients:
#             Estimate Std. Error z value Pr(>|z|)    
# (Intercept)  -1.2735     0.1306  -9.749   <2e-16 ***
# DDiabetes     0.5597     0.2813   1.990   0.0466 *  
# ...
confint(m)
# Waiting for profiling to be done...
#                    2.5 %    97.5 %
# (Intercept) -1.536085360 -1.023243
# DDiabetes   -0.003161693  1.103671
anova(m, test="LRT")
# ...
#      Df Deviance Resid. Df Resid. Dev Pr(>Chi)  
# NULL                     1     3.7997           
# D     1   3.7997         0     0.0000  0.05126 .
chisq.test(x)
#         Pearson's Chi-squared test with Yates' continuity correction
# 
# X-squared = 3.4397, df = 1, p-value = 0.06365

正如@JWilliman在注释(现已删除)中指出的那样R,您还可以使用来获得基于分数的p值anova.glm(model, test="Rao")。在下面的示例中,请注意,p值与上面的卡方检验不太一样,因为默认情况下,Rchisq.test()应用连续性校正。如果我们更改该设置,则p值将匹配:

anova(m, test="Rao")
# ...
#      Df Deviance Resid. Df Resid. Dev   Rao Pr(>Chi)  
# NULL                     1     3.7997                 
# D     1   3.7997         0     0.0000 4.024  0.04486 *
chisq.test(x, correct=FALSE)
#   Pearson's Chi-squared test
# 
# data:  x
# X-squared = 4.024, df = 1, p-value = 0.04486

12
+1这是一个非常有用的分析,可以清晰,权威地解决一些神秘的行为,并提供有用的指导。
whuber

恭喜的回答是,尽管我不理解您的意思,“我想说您的数据按照传统标准并不是很'重要'”。
mark999 2015年

@ mark999,此处最可靠的测试(LRT和卡方)均略高于.05。
gung-恢复莫妮卡
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.