R中具有空间自相关的GAMM

Ep1*_*1aN 1 r spatial gam autocorrelation

据我了解,GAMM 具有随机误差或空间自相关误差结构。

我正在尝试运行具有空间自相关误差结构的 GAMM 模型,例如 corExp(参见https://stat.ethz.ch/R-manual/R-devel/library/nlme/html/corClasses.html)。

但是我对从 GAM 建模 GAMM 感到困惑。

下面是我的 GAM(广义加性模型)代码。

library(mgcv)
mod.gam <- gam(Chave~s(Band_3) + s(Band_7) + s(Band_8) + s(BaCo_3_2) + s(BaCo_5_2) + 
  s(BaCo_5_3) + s(BaCo_5_4) + s(BaCo_8_2) + s(BaCo_8A_2),data = data)
summary(mod.gam)
fits = predict(mod.gam, newdata=data, type='response')
plot(data$Chave, fits, col='blue', ylab = "Predicted AGB KNN", xlab = "Estimated AGB")
plot(mod.gam)
Run Code Online (Sandbox Code Playgroud)

我如何将其更改为 GAMM?当我尝试使用 GAMM 时(如下所述),我没有看到太大的变化:

model <- gamm(Chave~s(Band_3) + s(Band_7) + s(Band_8) + s(BaCo_3_2) +
 s(BaCo_5_2) + s(BaCo_5_3) + s(BaCo_5_4) + s(BaCo_8_2) + s(BaCo_8A_2),
 data = data, correlation=corExp(1,form = ~ Latitude + Longitude)))
summary(model$gam)
plot(model$gam,pages=1)
Run Code Online (Sandbox Code Playgroud)

据我了解,空间自相关函数应该以纬度和经度作为输入。我做得对吗?以及 GAMM 的输出与 GAM 的输出有何不同?

不同模型的输出:

model <- gamm(Chave~s(Band_3) + s(Band_7) + s(Band_8) + s(BaCo_3_2) +
 s(BaCo_5_2) + s(BaCo_5_3) + s(BaCo_5_4) + s(BaCo_8_2) + s(BaCo_8A_2),
 data = data, correlation=corExp(1,form = ~ Latitude + Longitude)))
summary(model$gam)
plot(model$gam,pages=1)
Run Code Online (Sandbox Code Playgroud)

Rei*_*son 7

我认为,你是corExp()错误地调用。你用:

corExp(1, form = ~ Latitude + Longitude)
Run Code Online (Sandbox Code Playgroud)

这是将指数相关函数中相关参数的值固定为固定值1而不是从数据中估计出来的,这可以通过使用代替

corExp(form = ~ Latitude + Longitude)
Run Code Online (Sandbox Code Playgroud)

如果来自 GAM ( gam())的残余空间相关性与平滑协变量正交或不非线性相关,您也可能看不到模型中的太大变化:相关函数通过响应的协方差结构进入模型,而不是通过平均结构。

如果你想看看从残差gamm()包括相关函数的效果,那么你需要使用:

resid(model$lme, type = "normalized")
Run Code Online (Sandbox Code Playgroud)

此外,如果您想比较具有和不具有结构的模型,则需要在模型anova()$lme组件上使用,因此您需要使用 重新gam()拟合模型gamm(),只需去掉correlation部分即可。然后anova(mod1$lme, mod2$lme)将为您提供指数相关函数中参数的广义似然比检验。

  • 它们可能是相同的模型,但使用不同的算法和参数化进行估计。检查 GAMM 模型是否在模型的“$gam”部分上使用“summary()”估计相同的平滑度。您需要查看具有空间相关性的 GAMM 的“$lme”组件上的“intervals()”,以检查相关参数的点估计和间隔。并使用 anova(mod1$lme, mod2$lme) 来比较带有和不带有相关函数的 GAMM 模型。不要使用 R^2 来评估哪个模型最好。 (2认同)