使用 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
在这里,findInt
只需要获取模型和特定的目标值,并返回一个函数,uniroot
可以解决0以找到您的解。
predict
中加入type="response"
,这样你就可以返回概率而不是对数几率。 - eipi10findInt
函数应该是解决x的最简单方法。 - hsllm
或glm
的情况下找到这样的值。换句话说,我们是否可以直接找到对应于在R
中定义的数学函数的x值? - David C.mpg
问题:mpg = (log(p/(1-p)) - coef(model)[1])/coef(model)[2]
log(p/(1-p)) = a + b*mpg
当 vs
=1 时的概率为 p
,截距为 a
,mpg
的系数为 b
。从模型拟合结果(只需键入 model
或 summary(model)
)中,我们可以看到 a = -8.8331,b = 0.4304。我们想要在 p
=0.5 时找到 mpg
。因此,我们需要解决的方程式是:
log(0.5/(1-0.5)) = -8.331 + 0.4304*mpg
log(1) = 0 = -8.331 + 0.4303*mpg
mpg = 8.8331/0.4304 = 20.523
通常来说,为了解决任何 p
的值所对应的 mpg
:
mpg = (log(p/(1-p)) + 8.8331)/0.4304
mpg = (log(p/(1-p)) - coef(model)[1])/coef(model)[2]