R 中的回归(逻辑):查找特定 y 值(结果)的 x 值(预测变量)
Regression (logistic) in R: Finding x value (predictor) for a particular y value (outcome)
我已经拟合了一个逻辑回归模型,该模型从 mpg
(mtcars
数据集)预测二元结果 vs
。情节如下所示。如何确定任何特定 vs
值的 mpg
值?例如,当 vs
的概率为 0.50 时,我想知道 mpg
的值是多少。感谢任何人可以提供的任何帮助!
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)
从模型计算预测值的最简单方法是使用 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
仅采用模型和特定目标值以及 returns 一个 uniroot
可以求解 0 的函数来找到您的解决方案。
您可以直接求解mpg
,如下所示:
mpg = (log(p/(1-p)) - coef(model)[1])/coef(model)[2]
详细解释:
当你拟合回归模型时,你拟合的方程如下:
log(p/(1-p)) = a + b*mpg
其中p
是vs
=1的概率,a
是截距,b
是mpg
的系数。从模型拟合结果(只需键入 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]
我已经拟合了一个逻辑回归模型,该模型从 mpg
(mtcars
数据集)预测二元结果 vs
。情节如下所示。如何确定任何特定 vs
值的 mpg
值?例如,当 vs
的概率为 0.50 时,我想知道 mpg
的值是多少。感谢任何人可以提供的任何帮助!
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)
从模型计算预测值的最简单方法是使用 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
仅采用模型和特定目标值以及 returns 一个 uniroot
可以求解 0 的函数来找到您的解决方案。
您可以直接求解mpg
,如下所示:
mpg = (log(p/(1-p)) - coef(model)[1])/coef(model)[2]
详细解释:
当你拟合回归模型时,你拟合的方程如下:
log(p/(1-p)) = a + b*mpg
其中p
是vs
=1的概率,a
是截距,b
是mpg
的系数。从模型拟合结果(只需键入 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]