【问题标题】:R: How to fit a time series model such as "Y(t) = αX + βY(t-1)"?R:如何拟合“Y(t) = αX + βY(t-1)”这样的时间序列模型?
【发布时间】:2017-03-16 01:12:35
【问题描述】:

如何一步一步地在 R 中拟合这个模型?我的范围是对 t+1 进行预测。

Y(t) = αX(t) + βY(t-1)

  • Y(t)
  • X
  • Y(t-1)

提前致谢。

【问题讨论】:

  • 不是教程,只是一种方法。有什么线索吗?

标签: r time-series regression forecasting autoregressive-models


【解决方案1】:

使用预测包并使用 ARIMAX 函数并指定结构,在这种情况下它将是 (1,0,0)。 xreg 参数将允许您包含其他协变量。

它应该看起来像这样..

library(forecast)
fit <- Arima(y, order=c(1,0,0),xreg = x)

【讨论】:

    【解决方案2】:

    您的模型是 y 的 AR(1) 时间序列,协变量为 x。我们可以只使用 R 基础中的arima0(无缺失值)或arima(允许缺失值):

    fit <- arima0(y, order = c(1, 0, 0), xreg = x)
    

    让我们考虑一个小例子:

    set.seed(0)
    x <- runif(100)
    ## intercept: 0.1
    ## slope of `x`: 1.2
    ## AR(1) with coefficient 0.5
    y <- 0.1 + 1.2 * x + arima.sim(list(ar = 0.5), n = 100, sd = 0.2)
    
    fit <- arima0(y, order = c(1, 0, 0), xreg = x)
    
    #Call:
    #arima0(x = y, order = c(1, 0, 0), xreg = x)
    #
    #Coefficients:
    #         ar1  intercept    xreg
    #      0.4639     0.0645  1.2139
    #s.e.  0.0879     0.0448  0.0590
    #
    #sigma^2 estimated as 0.03046:  log likelihood = 32.55,  aic = -57.11
    

    请注意,估计值与我们的真实模型一致。


    谢谢。如何插入更多协变量(x1、x2 等)以防万一?

    看看?arima0(或?arima):

    xreg: Optionally, a vector or matrix of external regressors, which
          must have the same number of rows as ‘x’.
    

    您可以通过xreg 指定模型矩阵。假设你有回归量x1x2x3,在一个数据框dat,你可以通过以下方式生成这个模型矩阵:

    X <- model.matrix(~ x1 + x2 + x3, dat)
    

    然后

    fit <- arima0(y, order = c(1, 0, 0), xreg = X)
    

    【讨论】:

    • 谢谢。如何插入更多协变量(x1、x2 等)以防万一?
    • 只需将 x 作为一个数据框,每个协变量都有多个列。一个问题是,如果它们是因子,您将不得不使用 model.matrix 为因子的每个级别创建虚拟变量。
    • @Zheyuan Li 谢谢。当我开始写我的帖子时,我没有看到你的 cmets,否则我不会写它。奇怪的是,有几乎相同的答案却被忽略了。以为我的帖子没有显示出来。
    猜你喜欢
    • 2017-03-21
    • 1970-01-01
    • 2016-03-12
    • 2017-06-20
    • 2021-07-04
    • 2020-06-22
    • 2022-01-08
    • 2011-10-21
    • 2011-01-15
    相关资源
    最近更新 更多