r - 广义加性模型 (GAM) 中的自相关

标签 r model time-series gam mgcv

我有一个关于河流水温、气温和流速的时间序列数据集。我创建了一个 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 是平均每日气温。
排放量是平均日流量

提前致谢

最佳答案

你实际上有几个选择

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

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

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

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

    关于r - 广义加性模型 (GAM) 中的自相关,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47586110/

    相关文章:

    r - table 和 ftable 有何不同?

    python - Django - 'Created by' - 字段

    r - 不规则时间序列的年、月或日平均值

    使用 auto.arima 和 xreg=解释变量进行 R 时间序列预测

    python - Pandas :基于局部极小值极大值的数据之字形分割

    r - rpart 和 party 包完全不同的决策树

    r - 当数字不完全匹配时匹配 2 个数据框中的列

    r - 过滤 data.frame 中列值不一致的行

    c++ - 权重列表模型中的索引项

    ruby-on-rails - Rails : change column type, 但保留数据