2009-11-02 8 views
2
data <-c(88, 84, 85, 85, 84, 85, 83, 85, 88, 89, 91, 99, 104, 112, 126, 138, 146,151, 150, 148, 147, 149, 143, 132, 131, 139, 147, 150, 148, 145, 140, 134, 131, 131, 129, 126, 126, 132, 137, 140, 142, 150, 159, 167, 170, 171, 172, 172, 174, 175, 172, 172, 174, 174, 169, 165, 156, 142, 131, 121, 112, 104, 102, 99, 99, 95, 88, 84, 84, 87, 89, 88, 85, 86, 89, 91, 91, 94, 101, 110, 121, 135, 145, 149, 156, 165, 171, 175, 177, 182, 193, 204, 208, 210, 215, 222, 228, 226, 222, 220) 

왜 데이터의 첫 번째 차이점에서 작용하는 ARMA 모델이 해당 ARIMA 모델과 다른가요? 예측 패키지 Arima(data,c(5,1,4))Arima(diff(data),c(5,0,4))와 같은ARIMA, ARMA 및 AIC?

for (p in 0:5) 
{ 
for (q in 0:5) 
{ 
#data.arma = arima(diff(data), order = c(p, 0, q));cat("p =", p, ", q =", q, "AIC =", data.arma$aic, "\n"); 
data.arma = arima(data, order = c(p, 1, q));cat("p =", p, ", q =", q, "AIC =", data.arma$aic, "\n"); 
} 
} 

. 나는

auto.arima(diff(data),max.p=5,max.q=5,d=0,approximation=FALSE, stepwise=FALSE, ic ="aic", trace=TRUE); 
auto.arima(data,max.p=5,max.q=5,d=1,approximation=FALSE, stepwise=FALSE, ic ="aic", trace=TRUE); 

으로 원하는 일관성을 얻을 수 있지만 auto.arima 뒤에 알고리즘에 의해 고려되지 않은 이러한 데이터의 최소 AIC 추정의 홀더를 보인다; 그러므로 첫 번째 차이점에 작용하는 ARMA (5,4) 대신에 ARMA (3,0)의 차선책을 선택했다. 하나의 모델을 다른 모델보다 더 잘 고려하기 전에 두 모델의 AIC 추정치가 얼마나 달라야하는지에 관한 질문입니다. 가장 작은 AIC 홀더가 적어도 고려되어야합니다. 비록 9 계수가 너무 많을지라도 100 회의 관측으로부터의 예측. 더 빨리, 그래서 이중 루프의

1) 벡터화 버전 :

내 R의 질문은?

2) 데이터에 작용하는 arima(5,1,4)이 데이터의 첫 번째 차이점 인 arma(5,4)과 다른 이유는 무엇입니까? 어느 것이보고되어야합니까?

3) AIC 출력을 정렬하여 작게 표시하려면 어떻게합니까?

감사합니다.

답변

8

여기에 제기 된 많은 질문과 문제점이 있습니다. 나는 그들 각각에게 반응하려고 노력할 것이다.

Arima()arima()에 대한 래퍼이므로 동일한 모델을 제공합니다.

arima()는 diffuse prior를 사용하여 차이점이있는 모델을 처리합니다. 이는 모델을 맞추기 전에 데이터를 차별화하는 것과 동일하지 않습니다. 결과적으로 arima(x,order=c(p,1,q))arima(diff(x),order=c(p,0,q))과 약간 다른 결과가 나타납니다.

auto.arima()은 차이점을 직접 처리하고 피팅 할 때 사전 확산을 사용하지 않습니다. 그래서 당신은 auto.arima(x,d=1,...)에서 동일한 결과를 얻을 것이다 auto.arima(diff(x),d=0,...)

auto.arima()은 피의 + q를의 최대 값을 지정하는 인수 max.order 있습니다. 기본적으로 max.order=5이므로 arima(5,1,4)은 고려되지 않습니다. 큰 모델을 고려하고 싶다면 max.order을 늘리십시오 (권장하지는 않지만).

매 반복마다 비선형 최적화와 관련된 루프를 벡터화 할 수 없습니다.

출력을 정렬하려면 data.frame에 저장 한 다음 관련 열을 정렬해야합니다. 코드는 현재 진행되는 동안 결과를 쏟아 내고 최신 모델을 제외하고는 아무 것도 저장되지 않습니다.

+0

감사합니다. Rob. max.order = 9를 추가하면 ARIMA (5,1,4)/ARMA (5,4)의 AIC는 의미가 무엇이든 1e + 20이므로 ARIMA (3,1,0)/ARMA (3,0). – andrekos

+0

auto.arima()는 적합성에 문제가있을 때 1e20 (즉, 10^20)의 AIC를 반환합니다.수렴 문제이거나 매개 변수가 연쇄 성과 가역성의 경계 근처에있을 수 있습니다. 이 신호는 모델에 문제가있어 사용하지 않는 것이 좋습니다. –

+0

언제나처럼, stackoverflow에 대한 당신의 공헌에 감사드립니다, 롭! – griffin

관련 문제