R-INLA拟合值边际后验marginals.fitted.values返回NULL问题排查
问题核心原因
你缺失了保存拟合值边际后验的专属配置项。control.predictor中的compute = TRUE仅触发拟合值汇总统计量的计算(也就是你能正常调取的summary.fitted.values中的均值、分位数等结果),R-INLA为了避免大样本场景下返回对象占用内存过高,默认不会把所有观测对应的完整边际后验密度数据存入返回对象,这就是你能看到汇总统计但marginals.fitted.values返回NULL的直接原因。
修正后的配置方案
你需要在control.predictor参数中新增return.marginals.predictor = TRUE配置,修改后的模型运行代码如下:
boston.iid <- inla(update(boston.form, . ~. + f(ID, model = "iid")), data = as.data.frame(boston.tr), control.compute = list(dic = TRUE, waic = TRUE, cpo = TRUE), control.predictor = list(compute = TRUE, return.marginals.predictor = TRUE) )
结果验证
模型运行完成后,即可通过boston.iid$marginals.fitted.values调取所有观测对应的拟合值边际后验列表,每个元素对应一条观测的密度点集,可配合inla.dmarginal()、inla.qmarginal()等INLA内置函数做自定义后验统计计算。
内容的提问来源于stack exchange,提问作者m.evans
相关产品推荐
相关产品推荐

