【问题标题】:Error when predicting new fitted values from R gamlss object从 R gamlss 对象预测新拟合值时出错
【发布时间】:2017-03-12 00:51:18
【问题描述】:

我有一个 gamlss 模型,我想用它来做出新的 y 预测(和置信区间),以便可视化模型与真实数据的拟合程度。我想根据随机预测值的新数据集(而不是原始数据)进行预测,但我遇到了错误消息。下面是一些示例代码:

library(gamlss)    

# example data
irr <- c(0,0,0,0,0,0.93,1.4,1.4,2.3,1.5)
lite <- c(0,1,2,2.5)
blck <- 1:8
raw <- data.frame(
   css =abs(rnorm(500, mean=0.5, sd=0.1)),
   nit =abs(rnorm(500, mean=0.72, sd=0.5)),
   irr =sample(irr, 500, replace=TRUE),
   lit =sample(lite, 500, replace=TRUE),
   block =factor(sample(blck, 500, replace=TRUE))
)

# the model
mod <- gamlss(css~nit + irr + lit + random(block), 
       sigma.fo=~irr*nit + random(block), data=raw, family=BE)

# new data (predictors) for making css predictions
pred <- data.frame(
nit =abs(rnorm(500, mean=0.72, sd=0.5)),
irr =sample(irr, 500, replace=TRUE),
lit =sample(lite, 500, replace=TRUE),
block =factor(sample(blck, 500, replace=TRUE))
)

# make predictions
predmu <- predict(mod, newdata=pred, what="mu", type="response")

这会产生以下错误:

Error in data[match(names(newdata), names(data))] : 
  object of type 'closure' is not subsettable

当我在我的真实数据上运行它时,它会给出稍微不同的错误:

Error in `[.data.frame`(data, match(names(newdata), names(data))) : 
  undefined columns selected

当我使用 predict 而不使用 newdata 时,它可以很好地对原始数据进行预测,如下所示:

predmu <- predict(mod, what="mu", type="response")

我使用预测错误吗?任何建议都非常感谢!谢谢。

【问题讨论】:

    标签: r predict gam


    【解决方案1】:

    不,你没有错。我遇到过同样的问题。

    文档表明 predict 的实现不完整。这似乎是一个不完整的特性/功能的例子。

    【讨论】:

    • 无赖!好吧,感谢@Hedgehog 的验证和信息!从那以后,我将这个模型移到了 lmer() 中,它适用于它。但是为 gamlss 解决这个问题会很有帮助。
    • 抱歉,在实施完成之前,您将得到尽可能接近的答案。
    【解决方案2】:

    Hedgehog 提到基于新数据的预测尚不可能。 BonnieM 因此将模型“移动”到 lmer() 中。

    我想进一步评论这个想法: BonniM 尝试根据对象mod得到预测

    mod <- gamlss(css~nit + irr + lit + random(block), 
       sigma.fo=~irr*nit + random(block), data=raw, family=BE)
    

    “Moving into lme()”在这种情况下可能如下所示:

    mod2 <- gamlss(css~nit + irr + lit + re(random=~1|block), 
                   sigma.fo=~irr*nit + re(random=~1|block), 
                   data=raw, 
                   family=BE)
    

    基于mod2 的新数据预测在 gamlss2 包中实现。 此外,modmod2 应该是相同的模型。 看: Stasinopoulos, M. D., Rigby, R. A., Heller, G. Z., Voudouris, V., & De Bastiani, F. (2017)。灵活的回归和平滑:在 R. Chapman 和 Hall/CRC 中使用 GAMLSS。第10.9.1章

    最好的问候 凯

    【讨论】:

      【解决方案3】:

      我在这个方向上遇到了很多随机问题,并发现使用权重参数进行拟合,并将一些额外的虚拟观察设置为权重为零(但我感兴趣的预测变量)是一种解决方法。

      【讨论】:

        【解决方案4】:

        通过确保 newdata 参数的新数据具有与运行 gamlss 模型时使用的完全相同的列结构,我能够克服未定义列选择错误。

        【讨论】:

          猜你喜欢
          • 2018-07-29
          • 2022-12-19
          • 1970-01-01
          • 2019-07-10
          • 2017-04-07
          • 1970-01-01
          • 1970-01-01
          • 2017-11-26
          • 2017-09-05
          相关资源
          最近更新 更多