我使用glm.fit()函数在R中构建了glm模型:
m <- glm.fit(x = as.matrix(df[,x.id]), y = df[,y.id], family = gaussian())
之后,我尝试做一些预测,使用(我不确定我是否正确选择了):
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并事后预测。为什么有可能?如何正确选择?
N.B。如果使用glm()函数,可以省略该问题。但glm()函数要求公式,在某些情况下这不太方便。如果有人想使用glm.fit&amp;之后的预测这里有一些解决方案:https://stat.ethz.ch/pipermail/r-help/2004-September/058242.html
答案 0 :(得分:7)
你应该使用glm而不是glm.fit。 glm.fit是glm的主力,但glm返回c类的对象(&#34; glm&#34;,&#34; lm&#34;),其中有一个predict.glm方法。然后你只需要对glm返回的对象应用预测(可能指定了一些新数据和你想要的预测类型),通用预测函数将选择正确的方法函数。