4

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

4

1 回答 1

7

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

于 2013-06-22T17:13:29.660 回答