使用predict()
可以获得给定模型的自变量(y
)的特定值的因变量(x
)的预测值。是否有任何函数可以为给定的x
预测y
?
例如:
kalythos <- data.frame(x = c(20,35,45,55,70),
n = rep(50,5), y = c(6,17,26,37,44))
kalythos$Ymat <- cbind(kalythos$y, kalythos$n - kalythos$y)
model <- glm(Ymat ~ x, family = binomial, data = kalythos)
如果我们想知道x=50
的模型的预测值:
predict(model, data.frame(x=50), type = "response")
我想知道哪个x
会y=30
。
答案 0 :(得分:9)
看到上一个答案被删除。在你的情况下,给定n = 50并且模型是二项式,你将使用:
计算给定y的xf <- function (y,m) {
(logit(y/50) - coef(m)[["(Intercept)"]]) / coef(m)[["x"]]
}
> f(30,model)
[1] 48.59833
但是这样做时,最好咨询一位统计学家,向您展示如何计算逆预测区间。请考虑VitoshKa的考虑因素。
答案 1 :(得分:1)
你只需要重新安排回归方程,但正如上面的评论所述,这可能证明是棘手的,不一定有一个有意义的解释。
但是,对于您提供的案例,您可以使用:
(1/coef(model)[2])*(model$family$linkfun(30/50)-coef(model)[1])
注意我首先按x
系数进行除法,以使name属性正确。
答案 2 :(得分:1)
chemcal包具有inverse.predict()
功能,适用于y ~ x
和y ~ x - 1
答案 3 :(得分:1)
遇到这个旧线程,但我想我会添加一些其他信息。包MASS具有logit / probit模型的功能dose.p。 SE是通过delta方法。
> dose.p(model,p=.6)
Dose SE
p = 0.6: 48.59833 1.944772
拟合逆模型(x~y)在这里没有意义,因为正如@VitoshKa所说,我们假设x是固定的,而y(0/1响应)是随机的。此外,如果数据没有分组,你只有解释变量的2个值:0和1.但即使我们假设x是固定的,计算给定p的剂量x的置信区间仍然是有意义的,与@VitoshKa所说的相反。就像我们可以根据ED50重新参数化模型一样,我们可以对ED60或任何其他分位数进行重新参数化。参数是固定的,但我们仍然为它们计算CI。
答案 4 :(得分:0)
只需快速查看(无间隔并考虑其他问题),您可以使用TeachingDemos包中的TkPredict函数。它不会直接执行此操作,但允许您动态更改x值并查看预测的y值是什么,因此移动x直到找到所需的Y非常简单(对于给定的附加值) x's),这也将显示多个x的问题可能适用于相同的y。