我很难理解logistic回归的结果。我的结果变量是Decision
,是二进制变量(分别为0或1,而不是接受或接受产品)。
我的预测变量是Thoughts
,是连续的,可以是正的,也可以是负的,并且被舍入到小数点的第二位。
我想知道,当Thoughts
发生变化时,接受产品的可能性是如何变化的。
logistic回归方程为:
glm(Decision ~ Thoughts, family = binomial, data = data)
根据该模型,Thought
s对Decision
概率有显著影响(b = .72,p= .02)。确定Decision
作为Thoughts
函数的比特率
exp(coef(results))
赔率比= 2.07。
问题:
1. Does an odds ratio of 2.07 imply that a .01 increase (or decrease) in `Thoughts` affect the odds of taking (or not taking) the product by 0.07 **OR**
2. Does it imply that as `Thoughts` increases (decreases) by .01, the odds of taking (not taking) the product increase (decrease) by approximately 2 units?
Thoughts
的比数比转换为Decision
的估计概率?
或者,我只能在一定的Decision
分数下估计Thoughts
的概率(即,计算Thoughts == 1
时获得产品的估计概率)?发布于 2017-01-03 18:08:46
R中的logistic回归返回的系数是logit,或者是赔率的对数。要将逻辑转换为比数比,您可以像上面所做的那样对其进行指数化。要将逻辑转换为概率,可以使用函数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
所显示的系数用于逻辑,就像在您的示例中一样。如果我们绘制这些数据和这个模型,我们就会看到一个符合二项式数据的逻辑模型的特征。
#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))
请注意,概率的变化并不是恒定的--曲线一开始慢慢上升,然后在中间更快地上升,然后在最后达到水平。10和12之间的概率差异远小于12和14之间的概率差异,这意味着如果不转换概率,就不可能用一个数字概括年龄和概率之间的关系。
要回答你的具体问题:
你如何解释赔率比?
截距值的优势比是当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))
发布于 2017-01-08 21:16:31
概率和概率是两种不同的衡量标准,它们都涉及到衡量将要发生的事件的可能性的相同目标。他们不应该互相比较,只应该在他们之间!
当使用“优势比”(odds1 / odds2)比较两个预测值的概率(同时保持其他值不变)时,同样的概率过程称为“风险比”(probability1 / probability2)。
一般来说,当涉及到比率时,比概率更有利,因为概率限制在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
被5
增加时,响应5
发生的可能性是5
的55倍。
如果您想用模型预测概率,那么在预测模型时只需使用type = response
即可。这将自动将日志赔率转换为概率。然后,您可以从计算的概率中计算风险比率。有关更多详细信息,请参阅?predict.glm
。
发布于 2020-07-31 14:15:44
我找到了这个epiDisplay包,很好用!它可能对其他人有用,但请注意,您的置信区间或确切结果将因所使用的包而异,因此最好阅读包的详细信息,并选择适合您的数据的详细信息。
下面是一个示例代码:
library(epiDisplay)
data(Wells, package="carData")
glm1 <- glm(switch~arsenic+distance+education+association,
family=binomial, data=Wells)
logistic.display(glm1)
https://stackoverflow.com/questions/41384075
复制相似问题