R:计算和解释逻辑回归中的比值比

时间:2016-12-29 17:01:56

标签: r probability logistic-regression

我无法解释逻辑回归的结果。我的结果变量是Decision并且是二进制的(0或1,不分别取或拿产品) 我的预测变量是Thoughts并且是连续的,可以是正数或负数,并且向上舍入到第二个小数点。
我想知道在Thoughts发生变化时,产品更改的可能性如何变化。

逻辑回归方程是:

glm(Decision ~ Thoughts, family = binomial, data = data)

根据此模型,Thought s对Decision的概率有显着影响(b = .72,p = .02)。确定Decision作为Thoughts函数的优势比:

exp(coef(results))

优势比= 2.07。

问题:

  1. 如何解释比值比?

    1. 比值比为2.07意味着Thoughts的.01增加(或减少)会影响服用(或不服用)产品的几率0.07 OR
    2. 这是否意味着当Thoughts增加(减少)0.01时,服用(不服用)产品的几率会增加(减少)约2个单位?
  2. 如何将Thoughts的优势比转换为估算概率Decision
    或者,我是否只能估算某Decision分时Thoughts的概率(即计算Thoughts == 1时产品的估计概率?

4 个答案:

答案 0 :(得分:30)

r中逻辑回归返回的系数是logit或赔率的对数。要将logits转换为优势比,您可以对其进行取幂,就像您上面所做的那样。要将logits转换为概率,可以使用函数exp(logit)/(1+exp(logit))。但是,有一些事情需要注意这个过程。

首先,我将使用一些可重现的数据来说明

library('MASS')
data("menarche")
m<-glm(cbind(Menarche, Total-Menarche) ~ Age, family=binomial, data=menarche)
summary(m)

返回:

Call:
glm(formula = cbind(Menarche, Total - Menarche) ~ Age, family = binomial, 
    data = menarche)

Deviance Residuals: 
    Min       1Q   Median       3Q      Max  
-2.0363  -0.9953  -0.4900   0.7780   1.3675  

Coefficients:
             Estimate Std. Error z value Pr(>|z|)    
(Intercept) -21.22639    0.77068  -27.54   <2e-16 ***
Age           1.63197    0.05895   27.68   <2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 3693.884  on 24  degrees of freedom
Residual deviance:   26.703  on 23  degrees of freedom
AIC: 114.76

Number of Fisher Scoring iterations: 4

显示的系数用于记录,就像在您的示例中一样。如果我们绘制这些数据和这个模型,我们会看到符合二项式数据的逻辑模型特征的S形函数

#predict gives the predicted value in terms of logits
plot.dat <- data.frame(prob = menarche$Menarche/menarche$Total,
                       age = menarche$Age,
                       fit = predict(m, menarche))
#convert those logit values to probabilities
plot.dat$fit_prob <- exp(plot.dat$fit)/(1+exp(plot.dat$fit))

library(ggplot2)
ggplot(plot.dat, aes(x=age, y=prob)) + 
  geom_point() +
  geom_line(aes(x=age, y=fit_prob))

enter image description here

请注意,概率的变化不是恒定的 - 曲线首先缓慢上升,然后在中间更快,然后在结束时趋于平稳。 10和12之间概率的差异远小于12和14之间概率的差异。这意味着在不转换概率的情况下,用一个数字概括年龄和概率的关系是不可能的。

回答您的具体问题:

你如何解释比值比?

截距值的优势比是成功的几率&#34; (在你的数据中,这是获取产品的几率)当x = 0时(即零想法)。你的系数的优势比是当你加一个整数x值时(即x = 1;一个想法),在截距值之上的几率增加。使用月经初潮数据:

exp(coef(m))

 (Intercept)          Age 
6.046358e-10 5.113931e+00 

我们可以将此解释为年龄= 0时初潮发生的几率为.00000000006。或者,基本上不可能。指望年龄系数告诉我们每个单位年龄的初潮几率的预期增加。在这种情况下,它只是一个五倍。比值比为1表示没有变化,而比值比为2表示加倍等。

您的比值比为2.07意味着“思考”中的比例增加了1个单位。使产品服用的几率提高2.07。

如何将思路的比值比转换为估计的决策概率?

您需要针对选定的思维值执行此操作,因为正如您在上图中所看到的,更改在x值范围内不是恒定的。如果你想要一些思考值的概率,请得到如下答案:

exp(intercept + coef*THOUGHT_Value)/(1+(exp(intercept+coef*THOUGHT_Value))

答案 1 :(得分:6)

赔率和概率是两种不同的衡量标准,都是针对衡量事件发生可能性的相同目标。它们不应相互比较,只能在它们之间进行比较! 虽然使用“比值比”(odds1 / odds2)比较两个预测值的几率(同时保持其他值不变),但概率的相同过程称为“风险比”(概率1 /概率2)。

一般来说,当比率时,概率优于概率,因为概率限制在0和1之间,而赔率是从-inf到+ inf定义的。

要轻松计算优势比,包括其置信区间,请参阅oddsratio包:

library(oddsratio)
fit_glm <- glm(admit ~ gre + gpa + rank, data = data_glm, family = "binomial") 

# Calculate OR for specific increment step of continuous variable
or_glm(data = data_glm, model = fit_glm, 
       incr = list(gre = 380, gpa = 5))

  predictor oddsratio CI.low (2.5 %) CI.high (97.5 %)          increment
1       gre     2.364          1.054            5.396                380
2       gpa    55.712          2.229         1511.282                  5
3     rank2     0.509          0.272            0.945 Indicator variable
4     rank3     0.262          0.132            0.512 Indicator variable
5     rank4     0.212          0.091            0.471 Indicator variable

在这里,您可以简单地指定连续变量的增量,并查看产生的优势比。在此示例中,当预测变量admit增加gpa时,响应5的可能性增加55倍。

如果您想使用模型预测概率,只需在预测模型时使用type = response。这将自动将日志赔率转换为概率。然后,您可以根据计算的概率计算风险比。有关详细信息,请参阅?predict.glm

答案 2 :(得分:0)

我找到了这个epiDisplay包,效果很好!这可能对其他人有用,但请注意,您的置信区间或确切结果会根据所使用的数据包而有所不同,因此最好阅读这些数据包的详细信息,然后选择最适合您数据的数据。

这是示例代码:

library(epiDisplay)
data(Wells, package="carData")
glm1 <- glm(switch~arsenic+distance+education+association, 
            family=binomial, data=Wells)
logistic.display(glm1)

Source website

答案 3 :(得分:-2)

上面记录到概率的公式exp(logit)/(1 + exp(logit))可能没有任何意义。此公式通常用于将几率转换为几率。但是,在逻辑回归中,优势比更像是两个优势值之间的比率(碰巧已经是比率)。使用以上公式如何定义概率?取而代之的是,从几率中减去1来找到一个百分比值,然后将该百分比解释为在给定预测变量的情况下,结果增加/减少x百分比的几率可能更正确。