使用predict()可以得到因变量(y)对于给定模型的自变量(x)的某一值的预测值。有没有什么函数可以预测给定y的x
例如:
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。
发布于 2010-11-16 18:38:51
看到之前的答案被删除了。在您的示例中,给定n=50,并且模型为二项式,则可以使用以下命令计算给定y的x:
f <- function (y,m) {
(logit(y/50) - coef(m)[["(Intercept)"]]) / coef(m)[["x"]]
}
> f(30,model)
[1] 48.59833但在这样做的时候,你最好咨询统计学家,告诉你如何计算反向预测区间。请将VitoshKa的考虑因素考虑在内。
发布于 2017-09-26 04:49:07
偶然发现了这个老帖子,但我想我会添加一些其他信息。对于logit/probit模型,包MASS具有函数dose.p。SE是通过增量方法实现的。
> dose.p(model,p=.6)
Dose SE
p = 0.6: 48.59833 1.944772拟合反模型(x~y)在这里没有意义,因为正如@VitoshKa所说,我们假设x是固定的,y( 0/1响应)是随机的。此外,如果数据没有分组,你只有两个解释变量的值:0和1。但是,即使我们假设x是固定的,计算给定p的剂量x的置信区间仍然是有意义的,这与@VitoshKa所说的相反。就像我们可以根据ED50重新参数化模型一样,我们可以对ED60或任何其他分位数执行此操作。参数是固定的,但我们仍然计算它们的CI。
发布于 2010-11-16 18:40:05
您只需重新排列回归方程,但正如上面的注释所述,这可能会被证明是棘手的,并且不一定会有有意义的解释。
但是,对于您展示的案例,您可以使用:
(1/coef(model)[2])*(model$family$linkfun(30/50)-coef(model)[1])注意,我首先除以x系数,以确保名称属性是正确的。
https://stackoverflow.com/questions/4191857
复制相似问题