我在mgcv中遇到错误,我无法弄清楚它来自哪里 从。设置如下:我有一个适合的GAM对象叫 “MI”,以及“预测数据”的矢量(默认值为 预测)。我将它提供给predict.gam(object,newdata = whatever) 通过以下功能:
makepred = function(varstochange,val){
for (i in 1:length(varstochange)){
if (varstochange[i] == "pot.trial"){j=1}
if (varstochange[i] == "year"){j=2}
if (varstochange[i] == "crop.legume"){j=3}
if (varstochange[i] == "crop.fruit"){j=4}
if (varstochange[i] == "feedstock"){j=5}
if (varstochange[i] == "BCAR.imp"){j=8}
if (varstochange[i] == "INAR.imp"){j=9}
if (varstochange[i] == "bcph.imp"){j=10}
if (varstochange[i] == "phi.imp"){j=11}
if (varstochange[i] == "htt.imp"){j=12}
if (varstochange[i] == "bc.prc.C.imp"){j=13}
if (varstochange[i] == "CEC.imp"){j=14}
if (varstochange[i] == "soc.imp"){j=15}
if (varstochange[i] == "sand.imp"){j=16}
if (varstochange[i] == "clay.imp"){j=17}
if (varstochange[i] == "abslat.imp"){j=18}
preddat[j] = val[i]
}
predict.gam(MI,newdata=preddat,se.fit=TRUE)
}
然后我做出如下预测:
a = makepred(c("phi.imp","bcph.imp","year"),c(4.5,7.25,1))
b = makepred(c("phi.imp","bcph.imp","year"),c(5.5,7.25,1))
c = makepred(c("phi.imp","bcph.imp","year"),c(6.5,7.25,1))
d = makepred(c("phi.imp","bcph.imp","year"),c(7.5,7.25,1))
makepHplot(a,b,c,d,title="1st harvest, BC pH = 7.25")
其中“makepHplot”是我所做的不同功能。
这已经有一段时间了。然后我向模型添加了一些数据 并稍微改变了规格。现在我收到此错误消息:
1> a = makepred(c("bcph.imp","year"),c(7.5,1))
Error in PredictMat(object$smooth[[k]], data) :
`by' variable must be same dimension as smooth arguments
我从来没有用旧装的模型得到这个消息(但仍然没有) 怎么了?我不知道错误信息意味着什么,我无法弄清楚新的拟合模型 造成这个问题。输入“PredictMat”对我没有帮助,也没有 谷歌。问题不在于所有变量都不在 预测数据。
非常感谢这里的任何帮助。
(关于在R-help上交叉发布的道歉)
还值得注意的是,我在输入缺失数据后多次使用此模型,然后使用Rubin规则组合输出。但这不应该是相关的 - 我使用任何一个组成拟合模型而不是组合版本得到相同的错误
问题已解决:问题是“trialid”是一个因子变量,其级别不包括“1”。当我将preddat中的trialid设置为其他东西时,它可以工作。我设置模型的方式,将随机效果与dummy = 0相互作用,这个变量没有效果,但是mgcv仍然需要它来做预测。