我試圖評估不同OLS模型的樣本外預測性能。最簡單的時間序列迴歸看起來是這樣的: Y_t = B0 + B1 * Y_t-30 + E_T創建遞歸式樣本外估計以有效計算R中的RMSE的方法
配件期爲模型,比方說50,然後我讓模型運行使用dynlm包
dynlm(as.zoo(Y) ~ L(as.zoo(Y), 30), start = "1996-01-01", end = timelist[i])
在我當前的代碼中,我只是讓索引運行到結束,然後保存相應模型的RMSE。但是這個RMSE並不是預測中的一步,因爲我現在的代碼已經很慢了,甚至沒有做到我想做的事,所以我想問你是否有一個建議我應該用它來實現我的目標。
概括起來講,我要做到以下幾點:
1)一定擬合時間後運行一個遞推回歸(擴大窗口,而不是滾動窗口)
2)提前創建的一步出的樣本外預測
3)計算均方根這些預測與實際觀測的方差來評估模型的性能
我試着這樣做,到目前爲止有一個巨大的for循環和dynlm包,但水庫ults並不是真的令人滿意。 任何輸入是非常感激,因爲我一直在尋找解決方案相當長一段時間了。我會盡快更新我的示例代碼。
# minimal working example
require(xts)
require(zoo)
require(dynlm)
timelist <- seq.Date(from = as.Date("1996-01-01"), to = as.Date("1998-01-01"), by = "days")
set.seed(123)
Y <- xts(rnorm(n = length(timelist)), order.by = timelist)
X <- xts(rnorm(n = length(timelist), mean = 10), order.by = timelist)
# rmse container
rmse.container.full <- data.frame(matrix(NA, ncol = 3, nrow = length(index(timelist))))
colnames(rmse.container.full) <- c("Date", "i", "rmse.m1")
rmse.container.full$Date <- timelist
# fitting period
for(i in 50:length(timelist)) {
# m1
model1 <- dynlm(as.zoo(Y) ~ L(as.zoo(X), 30), start = "1996-01-01", end = timelist[i])
rmse.container.full[i, 2] <- i
rmse.container.full[i, 3] <- summary(model1)$sigma # RSME mod1 etc
print(i)
}
歡迎StackOverflow上這樣做。請看看這些關於如何產生[最小,完整和可驗證的例子](http://stackoverflow.com/help/mcve)的技巧,以及這篇文章[在R中創建一個很好的例子]( http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example)。也許下面的提示[問一個好問題](http://stackoverflow.com/help/how-to-ask)也值得一讀。 – lmo
爲什麼不是結果「非常令人滿意」?這不是我們可以解決的具體問題。如果你需要統計建模方面的幫助,你應該在[stats.se]中提問你的問題,否則請清楚這裏的編程問題是什麼,並且包括一個[可重現的例子](http://stackoverflow.com/questions/5963269/ how-to-make-a-great-r-reproducible-example) – MrFlick
感謝您的建議@MrFlick,我現在看看這個: [鏈接](https://www.otexts.org/fpp )並檢查交叉驗證。 – tester