在使用 mgcv 包运行 gam 模型时,我遇到了一个我无法理解的奇怪错误消息:
“model.frame.default 中的错误(公式 = 死亡 ~ pm10 + Lag(resid1, 1) + :可变长度不同(为 'Lag(resid1, 1)' 找到)”。
model1 中使用的观察次数与偏差残差的长度完全相同,因此我认为这个误差与数据大小或长度的差异无关。
我在网上找到了一个相当相关的错误消息here,但该帖子没有得到足够的答案,所以它对我的问题没有帮助。
可重现的示例和数据如下:
library(quantmod)
library(mgcv)
require(dlnm)
df <- chicagoNMMAPS
df1 <- df[,c("date","dow","death","temp","pm10")]
df1$trend<-seq(dim(df1)[1]) ### Create a time trend
运行模型
model1<-gam(death ~ pm10 + s(trend,k=14*7)+ s(temp,k=5),
data=df1, na.action=na.omit, family=poisson)
获得偏差残差
resid1 <- residuals(model1,type="deviance")
为模型 1 添加一天滞后的偏差
model1_1 <- update(model1,.~.+ Lag(resid1,1), na.action=na.omit)
model1_2<-gam(death ~ pm10 + s(trend,k=14*7)+ s(temp,k=5) + Lag(resid1,1), data=df1,
na.action=na.omit, family=poisson)
这两种模型都产生了相同的错误消息。