首页 > 解决方案 > R预测包中的动态回归

问题描述

我有代表两种货币的两个变量的时间序列:SYP(叙利亚镑)和 LBP(黎巴嫩镑)。数据代表过去六个月两种货币的每日价值。我之前使用 SYP 作为因变量和 LBP 作为自变量运行标准回归模型。这是结果:

SYPts <- ts(SYP_LBP)
modelSYPLBP <- tslm(SYP ~ LBP, data = SYPts)
summary(modelSYPLBP)



Coefficients:
              Estimate Std. Error t value Pr(>|t|)    
(Intercept) -835.77100  228.93013  -3.651 0.000319 ***
LBP            0.41801    0.02744  15.235  < 2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 324.9 on 248 degrees of freedom
Multiple R-squared:  0.4834,    Adjusted R-squared:  0.4814 
F-statistic: 232.1 on 1 and 248 DF,  p-value: < 2.2e-16

但是,当我尝试使用预测包中的 auto.arima 调用运行动态回归模型时,我获得:

model <- auto.arima(SYPts[, "SYP"], xreg = SYPts[, "LBP"], stationary = FALSE)
summary(model)


Series: SYPts[, "SYP"] 
Regression with ARIMA(0,1,1) errors 

Coefficients:
          ma1   drift     xreg
      -0.4654  5.6911  -0.0163
s.e.   0.0591  3.3376   0.0315

sigma^2 estimated as 9744:  log likelihood=-1495.39
AIC=2998.78   AICc=2998.94   BIC=3012.85

Training set error measures:
                      ME     RMSE      MAE        MPE     MAPE    MASE
Training set -0.06985184 97.92004 46.45812 -0.1826244 1.792092 1.18404
                    ACF1
Training set 0.001792873

回归系数现在是负数,并且比使用标准回归模型获得的系数小很多。

此外,当我尝试使用假设 LBP 在接下来的 15 天内变化为 0 的模型进行预测时,我得到了一条非常平坦的预测曲线,并且由于系数估计值为负,当我增加预测值时,曲线变得更平坦,然后变为负值LBP 的。

我想问:1-我在处理数据和准备模型时是否犯了一些特定的错误?例如,我没有放任何时间序列的频率。我是不是该?2 - 我应该在创建模型之前通过区分它们来进一步干预数据吗?在我使用 STATIONARY = FALSE 的公式中,就好像我使用 STATIONARY = TRUE 我在检查残差检验中获得了非常低的 p 值。3 - 我不明白在生成自变量 (LBP) 的预测值时是否做错了什么。在公式forecast <- forecast(model, xreg = rep(10000,15)) 中,我假设 rep 的两个参数分别代表 LBP 的附加值以及我希望它及时重复多少天。由于 10000 是时间序列中 LBP 的最新值,因此通过使用它,我假设在接下来的 15 天内不会发生任何变化。这是对的吗?

谢谢

标签: rtime-seriesforecastingarima

解决方案


推荐阅读