2017-10-15 3 views
1

Ich möchte eine n Schritt voraus Prognose mit einem AR (4) -Modell mit einer differenzierten Zeitreihe machen.For Schleife AR Modell

Das Modell selbst:

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

Erste Prognose:

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

Zweite Prognose:

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

Ich habe versucht, es bereits mit diesem 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))} 

Die Ausgabe für diesen Code ist:

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 

Die erste Prognose scheint richtig, aber die Schleife ist nicht arbeiten.

Antwort

0

Sie haben vergessen, die Werte des Vektors ARforecast in Ihrer Schleife zu erhöhen.

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

Aber ich verstehe nicht wirklich einige Teile des Codes (was ist das ar in der Schleife zu tun?)

+0

Die arfit $ Koef [1] $ Koef arfit [4] sind feste Koeffizienten und Indexieren mit ich werde sie ändern ich nehme an. Aber der Code gibt mir 50 Warnungen und NA's als Wert – user2968163