【问题标题】:R: Arima() daily prediction series with variable forecast horizon (forecast())R:具有可变预测范围的 Arima() 每日预测序列(forecast())
【发布时间】:2021-06-08 00:46:47
【问题描述】:

我在每日时间序列 x_0 到 x_n 上估计了一个 ARIMA 模型(实际上是一个模型列表)。给定估计的模型,我“只是”想生成一个向量(无需重新估计) Y_(n+1),j 到 y_m,j 其中每个元素 y_i,j(n+1:m 中的 i)是进程 j 天前的期望(j 不是常数),条件为 x_(i-1),x_(i-2),...

我遇到的问题是预测()。即,我不知道如何为测试中的每一行将更新的 x 值传递给预测(),在每一行中,我实际上是在创建一个新的预测对象。在过去的几天里,我查看了整个 Stack,但未能找到解决方案。如果 python 能解决我的问题,我也愿意接受建议。

在某些情况下,如果有帮助,我每天都在预测我的变量(VIX 指数),时间段由其 VVIX 期货合约的到期时间定义(随着系列中的合约到期而减少和跳跃,并且分别被更长期限的合同所取代。)

如果您需要代码或其他示例,我很乐意提供,但这个概念很容易理解,所以希望有人比我更了解这个库的限制。非常感谢任何帮助/建议!

注意:我知道我可能需要自己计算期望值,但我很快就要开一个研究会议,想知道是否可以使用 forecast() 来完成这个,谢谢!

~胭脂红

编辑:这是要复制的代码。在将 Arima() 对象存储在“模型”中之后,我需要创建(在本例中)一个包含 50 个条目的向量,其中每个条目是 x 在时间 T(n_step先)。欢迎任何建议!

x <- rnorm(100)+1
train_test <- list(train=x[1:50],test=x[51:100])
n_step <- ceiling(runif(n=50,min=1,max=20))
model <- Arima(train_test[[1]],order=c(1,0,1),method="ML")

【问题讨论】:

  • 如果您可以共享代码和/或数据样本,那么人们提供帮助将需要更少的工作和运气。
  • 嗨,乔恩,谢谢!我不确定要准确地说什么,并且觉得概念性的解释就足够了。我已经用一些代码更新了我的帖子,以在您的 GE 中重现问题。如果您有任何其他建议,请告诉我!我很想度过这个阶段!

标签: r time-series finance predict arima


【解决方案1】:

我编写了一个程序来执行本文中询问的预测。该代码对我的研究非常具体,但我做了一个简化的示例,将在这里分享。请注意,arima 模型对象中的系数索引不是恒定的。我只是将所有模型系数对齐到一个 nx7 矩阵中(我最多使用 3 个 ar、ma 项和截距),并逐行循环。希望它可以帮助某人,因为它肯定会帮助我!欢迎任何关于修改或改进的建议!

-胭脂红

library(forecast)

train <- vix$Close[1:1000] ;test <- vix$Close[1001:2000]
fit <- Arima(train, order=c(2,0,2));coefs <- as.numeric(fit$coef)
xreg <- train;eps <- fit$residuals
n_step <- rep(10:3,125);nth_step_fc <- numeric()

for(i in 1:length(test)){
  n_step_fc <- numeric(n_step[i])
  xreg_temp <- xreg;eps_temp <- eps
  for(j in 1:n_step[i]){          
    n_step_fc[j] <- coefs[1]*(xreg_temp[length(xreg_temp)]-coefs[5])+ # ar1
      coefs[2]*(xreg_temp[length(xreg_temp)-1]-coefs[5])+             # ar2
      coefs[3]*(eps_temp[length(eps_temp)]+             # ma1
      coefs[4]*eps_temp[length(eps_temp)-1]+             # ma2
      coefs[5]                                             # intercept
    eps_temp <- append(eps,0)                            # mean est (not point)
    xreg_temp <- append(xreg,n_step_fc[j])
  }
  nth_step_fc[i] <- n_step_fc[j]
  eps_i <- n_step_fc[1]-test[i]
  eps <- append(eps,eps_i)
  xreg <- append(xreg,test[i])
}

【讨论】:

    猜你喜欢
    • 2021-03-23
    • 2016-11-27
    • 2019-08-10
    • 1970-01-01
    • 1970-01-01
    • 2020-02-20
    • 2021-01-30
    • 1970-01-01
    • 2023-03-31
    相关资源
    最近更新 更多