R的Logistic回归(几率)


40

我正尝试在中进行逻辑回归分析R。我已经使用STATA参加了涵盖此材料的课程。我发现很难复制中的功能R。这个地区成熟吗?似乎几乎没有可用的文档或指南。生产比值比输出似乎需要安装epicalc和/或epitools和/或其他工具,我无法上班,都已过时或缺少文档。我曾经glm做过逻辑回归。欢迎大家提出意见。

我最好把这个问题变成一个真实的问题。如何进行逻辑回归并产生比值比R

这是我为单变量分析所做的工作:

x = glm(Outcome ~ Age, family=binomial(link="logit"))

对于多变量:

y = glm(Outcome ~ Age + B + C, family=binomial(link="logit"))

然后,我已经看了xysummary(x)summary(y)

x$coefficients任何价值?

Answers:


36

如果您想将估计的效果解释为相对优势比,则可以这样做exp(coef(x))(给您,如果与相关的协变量增加则的优势比的倍增变化)。对于此数量的轮廓似然区间,您可以 ÿ = 1个βeβy=1β

require(MASS)
exp(cbind(coef(x), confint(x)))  

编辑:@caracal更快...


1
为@fabian的建议+1。通常会产生相似间隔的次等方法是在对数刻度上计算间隔,然后转换为赔率刻度: cbind( exp(coef(x)), exp(summary(x)$coefficients[,1] - 1.96*summary(x)$coefficients[,2]), exp(summary(x)$coefficients[,1] + 1.96*summary(x)$coefficients[,2]) )。还有一种增量方法:ats.ucla.edu/stat/r/faq/deltamethod.htm
2011年

42

没错,R的输出通常仅包含基本信息,并且需要单独计算更多信息。

N  <- 100               # generate some data
X1 <- rnorm(N, 175, 7)
X2 <- rnorm(N,  30, 8)
X3 <- abs(rnorm(N, 60, 30))
Y  <- 0.5*X1 - 0.3*X2 - 0.4*X3 + 10 + rnorm(N, 0, 12)

# dichotomize Y and do logistic regression
Yfac   <- cut(Y, breaks=c(-Inf, median(Y), Inf), labels=c("lo", "hi"))
glmFit <- glm(Yfac ~ X1 + X2 + X3, family=binomial(link="logit"))

coefficients()给您估计的回归参数。不过,解释更容易(截距除外)。 e x p b jbjexp(bj)

> exp(coefficients(glmFit))
 (Intercept)           X1           X2           X3 
5.811655e-06 1.098665e+00 9.511785e-01 9.528930e-01

为了获得优势比,我们需要原始二分DV的分类交叉表和根据需要首先选择的某些概率阈值进行预测的分类。您还可以ClassLog()在包中看到函数QuantPsyc(如相关问题中提到的chl )。

# predicted probabilities or: predict(glmFit, type="response")
> Yhat    <- fitted(glmFit)
> thresh  <- 0.5  # threshold for dichotomizing according to predicted probability
> YhatFac <- cut(Yhat, breaks=c(-Inf, thresh, Inf), labels=c("lo", "hi"))
> cTab    <- table(Yfac, YhatFac)    # contingency table
> addmargins(cTab)                   # marginal sums
     YhatFac
Yfac   lo  hi Sum
  lo   41   9  50
  hi   14  36  50
  Sum  55  45 100

> sum(diag(cTab)) / sum(cTab)        # percentage correct for training data
[1] 0.77

对于优势比,您可以使用打包vcd或手动进行计算。

> library(vcd)                       # for oddsratio()
> (OR <- oddsratio(cTab, log=FALSE)) # odds ratio
[1] 11.71429

> (cTab[1, 1] / cTab[1, 2]) / (cTab[2, 1] / cTab[2, 2])
[1] 11.71429

> summary(glmFit)  # test for regression parameters ...

# test for the full model against the 0-model
> glm0 <- glm(Yfac ~ 1, family=binomial(link="logit"))
> anova(glm0, glmFit, test="Chisq")
Analysis of Deviance Table
Model 1: Yfac ~ 1
Model 2: Yfac ~ X1 + X2 + X3
  Resid. Df Resid. Dev Df Deviance P(>|Chi|)    
1        99     138.63                          
2        96     110.58  3   28.045 3.554e-06 ***

2
谢谢-我需要仔细阅读您的答案。在STATA中,您可以运行logitlogistic轻松获得比值比和置信区间。我有点沮丧,因为它看起来如此复杂且不规范R。我可以仅使用exp(cbind(coef(x), confint(x)))下面的fabians的答案来获得OD和CI吗?我不清楚您提供的答案是什么?
SabreWolfy 2011年

3
@SabreWolfy我不确定您指的是什么:最初,我认为您的意思是分类表中的OR,该OR表将实际类别成员资格与预测成员资格(cTab我的答案中的那部分)进行比较。但是现在我看到您可能只是在说:正如法布里安 Fabians)解释的那样,等于增加1个单位时预测赔率变化的因数。这是“增加1个单位之后”与“增加1个单位之前”的几率之比。是的,您可以使用fabians回答。e x p b jX jexp(bj)exp(bj)Xj
caracal

4
实际上@SabreWolfy我发现令人沮丧的是,人们可以在stata / sas / spss等中单击单个按钮,并获得比值比(插入拟合统计量,III型SS,无论您在此处喜欢什么),而无需了解其含义/如何计算它/在特定情况下是否有意义/(并且可能更重要)在没有语言本身实用知识的情况下。
rawr 2015年


5

epiDisplay软件包非常容易做到这一点。

library(epiDisplay)
data(Wells, package="carData")
glm1 <- glm(switch~arsenic+distance+education+association, 
            family=binomial, data=Wells)
logistic.display(glm1)
Logistic regression predicting switch : yes vs no 

                       crude OR(95%CI)         adj. OR(95%CI)         P(Wald's test) P(LR-test)
arsenic (cont. var.)   1.461 (1.355,1.576)     1.595 (1.47,1.731)     < 0.001        < 0.001   

distance (cont. var.)  0.9938 (0.9919,0.9957)  0.9911 (0.989,0.9931)  < 0.001        < 0.001   

education (cont. var.) 1.04 (1.021,1.059)      1.043 (1.024,1.063)    < 0.001        < 0.001   

association: yes vs no 0.863 (0.746,0.999)     0.883 (0.759,1.027)    0.1063         0.1064    

Log-likelihood = -1953.91299
No. of observations = 3020
AIC value = 3917.82598

有什么方法可以将逻辑显示与诸如outreg或的乳胶包装结合起来xtable吗?
信誉不佳的
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.