问题描述
我在 mgcv
中安装了 GAM
# This code runs fine
l9 <- gam(length_t ~
tagged +
sex_t0 +
s(age.x,by = tagged,k = 6) +
s(age.x,by = sex_t0,k = 6) +
s(scale_id,bs = "re") +
s(age.x,scale_id,bs = "re"),data = long,method = "REML")
我现在想从我的拟合模型中获取指定数据的后验图。 我创建新数据
# This code runs fine
pred.dat <- data.frame(tagged = c(rep(0,752),rep(1,752)),sex_t0 = c(rep("f",376),rep("m",rep("f",376)),age.x = c(rep(seq(9,384,1),4)),scale_id = rep(1,1504))
pred.dat$tagged <- factor(pred.dat$tagged)
pred.dat$sex_t0 <- factor(pred.dat$sex_t0)
pred.dat$scale_id <- factor(pred.dat$scale_id)
然后尝试从我的拟合模型中获取指定数据的后验图。请注意,下面的 fitted_samples()
函数来自美妙的 gratia
包。
# This code get error
pd1 <- fitted_samples(l9,n = 100,newdata = pred.dat,seed = 10)
error: chol(): decomposition Failed
Error in rmvn(n = n,mu = coef(model),sigma = V,ncores = ncores) :
chol(): decomposition Failed
在线报告了许多类似的错误(例如here、here 和here)。但是,我没有发现任何与 gratia
包或 fitted_samples()
函数相关的类似错误。我怀疑 fitted_samples()
在某处内部调用 chol()
函数,并且传递给 chol()
的矩阵中的值可能并非都是正定的。我注意到 chol()
的 help page 表明“如果 x 不是正定的,则会发出错误信号” - 到目前为止,这一切意味着什么以及如何解决这个问题超出了我的范围。
当使用不同但相似的结构、模型时,同样的代码对我来说运行良好。
# Model
wt9 <- gam(weight_t ~
tagged +
sex_t0 +
s(age.x,k = 5) +
s(age.x,k = 5) +
s(scale_id,method = "REML")
# Create data
pred.dat <- data.frame(tagged = c(rep(0,1504))
pred.dat$tagged <- factor(pred.dat$tagged)
pred.dat$sex_t0 <- factor(pred.dat$sex_t0)
pred.dat$scale_id <- factor(pred.dat$scale_id)
# Get posterior draws from my fitted model for the specified data
pd1 <- fitted_samples(wt9,seed = 10)
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)