即使在具有适当相关结构的模型中,自相关残差模式是否仍然存在,以及如何选择最佳模型?

机器算法验证 模型选择 自相关 残差 面板数据 时空
2022-02-11 20:57:10

语境

这个问题使用 R,但是关于一般统计问题。

我正在分析死亡率因素(疾病和寄生引起的死亡率百分比)对飞蛾种群增长率的影响,其中幼虫种群每年从 12 个地点采样一次,持续 8 年。人口增长率数据随着时间的推移呈现出明显但不规则的周期性趋势。

来自简单广义线性模型的残差(增长率 ~ 疾病百分比 + 寄生百分比 + 年)随着时间的推移显示出同样清晰但不规则的周期性趋势。因此,同样形式的广义最小二乘模型也适用于具有适当相关结构的数据,以处理时间自相关,例如复合对称、自回归过程阶数1和自回归移动平均相关结构。

模型都包含相同的固定效应,使用 AIC 进行比较,并通过 REML 拟合(允许通过 AIC 比较不同的相关结构)。我正在使用 R 包 nlme 和 gls 函数。

问题 1

GLS 模型的残差在随时间绘制时仍然显示几乎相同的周期性模式。即使在准确解释自相关结构的模型中,这种模式是否会一直存在?

我在第二个问题下方的 R 中模拟了一些简化但相似的数据,这基于我目前对评估模型残差中时间自相关模式所需的方法的理解显示了这个问题,我现在知道这是错误的(见答案)。

问题2

我已经为我的数据拟合了具有所有可能合理相关结构的 GLS 模型,但实际上没有一个模型比没有任何相关结构的 GLM 更适合:只有一个 GLS 模型稍微好一点(AIC 得分 = 低 1.8),而所有其他模型都有更高的 AIC 值。但是,只有当所有模型都由 REML 拟合时才会出现这种情况,而不是 ML,其中 GLS 模型显然要好得多,但我从统计书籍中了解到,您只能使用 REML 来比较具有不同相关结构和相同固定效应的模型,原因是我不会在这里详细说明。

鉴于数据明显的时间自相关性质,如果没有模型比简单的 GLM 稍微好一点,假设我使用的是适当的方法(我最终想使用AIC 比较不同的变量组合)?

Q1“模拟”探索具有和不具有适当相关结构的模型中的残差模式

生成具有“时间”循环效应和“x”正线性效应的模拟响应变量:

time <- 1:50
x <- sample(rep(1:25,each=2),50)
y <- rnorm(50,5,5) + (5 + 15*sin(2*pi*time/25)) + (x/1)

y 应显示随“时间”随机变化的周期性趋势:

plot(time,y)

与随机变化的“x”呈正线性关系:

plot(x,y)

创建一个“y ~ time + x”的简单线性加法模型:

require(nlme)
m1 <- gls(y ~ time + x, method="REML")

当针对“时间”绘制时,该模型在残差中显示出清晰的周期性模式,正如预期的那样:

plot(time, m1$residuals)

当针对“x”进行绘制时,残差中应该没有任何模式或趋势,这应该是一个很好的、明显的缺失:

plot(x, m1$residuals)

当使用 AIC 评估时,由于自相关结构,包含 1 阶自回归相关结构的简单模型“y ~ time + x”应该比之前的模型更好地拟合数据:

m2 <- gls(y ~ time + x, correlation = corAR1(form=~time), method="REML")
AIC(m1,m2)

但是,模型仍应显示几乎相同的“时间”自相关残差:

plot(time, m2$residuals)

非常感谢您的任何建议。

1个回答

第一季度

你在这里做错了两件事。第一个通常是坏事;一般不要深入研究模型对象并删除组件。在这种情况下,学习使用提取器功能resid()在这种情况下,您将获得一些有用的东西,但如果您有不同类型的模型对象,例如来自 的 GLM glm(),那么mod$residuals将包含上一次 IRLS 迭代的工作残差,这是您通常想要的东西!

您做错的第二件事也让我感到困惑。您提取的残差(如果您使用过,也会提取resid())是原始残差或响应残差。本质上,这是响应的拟合值和观测值之间的差异,考虑固定效应项这些值将包含与 相同的残差自相关,m1因为两个模型中的固定效应(或者如果您愿意,线性预测变量)是相同的 ( ~ time + x)。

要获得包含您指定的相关项的残差,您需要标准化残差。您可以通过以下方式获得这些:

resid(m1, type = "normalized")

这(和其他类型的可用残差)在以下内容中进行了描述?residuals.gls

type: an optional character string specifying the type of residuals
      to be used. If ‘"response"’, the "raw" residuals (observed -
      fitted) are used; else, if ‘"pearson"’, the standardized
      residuals (raw residuals divided by the corresponding
      standard errors) are used; else, if ‘"normalized"’, the
      normalized residuals (standardized residuals pre-multiplied
      by the inverse square-root factor of the estimated error
      correlation matrix) are used. Partial matching of arguments
      is used, so only the first character needs to be provided.
      Defaults to ‘"response"’.

通过比较,这里是原始(响应)和归一化残差的 ACF

layout(matrix(1:2))
acf(resid(m2))
acf(resid(m2, type = "normalized"))
layout(1)

在此处输入图像描述

要了解为什么会发生这种情况,以及原始残差不包括相关项的地方,请考虑您拟合的模型

y=β0+β1time+β2x+ε

在哪里

εN(0,σ2Λ)

是由带有参数的 AR(1) 定义的相关矩阵,其中矩阵的非对角元素用值填充,其中是正整数残差对的时间单位分离。Λρ^ρ|d|d

原始残差,返回的默认resid(m2)值仅来自线性预测器部分,因此来自该位

β0+β1time+β2x

中包含的相关项的任何信息Λ

第二季度

似乎您正试图用线性函数拟合非线性趋势,time并解释与 AR(1)(或其他结构)的“趋势”不匹配。如果您的数据与您在此处提供的示例数据类似,我会拟合 GAM 以实现协变量的平滑函数。这个模型将是

y=β0+f1(time)+f2(x)+ε

最初我们将假设与 GLS 相同的分布,除了最初我们假设 (单位矩阵,因此是独立的残差)。该模型可以使用Λ=I

library("mgcv")
m3 <- gam(y ~ s(time) + s(x), select = TRUE, method = "REML")

whereselect = TRUE应用一些额外的收缩以允许模型从模型中删除任何一项。

该模型给出

> summary(m3)

Family: gaussian 
Link function: identity 

Formula:
y ~ s(time) + s(x)

Parametric coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept)  23.1532     0.7104   32.59   <2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Approximate significance of smooth terms:
          edf Ref.df      F  p-value    
s(time) 8.041      9 26.364  < 2e-16 ***
s(x)    1.922      9  9.749 1.09e-14 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

并具有如下所示的平滑术语:

在此处输入图像描述

该模型的残差也表现得更好(原始残差)

acf(resid(m3))

在此处输入图像描述

现在提醒一句;平滑时间序列存在一个问题,因为决定函数平滑或摆动程度的方法假设数据是独立的。这实际上意味着时间 ( s(time)) 的平滑函数可以拟合真正随机自相关误差的信息,而不仅仅是潜在趋势。因此,在将平滑器拟合到时间序列数据时应该非常小心。

有很多方法可以解决这个问题,但一种方法是切换到拟合模型,通过gamm()它在内部调用lme()并允许您correlation使用用于gls()模型的参数。这是一个例子

mm1 <- gamm(y ~ s(time, k = 6, fx = TRUE) + s(x), select = TRUE,
            method = "REML")
mm2 <- gamm(y ~ s(time, k = 6, fx = TRUE) + s(x), select = TRUE,
            method = "REML", correlation = corAR1(form = ~ time))

请注意,我必须修复自由度,s(time)因为这些数据存在可识别性问题。该模型可能是摇摆不定的s(time),没有 AR(1) (ρ=0) 或线性s(time)(1 个自由度) 和强 AR(1) (ρ>>.5)。因此,我对潜在趋势的复杂性做出了有根据的猜测。(注意我没有在这个虚拟数据上花费太多时间,但是您应该查看数据并使用您对时间可变性的现有知识来确定样条曲线的适当自由度数。)

与没有 AR(1) 的模型相比,具有 AR(1) 的模型没有显着改进:

> anova(mm1$lme, mm2$lme)
        Model df      AIC      BIC    logLik   Test   L.Ratio p-value
mm1$lme     1  9 301.5986 317.4494 -141.7993                         
mm2$lme     2 10 303.4168 321.0288 -141.7084 1 vs 2 0.1817652  0.6699

如果我们查看 $\hat{\rho}} 的估计值,我们会看到

> intervals(mm2$lme)
....

 Correlation structure:
         lower      est.     upper
Phi -0.2696671 0.0756494 0.4037265
attr(,"label")
[1] "Correlation structure:"

Phi我叫什么ρ. 因此,0 是可能的值ρ. 该估计值略大于零,因此对模型拟合的影响可以忽略不计,因此如果有很强的先验理由假设残差自相关,您可能希望将其留在模型中。