2017-10-15 7 views
1

Je veux faire une prévision d'avance n avec un modèle AR (4) avec une série temporelle différenciée.Pour la boucle modèle AR

Le modèle lui-même:

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)) 

Prévisions Première:

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)) 

Prévisions Deuxième:

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)) 

Je l'ai essayé déjà avec ce code :

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))} 

La sortie de ce code est:

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 

La première prévision semble juste, mais la boucle isnt de travail.

Répondre

0

Vous avez oublié d'incrémenter les valeurs du vecteur ARforecast dans votre boucle.

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)) 
} 

Mais je ne comprends pas vraiment certaines parties de votre code (ce qui est le ar faire dans la boucle?)

+0

Le coef $ de arfit [1] pour arfit coef $ [4] sont des coefficients fixes et l'indexation avec je vais les changer je suppose. Mais le code me donne 50 avertissements et NA comme valeur – user2968163