如何解释 beta 回归中的时间自相关 beta 软件包?

How to account for temporal autocorrelation in beta regression fitted with betareg R package?

提问人:Ahsk 提问时间:11/12/2022 最后编辑:Ahsk 更新时间:11/15/2022 访问量:127

问:

我有时间序列数据,我在其中计算了不同时间间隔的植物的疾病严重程度。我的响应变量介于 0 和 1 之间(均为排除),因此 beta 回归似乎是最合适的模型。我的预测因子是天气变量 - 目的是确定天气变量对疾病严重程度的影响。 这是一个可重现的示例。

df <- structure(
  list(
    year = structure(
      c(1L, 2L, 3L, 5L, 4L, 6L, 7L,
        8L, 9L, 10L),
      .Label = c(
        "2007",
        "2012",
        "2013",
        "2014",
        "2014.1",
        "2015.1",
        "2015.2",
        "2016",
        "2017",
        "2020"
      ),
      class = "factor"
    ),
    mean_rh = c(
      83.9025107032967,
      86.3309364921875,
      78.7225209283154,
      82.3598611111111,
      77.8125490392157,
      77.5694460507813,
      77.340364207483,
      78.601888359589,
      77.9234626042403,
      79.1268228283582
    ),
    mean_temp = c(
      8.06137667087912,
      3.75335204210526,
      8.39571386344086,
      7.57235900444444,
      10.5797098501961,
      8.52468121914062,
      9.63416591190476,
      12.2749429150685,
      9.65211886219081,
      10.1620900981343
    ),
    mean_ws = c(
      1.84656288406593,
      2.0747284924812,
      1.92455694623656,
      2.12702791944444,
      1.91802733215686,
      1.77915314179687,
      1.71631475340136,
      1.78024162876712,
      1.45554503710247,
      1.60409589440299
    ),
    total_rain = c(
      469.5,
      367.1,
      509.3,
      358.7,
      562.3,
      547.6,
      756.4,
      789.5,
      640.5,
      665.1
    ),
    severity = c(
      0.81667,
      0.01325,
      0.06125,
      0.81667,
      0.0198,
      0.0623,
      0.0035,
      0.00475,
      0.885,
      0.0348
    )
  ),
  class = c("grouped_df", "tbl_df", "tbl", "data.frame"),
  row.names = c(NA,-10L),
  groups = structure(
    list(
      year = structure(
        1:10,
        .Label = c(
          "2007",
          "2012",
          "2013",
          "2014",
          "2014.1",
          "2015.1",
          "2015.2",
          "2016",
          "2017",
          "2020"
        ),
        class = "factor"
      ),
      .rows = structure(
        list(1L,
             2L, 3L, 5L, 4L, 6L, 7L, 8L, 9L, 10L),
        ptype = integer(0),
        class = c("vctrs_list_of",
                  "vctrs_vctr", "list")
      )
    ),
    row.names = c(NA,-10L),
    class = c("tbl_df",
              "tbl", "data.frame"),
    .drop = TRUE
  )
)

我的模型如下

mod05 <-
  betareg(severity_ps ~ mean_temp +  mean_ws + total_rain + mean_rh,
          data = dat_preplanting)
summary(mod05)

但是,当我使用该函数检查模型残差自相关时,该图显示出非常高的时间自相关。acf()

enter image description here

但是,当我使用 pacf(mod05$residuals) 函数检查偏自相关时,没有检测到自相关。

我的问题是,

  1. 如果 acf 图显示自相关但 pacf 图没有显示自相关,是否存在自相关问题?

  2. 如何解释 R 包中的时间自相关?我检查了文档,但没有找到任何东西。betareg

我尝试使用 & 来拟合模型,包括年份作为随机效应,但模型未能收敛,这表明我的自由度非常有限。所以我真的需要找到一种方法来解释 betareg 包中的时间自相关。感谢您的帮助。glmmTMBgam

R 回归 自回归模型 自相关 betareg

评论

3赞 Ben Bolker 11/12/2022
有一个可重复的例子会很有帮助。我认为不可能将时间自相关添加到模型中,但我们也许可以帮助您处理 / 版本......您用来生成 ACF 图的代码是什么?betaregglmmTMBgam
0赞 Ahsk 11/12/2022
嗨,本,感谢您的评论。我使用了这个代码 acf(mod05$residuals)。我想先使用 glmmTMB,因为我对 glmmTMB 更熟悉。但问题是,当我将年份作为随机效应包括在内时,模型无法收敛。我可以运行一个没有随机效应的模型,但这是错误的,因为 glmmTMB 本质上是混合模型?我可以用 glmmtmb 拟合一个没有随机效应的模型,并包含 AR1 项吗?我的数据是在不同的年份收集的。实验后每年收获植物,每年种植新植物。
0赞 Ahsk 11/12/2022
我不确定这是否是时间序列,因为每年都会使用新的植物。虽然每年有 2-3 次疾病评估,但我们在研究中只考虑了最终的疾病评估。我认为这是时间序列的唯一原因,因为患病植物被遗漏在田间,以便在下一季感染新感染的植物。
0赞 Ahsk 11/12/2022
我的 glmmTMB 模型代码如下(但由于数据很少,我无法包含随机效应)。而且我不知道如何包含 mod05 年份的 AR1 结构 <- glmmTMB(severity_ps ~ mean_temp + mean_ws + total_rain + mean_rh , family = beta_family(), data = dat_preplanting)
1赞 Ben Bolker 11/13/2022
我仍然不太明白这是怎么回事。ACF 通常是根据某些索引变量(例如时间)计算的,因此除非您的数据集是一个长时间序列,否则它实际上没有意义。另一方面,我不太明白为什么在这种情况下你会得到高自相关......再说一次,有没有机会再现的例子acf(mod05$residuals)

答: 暂无答案