R
AR的估計(ppp) R 中的“lm”與“arima”的模型:不同的結果
我正在閱讀《預測:原則與實踐》一書,同時嘗試“手動”編寫所有內容,以便更好地理解。
我發現了一些我無法解釋的東西:
- 給定由 AR(2) 過程生成的時間序列,
- 我嘗試將其建模為線性回歸問題
- 從我到目前為止所讀到的內容來看——應該完全有可能使用這兩種方法找到匹配的係數。
不幸的是,我得到了不同的結果。問題是為什麼?
AR(p) 模型由以下等式描述:
我已經將時間序列滯後了 1 和 2,並創建了具有三列的經典數據框:
- 當前 x
- t-1 x
- t-2 x 並執行回歸。
R代碼示例如下:
library(xts) x <- arima.sim(model = list(order=c(2,0,0), ar=c(0.6,0.3)), n=100) x.ts <- as.xts(x) # Generate dataframe x.lag1 <- lag(x.ts, 1) x.lag2 <- lag(x.ts, 2) x.df <- data.frame( x.curr=x.ts[-c(1:2)], x.lag1=x.lag1[-c(1:2)], x.lag2=x.lag2[-c(1:2)] ) # Fit regression fit.x <- lm(x.curr ~ ., data=x.df) summary(fit.x) # Fit ARIMA arima(x = x.ts, order = c(2,0,0), include.mean = FALSE)
結果完全不同:
#Regression results Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) 0.08173 0.11102 0.736 0.463 x.lag1 0.54860 0.10082 5.441 4.11e-07 *** x.lag2 0.15724 0.09883 1.591 0.115 # Arima results ar1 ar2 intercept 0.5919 0.1645 0.5572 s.e. 0.0983 0.1009 0.4268
係數相似,但略有不同。問題:
- 為什麼會這樣?AR(p)過程中的每個觀察中都包含這個隨機誤差分量嗎?
- 如何使用回歸對具有差分(非平穩)的 ARMA 過程進行建模?我應該像這樣將回歸模型擬合到差異和滯後的時間序列嗎?
有幾個原因。一方面,您的 ARMA 模型不包括均值/截距。另一方面,ARMA 默認情況下僅使用平方和來查找迭代最大似然方案的起點。最小二乘回歸(丟棄早期數據點)通常稱為時間序列中的條件平方和 (CSS)。
這些應該匹配
summary(lm(x.curr ~ ., data=x.df)) arima(x = x.ts, order = c(2,0,0), include.mean = T, method="CSS") # note the mean and method arguments
好吧,您會注意到
lm
' 截距和arima
' 均值之間存在差異。關係是截距等於平均時間. 您可以驗證這是否有效。此外,這使一切變得更加混亂,該
arima
函數將調用它的意思為截距。這是其他問題(例如此問題)中涉及的一個眾所周知的問題,並且在此處也進行了說明。還有一件事:只有在查看均值零 AR 模型時,您對 AR(p) 模型的描述才是正確的。一般來說,你可以把它寫成
在哪裡是平均值,或
在哪裡是截距。這將幫助您解決上述截距/均值困境。 最後,關於你的最後一個問題:
如何使用回歸對具有差分(非平穩)的 ARMA 過程進行建模?我應該像這樣將回歸模型擬合到差異和滯後的時間序列嗎?
您可以區分您的非平穩序列,也許
diff
在 R 中,或者通過將order
調用中的參數更改為arima
. 例如,將 AR(3) 擬合到差異數據與 ARIMA(3,1,0) 相同,因此需要參數c(3,1,0)
。