首页 文章

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

提问于
浏览
8

我无法解释逻辑回归的结果 . 我的结果变量是 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 .

问题:

  • 如何解释比值比?

  • 优势比为2.07意味着 Thoughts 的.01增加(或减少)会影响服用(或不服用)产品的几率0.07 OR

  • 这是否意味着当 Thoughts 增加(减少).01时,服用(不服用)产品的几率增加(减少)约2个单位?

  • 如何将 Thoughts 的优势比转换为 Decision 的估计概率?
    或者我可以仅估算 Thoughts 得分的概率(即计算 Thoughts == 1 时估计的产品概率)?

2 回答

  • 23

    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
    

    显示的系数用于logits,就像在您的示例中一样 . 如果我们绘制这些数据和这个模型,我们会看到符合二项式数据的逻辑模型特征的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之间概率的差异 . 这意味着在不转换概率的情况下,不可能将年龄和概率的关系概括为一个数字 .

    回答您的具体问题:

    你如何解释比值比?

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

    exp(coef(m))
    
     (Intercept)          Age 
    6.046358e-10 5.113931e+00
    

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

    Your odds ratio of 2.07 implies that a 1 unit increase in 'Thoughts' increases the odds of taking the product by a factor of 2.07.

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

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

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

    赔率和概率是两种不同的衡量标准,两者都是针对衡量事件发生可能性的相同目标 . 它们不应相互比较,只能相互比较!
    虽然使用"odds ratio"(odds1 / odds2)比较两个预测值的几率(同时保持其他值不变),但概率的相同过程称为"risk ratio"(probability1 / probability2) .

    通常, odds are preferred against probability when it comes to ratios 因为概率被限制在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
    

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

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

相关问题