2014-06-18 1 views
1

나는 xt = γ1xt-1 + γ2xt-2 + εt [AR (2)]에 대해 1000 회의 관측을했다. 첫 번째 900 개의 관측치를 사용하여 모델을 추정하고 나머지 100 개의 관측치를 사용하여 한 걸음 앞자리를 예측하는 것입니다. 이것은 내가 지금까지 무엇을했는지 있습니다 :r에서 for 루프를 사용하여 다음 기간을 예측하기 위해 이전 관측치를 사용하는 방법?

data2=arima.sim(n=1000, list(ar=c(0.5, -0.7))) #1000 observations simulated, (AR (2)) 
    arima(data2, order = c(2,0,0), method= "ML") #estimated parameters of the model with ML 
    fit2<-arima(data2[1:900], c(2,0,0), method="ML") #first 900 observations used to estimate  the model 
    predict(fit2, 100) 

하지만 지금은 내 코드의 문제는 n.ahead은 = 100하지만 n.ahead = 1을 사용하고 총 100 개 예측을하고 싶은 것입니다 . 저는 이것을 위해 for 루프를 사용해야한다고 생각하지만, Rstudio의 아주 새로운 사용자이기 때문에 for 루프를 사용하여 예측을하는 방법을 알 수 없었습니다. 아무도 이것으로 나를 도울 수 있습니까?

답변

1

정확하게 이해했다면, 테스트 세트에서 한 단계 예측을 원할 것입니다. 이 루프없이 당신이 원하는 일을해야합니다

library(forecast) 
data2 <- arima.sim(n=1000, list(ar=c(0.5, -0.7))) 
fit2 <- Arima(data2[1:900], c(2,0,0), method="ML") 
fit2a <- Arima(data2[901:1000], model=fit2) 
fc <- fitted(fit2a) 

Arima 명령은 모델 매개 변수가 다시 평가하지 않고 새로운 데이터 세트에 적용 할 수 있습니다. 그런 다음 fitted은 원스텝 예측을 제공합니다.

테스트 데이터에 대해 다단계 예측을하려면 루프를 사용해야합니다. 여기에 앞서 두 단계의 날씨를 예측 예입니다

fcloop <- numeric(100) 
h <- 2 
for(i in 1:100) 
{ 
    fit2a <- Arima(data2[1:(899+i)], model=fit2) 
    fcloop[i] <- forecast(fit2a, h=h)$mean[h] 
} 

당신이 코드의 이전 블록에 fitted을 사용하는 것과 거의 같은 결과를 얻을 수 위의 당신이 h <- 1을 설정합니다. fitted을 사용하는 접근법은 트레이닝 집합의 끝에있는 데이터를 고려하지 않고 루프를 사용하는 접근법은 예측을 할 때 트레이닝 집합의 끝을 사용하기 때문에 처음 두 값은 달라집니다.

+0

실행 해 보았지만 작동하지 않는 것 같습니다. – user3700961

+0

for 루프를 사용하여 한 단계 예측을 수행하는 방법을 가르쳐 주시겠습니까? – user3700961

+0

오 그랬어! 고맙습니다!! 하지만 당신은 여전히 ​​나를 위해 루프를 사용하는 방법을 보여줄 수 있습니까? – user3700961

관련 문제