hsl*_*hsl 8 regression r linear-regression predict logistic-regression
我装逻辑回归模型预测的二元结果vs的mpg(mtcars数据集).情节如下所示.如何确定mpg任何特定vs值的值?例如,我有兴趣在mpg概率vs为0.50 时找出值是什么.感谢任何人都能提供的帮助!
model <- glm(vs ~ mpg, data = mtcars, family = binomial)
ggplot(mtcars, aes(mpg, vs)) +
geom_point() +
stat_smooth(method = "glm", method.args = list(family = "binomial"), se = FALSE)
Run Code Online (Sandbox Code Playgroud)
从模型中计算预测值的最简单方法是使用该predict()函数.然后,您可以使用数值解算器来查找特定截距.例如
findInt <- function(model, value) {
function(x) {
predict(model, data.frame(mpg=x), type="response") - value
}
}
uniroot(findInt(model, .5), range(mtcars$mpg))$root
# [1] 20.52229
Run Code Online (Sandbox Code Playgroud)
这里findInt只取模型和特定目标值,并返回一个uniroot可以求解0 的函数来找到您的解决方案.
您可以mpg直接解决,如下所示:
mpg = (log(p/(1-p)) - coef(model)[1])/coef(model)[2]
Run Code Online (Sandbox Code Playgroud)
详细说明:
当您拟合回归模型时,您要拟合的方程式如下:
log(p/(1-p)) = a + b*mpg
Run Code Online (Sandbox Code Playgroud)
,其中= 1 p的概率是截距,并且是的系数。从模型拟合结果(只是类型或)中,我们看到a = -8.8331和b = 0.4304。我们想找出何时= 0.5。因此,我们需要解决的方程是:vsabmpgmodelsummary(model)mpgp
log(0.5/(1-0.5)) = -8.331 + 0.4304*mpg
log(1) = 0 = -8.331 + 0.4303*mpg
Run Code Online (Sandbox Code Playgroud)
重新排列
mpg = 8.8331/0.4304 = 20.523
Run Code Online (Sandbox Code Playgroud)
通常,要解决mpg以下任何值p:
mpg = (log(p/(1-p)) + 8.8331)/0.4304
Run Code Online (Sandbox Code Playgroud)
或者,使其更容易重现:
mpg = (log(p/(1-p)) - coef(model)[1])/coef(model)[2]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4156 次 |
| 最近记录: |