我已经使用 glm.fit() 函数在 R 中构建了 glm 模型:
m <- glm.fit(x = as.matrix(df[,x.id]), y = df[,y.id], family = gaussian())
之后,我尝试做出一些预测,使用(我不确定我是否正确选择了 s):
predict.glm(m, x, s = 0.005)
并得到一个错误:
Error in terms.default(object) : no terms component nor attribute
这里https://stat.ethz.ch/pipermail/r-help/2004-September/058242.html我找到了某种问题的解决方案:
predict.glm.fit<-function(glmfit, newmatrix){
newmatrix<-cbind(1,newmatrix)
coef <- rbind(1, as.matrix(glmfit$coef))
eta <- as.matrix(newmatrix) %*% as.matrix(coef)
exp(eta)/(1 + exp(eta))
}
但我无法弄清楚是否无法使用 glm.fit 并进行预测。为什么可能或不可能?又该如何正确选择s呢?
注意如果使用 glm() 函数可以忽略该问题。但是 glm() 函数要求公式,这在某些情况下不太方便。如果有人想在之后使用 glm.fit 和预测 这是一些解决方案 :https://stat.ethz.ch/pipermail/r-help/2004-September/058242.html
最佳答案
您应该使用 glm 而不是 glm.fit。 glm.fit 是 glm 的主力,但 glm 返回类 c("glm", "lm") 的对象,其中有一个 predict.glm 方法。然后,您只需将 predict 应用于 glm 返回的对象(可能指定一些新数据和您想要的预测类型),通用 predict 函数将选择正确的方法函数。
关于r - 用于 glm.fit 的 predict() 不起作用。为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17245345/