【问题标题】:predict() for glm.fit does not work. why?glm.fit 的 predict() 不起作用。为什么?
【发布时间】:2013-06-21 22:41:09
【问题描述】:

我在 R 中使用 glm.fit() 函数构建了 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

【问题讨论】:

  • 您尝试阅读?predict.glm 吗?变量x 是您想要预测响应的数据吗? s=0.005 的论点是什么?此外,您需要将数据作为数据框提供predict.glm,其变量名称与您用于构建glm 的数据相对应。
  • 投票结束太模糊(或者可能太困惑?)无法回答。也许,如果可以对其进行编辑以包含正确输入的示例,您可以将其从遗忘中拯救出来。顺便说一句,当 lm.fit 可用时,为什么要使用 glm(...,family="gaussian")

标签: r prediction glm


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-25
    • 1970-01-01
    • 1970-01-01
    • 2014-06-20
    • 2013-03-07
    • 2019-08-06
    • 2016-07-05
    相关资源
    最近更新 更多