Sud*_*ajd 13 r probability logistic-regression
我无法解释逻辑回归的结果.我的结果变量是Decision
和二进制(0或1,分别不采取或采取产品).
我的预测变量是Thoughts
并且是连续的,可以是正数或负数,并且向上舍入到第二个小数点.
我想知道服用产品的概率是如何Thoughts
变化的.
逻辑回归方程是:
glm(Decision ~ Thoughts, family = binomial, data = data)
Run Code Online (Sandbox Code Playgroud)
根据该模型,Thought
s对Decision
(b = .72,p = .02)的概率具有显着影响.确定Decision
作为以下函数的比值比Thoughts
:
exp(coef(results))
Run Code Online (Sandbox Code Playgroud)
优势比= 2.07.
问题:
我如何解释比值比?
Thoughts
会影响服用(或不服用)产品的几率0.07 OR Thoughts
增加(减少).01,服用(不服用)产品的几率增加(减少)约2个单位?如何将比值比转换Thoughts
为估计的概率Decision
?
或者我只能估计Decision
某一Thoughts
分数的概率(即计算产品何时获得的概率Thoughts == 1
)?
tri*_*dle 36
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)
Run Code Online (Sandbox Code Playgroud)
返回:
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
Run Code Online (Sandbox Code Playgroud)
显示的系数用于记录,就像在您的示例中一样.如果我们绘制这些数据和这个模型,我们会看到Sigmoidal函数是符合二项式数据的逻辑模型的特征
#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))
Run Code Online (Sandbox Code Playgroud)
请注意,概率的变化不是恒定的 - 曲线首先缓慢上升,然后在中间更快,然后在结束时趋于平缓.10和12之间的概率差异远小于12和14之间概率的差异.这意味着在不转换概率的情况下,不可能将年龄和概率的关系概括为一个数字.
回答您的具体问题:
截距值的优势比是当x = 0(即零思考)时"成功"(在您的数据中,这是获取产品的几率)的几率.系数的优势比是当你添加一个整数x值(即x = 1;一个想法)时,在截距值之上的几率增加.使用月经初潮数据:
exp(coef(m))
(Intercept) Age
6.046358e-10 5.113931e+00
Run Code Online (Sandbox Code Playgroud)
我们可以将此解释为年龄= 0时初潮发生的几率为.00000000006.或者,基本上不可能.指望年龄系数告诉我们每个单位年龄的初潮几率的预期增加.在这种情况下,它只是一个五倍.比值比为1表示没有变化,而比值比为2表示加倍等.
您的优势比为2.07意味着"思考"增加1个单位会使产品的使用率提高2.07倍.
您需要对选定的思想值执行此操作,因为正如您在上图中所看到的,在x值范围内变化不是恒定的.如果你想要一些思想值的概率,得到如下答案:
exp(intercept + coef*THOUGHT_Value)/(1+(exp(intercept+coef*THOUGHT_Value))
Run Code Online (Sandbox Code Playgroud)
赔率和概率是两种不同的衡量标准,都是针对衡量事件发生可能性的相同目标.它们不应相互比较,只能相互比较!
虽然使用"比值比"(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
Run Code Online (Sandbox Code Playgroud)
在这里,您可以简单地指定连续变量的增量,并查看产生的优势比.在此示例中,admit
当预测变量gpa
增加时,响应的可能性是55倍5
.
如果要使用模型预测概率,只需type = response
在预测模型时使用.这将自动将日志赔率转换为概率.然后,您可以根据计算的概率计算风险比.有关?predict.glm
详细信息,请参阅