2009-11-02 187 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,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"); 
} 
} 

同樣的,在預測包Arima(data,c(5,1,4))Arima(diff(data),c(5,0,4))。我可以得到

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

所需的一致性,但它似乎是最小AIC估計這些數據尚未考慮通過後面auto.arima算法的持有人;因此ARMA(3,0)不是最佳選擇,而是ARMA(5,4)作用於第一差異。一個相關的問題是,在考慮一個模型比另一個模型好的程度之前,兩個AIC估計值應該有多少差別 - 儘管9個係數可能有點過多,但至少應該考慮/報告最小的AIC持有者對100個觀察值進行預測。

我的R課題是:

1)雙循環的矢量化版本,所以它比較快?

2)爲什麼arima(5,1,4)作用於數據不同於arma(5,4)作用於數據的第一個差異?哪一個是要報告的?

3)如何對AICs輸出進行排序,使較小的先出現?

謝謝。

回答

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()有一個參數max.order指定的最大P + Q的。默認情況下,max.order=5,所以你的arima(5,1,4)不會被考慮。如果你想考慮這樣的大型模型,增加max.order(儘管我不推薦它)。

您無法在每次迭代中矢量化包含非線性優化的循環。

如果要對輸出進行排序,則需要將其保存到data.frame,然後在相關列上進行排序。目前代碼只是吐出結果,除了最新的模型外,沒有任何東西可以保存。

+0

謝謝,羅布。加入最大秩序= 9,ARIMA(5,1,4)/ ARMA(5,4)的AIC爲1e + 20,不管它是什麼意思,所以它仍然選擇ARIMA(3,1,0)/ ARMA 3,0)爲最佳。 – andrekos 2009-11-03 06:23:03

+0

當適配存在問題時,auto.arima()返回1e20的AIC(即10^20)。這可能是一個收斂問題,或者這些參數可能接近平穩性和可逆性的邊界。這些信號表明該模型可能存在問題,最好不要使用。 – 2009-11-03 07:13:11

+0

一如既往,感謝您對stackoverflow的貢獻,Rob! – griffin 2009-11-03 16:44:37