glm.fit的predict()不起作用。为什么?

时间:2013-06-21 22:41:09

标签: r prediction glm

我使用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

1 个答案:

答案 0 :(得分:7)

你应该使用glm而不是glm.fit。 glm.fit是glm的主力,但glm返回c类的对象(&#34; glm&#34;,&#34; lm&#34;),其中有一个predict.glm方法。然后你只需要对glm返回的对象应用预测(可能指定了一些新数据和你想要的预测类型),通用预测函数将选择正确的方法函数。