首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >循环AR模型

循环AR模型
EN

Stack Overflow用户
提问于 2017-10-15 10:17:25
回答 1查看 362关注 0票数 1

我想用一个有差分时间序列的AR(4)模型做一个n步的预测。

模型本身:

代码语言:javascript
复制
X(t)-X(t-1)=a(1)(X(t-1)-X(t-2))+...+a(4)(X(t-4)-X(t-5))

=> X(t)=X(t-1)+a(1)(X(t-1)-X(t-2))+...+a(4)(X(t-4)-X(t-5))

首次预测:

代码语言:javascript
复制
X(t+1)-X(t)=a(1)(X(t)-X(t-1))+...+a(4)(X(t-3)-X(t-4))

=> X(t+1)=X(t)+a(1)(X(t)-X(t-1))+...+a(4)(X(t-3)-X(t-4))

第二次预报:

代码语言:javascript
复制
X(t+2)-X(t+1)=a(1)(X(t+1)-X(t))+...+a(4)(X(t-2)-X(t-3))

=> X(t+2)=X(t+1)+a(1)(X(t+1)-X(t))+...+a(4)(X(t-2)-X(t-3))

我已经用这个代码试过了

代码语言:javascript
复制
N<-50
arkoef<-0
ar<-0
ARforecast<-numeric(0)
arkoef<-c(closingkursu[2518],closingkursu[2517],closingkursu[2516],closingkursu[2515],closingkursu[2514])
ar<-arkoef
for(i in 1:N){
ARforecast<-c(ARforecast,arkoef[1]+arfit$coef[1]*(arkoef[1]-arkoef[2])+arfit$coef[2]*(arkoef[2]-arkoef[3])+arfit$coef[3]*(arkoef[3]-arkoef[4])+arfit$coef[4]*(arkoef[4]-arkoef[5]))
ar = c(tail(ARforecast, 1), head(ar, -1))}

此代码的输出是:

代码语言:javascript
复制
ar1      ar1      ar1      ar1      ar1      ar1      ar1      ar1      ar1      ar1      ar1      ar1      ar1      ar1      ar1      ar1      ar1      ar1      ar1      ar1 
10.19656 10.19656 10.19656 10.19656 10.19656 10.19656 10.19656 10.19656 10.19656 10.19656 10.19656 10.19656 10.19656 10.19656 10.19656 10.19656 10.19656 10.19656 10.19656 10.19656 
     ar1      ar1      ar1      ar1      ar1      ar1      ar1      ar1      ar1      ar1      ar1      ar1      ar1      ar1      ar1      ar1      ar1      ar1      ar1      ar1 
10.19656 10.19656 10.19656 10.19656 10.19656 10.19656 10.19656 10.19656 10.19656 10.19656 10.19656 10.19656 10.19656 10.19656 10.19656 10.19656 10.19656 10.19656 10.19656 10.19656 
     ar1      ar1      ar1      ar1      ar1      ar1      ar1      ar1      ar1      ar1 
10.19656 10.19656 10.19656 10.19656 10.19656 10.19656 10.19656 10.19656 10.19656 10.19656 

第一个预测似乎是正确的,但循环不起作用。

EN

回答 1

Stack Overflow用户

发布于 2017-10-15 11:32:34

您忘记在循环中增加ARforecast向量的值。

代码语言:javascript
复制
N<-50 ;  arkoef<-0  ;  ar<-0 ;  ARforecast<-numeric(0)
arkoef <- c(closingkursu[2518],closingkursu[2517],closingkursu[2516],closingkursu[2515],closingkursu[2514])
ar <- arkoef

for(i in 1:N){
  ARforecast[i+1] <- c(ARforecast[i], arkoef[i]+arfit$coef[i]*(arkoef[i]-arkoef[i+1])+arfit$coef[i+1]*(arkoef[i+1]-arkoef[i+2])+arfit$coef[i+2]*(arkoef[i+2]-arkoef[i+3])+arfit$coef[i+3]*(arkoef[i+3]-arkoef[i+4]))
  ar = c(tail(ARforecast, 1), head(ar, -1))
}

但我实际上并不理解代码的某些部分( ar在循环中做什么?)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46753970

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档