【问题标题】:Autocorrelation in Generalized Additive Models (GAM)广义加法模型 (GAM) 中的自相关
【发布时间】:2018-05-15 03:06:09
【问题描述】:

我有一个关于河流中水温、气温和流速的时间序列数据集。我创建了一个 GAM 模型来根据空气温度和流量预测水温。但是,我没有考虑数据集中的自相关。预测变量和因变量中的每个数据点都不是独立的(即第 2 天的气温与第 1 天的气温无关)。

有人可以帮助我使用适当的代码在我的模型中包含某种形式的自相关度量 (AR1?)。据我了解,我需要使用gamm() 函数而不是gam() 函数?

我当前的模型如下所示:

model <- gam(W.T.Mean ~ s(T.Mean) +s(Discharge), data = Pre_regulation_temp)

W.T.Mean 是平均每日水温。 T.Mean 是平均每日气温。 流量是平均日流量

提前致谢

【问题讨论】:

    标签: r model time-series gam mgcv


    【解决方案1】:

    其实你有几个选择

    1. gamm()correlation = corAR1(form = ~ time)(其中 time 是变量,可为您提供均匀间隔观察的时间顺序
    2. bam() 并指定已知值 rho,即 AR(1) 参数。

    也就是说,推理的问题是估计模型(即协变量的影响)为条件,响应是独立且同分布的。换句话说,我们期望模型的残差是独立的(不是自相关的)。如果气温对水温的瞬时(平滑)影响足以使模型残差独立,那么您不一定需要做任何事情来校正模型。

    但是,如果估计的气温平滑效应非常不稳定,则可能表明估计的效应受​​到数据中自相关的影响。我希望空气和水温之间的关系相对简单,在低端和高端都有饱和效应。你不能让水低于 0,但空气温度可以低于 0,同样在高端,你不会因为空气温度升高一个单位而获得相同的水温升高。因此,请检查估计的平滑度,看看效果是否比您预期的更复杂。如果是,您应该尝试使用gamm() 进行拟合,看看它如何改变估计的平滑度。如果它没有太大区别,那么我会回到我原来的gam() 并查看模型残差的自相关函数,如果这表明自相关存在问题,那么您要么需要通过添加项来纠正它到您的 gam() 模型或切换回 gamm() 并指定 correlation = .... 并将其用于推理。

    其他更复杂的选择是使用 brms 包,它还可以估计具有 AR 或 ARMA 相关结构的模型。

    【讨论】:

    • 我是否理解正确,您可以使用 MGCV 创建 ARMA 时间序列模型?
    • @hhh 不;您可以使用 mgcv(通过 nlme)为回归模型的残差包含一个 ARMA 过程。 bam() 允许为残差指定 AR(1) 过程,但需要提供通常在时间序列建模函数中估计的 rho 值。
    • 我在 ARMA 相关结构上尝试了 BRMS,但它仅受高斯先验支持,不适用于对数正态分布等分布。那么下一步就是直接用 STAN 来创建模型,或者 rstanarm 呢?
    • @hhh 你不能为平均值编写一个模型并将 ARMA 添加到该模型中,然后在数据层说 Y ~ LN(mu, ...)。 BRMS 可能无法实现,但您可以使用它设置 STAN 代码,然后仅修改 ARMA 的部分及其应用位置?
    猜你喜欢
    • 2020-03-22
    • 2018-02-03
    • 2018-03-14
    • 1970-01-01
    • 2012-05-29
    • 1970-01-01
    • 1970-01-01
    • 2018-09-16
    • 1970-01-01
    相关资源
    最近更新 更多