2009-12-14 39 views
7

我有一個固定的時間序列,我想要擬合一個自迴歸項的線性模型來校正序列相關,即使用公式At = c1 * Bt + c2 * Ct + UT,其中UT = R * UT-1 +等GLM與自迴歸項來糾正序列相關

(UT爲AR(1)項,以校正誤差項序列相關)

誰知道R中使用什麼模型這個?

感謝 卡爾

回答

8

GLMMarp包將適合這些模型。如果你只是想要一個具有高斯誤差的線性模型,你可以用arima()函數來做到這一點,其中通過xreg參數指定協變量。

+0

封裝GLMMarp從CRAN庫中刪除。你知道任何其他可以實現這個目標的軟件包嗎? – TMS 2014-03-18 21:44:14

+0

我所知道的有關軟件包在http://cran.r-project.org/web/views/TimeSeries.html上市 – 2014-03-19 00:18:48

2

什麼是你的鏈接功能?

你描述它的方式聽起來像一個帶有自相關錯誤的基本線性迴歸。在這種情況下,一種選擇是使用lm來獲得係數的一致估計值並使用Newey-West HAC standard errors

我不確定GLM更普遍的最佳答案。

3

有幾種方法可以做到這一點R.下面是使用自帶的R.

arima()功能"Seatbelts" time series dataset in the datasets package兩個例子來封裝:附帶R.統計該函數的參數形式order=c(p, d, q)您可以在其中指定自迴歸,積分和移動平均分量的順序。在你的問題中,你建議你想創建一個AR(1)模型來糾正錯誤中的一階自相關,就是這樣。我們可以用下面的命令來做到這一點:

arima(Seatbelts[,"drivers"], order=c(1,0,0), 
     xreg=Seatbelts[,c("kms", "PetrolPrice", "law")]) 

訂單的值指定我們需要AR(1)模型。 xreg組件應該是我們想要作爲迴歸的一部分添加的一系列其他X.輸出看起來有點像summary.lm()的輸出側。

另一個替代過程可能更適合您的方式迴歸模型在nlme package中使用gls()。下面的代碼接通安全帶時間序列對象到一個數據幀,然後提取並增加了新的一列(),這只是在排序時間序列對象的計數器:

Seatbelts.df <- data.frame(Seatbelts) 
Seatbelts.df$t <- 1:(dim(Seatbelts.df)[1]) 

兩個以上行只有獲取數據。由於arima()功能是爲時間序列而設計的,因此它可以更輕鬆地讀取時間序列對象。爲了使用nlme來擬合模型,您可以運行:

library(nlme) 
m <- gls(drivers ~ kms + PetrolPrice + law, 
     data=Seatbelts.df, 
     correlation=corARMA(p=1, q=0, form=~t)) 
summary(m) 

以「correlation」開頭的行是您將ARMA關聯結構傳遞給GLS的方式。結果將不完全相同,因爲arima()使用最大似然來估計模型,gls()默認情況下使用受限制的最大似然。如果您將method="ML"添加到gls()的調用中,您將得到與上述ARIMA函數相同的估算值。