【问题标题】:Autoregressive model with panel data in rr 中具有面板数据的自回归模型
【发布时间】:2020-12-15 08:02:34
【问题描述】:

我有以下数据集 dt

Y     date       segment
 10   2019-11-11    1
 12   2019-11-12    1
 9    2019-11-13    1
 ...
 ..
 14   2019-12-15    5
 12   2019-12-16    5
 10   2019-12-17    5

我想建立一个自回归模型,这样

 Y(segment, dat)_{t} = beta1*Y(segment,dat)_{t-1} + beta2*Y(segment,dat)_{t-2}...

虽然我只需要处理一个片段,但我会这样做:

library(dynlm)
Y <- dt$Y
AR2 <- dynlm(ts(Y) ~ L(ts(Y)) + L(ts(Y), 2) )

我不知道如何同时处理多个片段

【问题讨论】:

    标签: r time-series autoregressive-models


    【解决方案1】:

    最简单的方法是像这样使用lm()

    library(tidyverse)
    dt <- tibble(
      Y = sample(1:50, 200, replace=TRUE),
      date = rep(seq(as.Date("2019-11-11"), by="1 day", length=40),5),
      segment = rep(1:5, rep(40, 5))
    )
    
    dt <- dt %>%
      arrange(segment, date) %>%
      group_by(segment) %>%
      mutate(
        Y1 = dplyr::lag(Y,1),
        Y2 = dplyr::lag(Y,2)
      ) %>%
      ungroup()
    
    fit <- lm(Y ~ Y1 + Y2, data=dt)
    

    reprex package (v0.3.0) 于 2020 年 8 月 27 日创建

    【讨论】:

    • summary(fit) 在您的示例(以及我的数据)上使用 R^2 = 1 给我,查看我看到的数据 Y1 = Y2 = Y ,所以可能存在错误代码?
    • 如果您使用 stats::lag 而不是 dplyr::lag,就会出现这种情况。可能您使用的是旧版本的 dplyr。或者它可能出于其他原因调用 stats::lag 。无论如何,我现在已经明确地调用了。
    猜你喜欢
    • 2021-08-05
    • 2014-09-11
    • 2012-08-24
    • 1970-01-01
    • 2011-06-26
    • 2019-02-18
    • 2017-05-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多