我使用mgcv软件包运行gam模型时,遇到了一个奇怪的错误信息,我无法理解:
"在model.frame.default(公式= death ~ pm10 + Lag(resid1, 1)+:variable lengths differ(found for 'Lag(resid1, 1)')"。
在model1中使用的观测值数量与偏差残差的长度完全相同,因此我认为这个错误与数据大小或长度的差异无关。
我在网上找到了一条相关的错误信息(链接),但是那篇帖子没有得到充分的答案,所以对我的问题没有帮助。
可重复的示例和数据如下:
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)
这两个模型产生了相同的错误信息。
na.omit
。也许长度不同是由于观察到一个 NA 值被删除。 - joranna.omit
。请注意,df
有5114行,而resid1
的长度仅为4863。确实正在删除NA值。尝试先删除NA值。然后您的残差向量将与原始数据框匹配。 - joran