2017-10-28 75 views
0

我想確保我瞭解R的fitsummary函數。R的arima預測的交叉驗證

這裏是我如何使用他們的100個數據點的時間序列被分爲訓練和測試樣品:

x = ts(MyData) 
train = x[1:80,1] 
test = x[81:length(x), 1] 
fit = arima(train, order=c(1,1,0)) 
summary(fit, test) 

我是在我的思想糾正summary將比較的時間擬合模型步驟81到100到實際值x[81], x[82], ..., x[100]

回答

1

methods(summary)顯示以下列表:

> methods(summary) 
[1] summary.aov     summary.aovlist*   summary.aspell* 
[4] summary.check_packages_in_dir* summary.connection   summary.data.frame  
[7] summary.Date     summary.default    summary.ecdf* 
[10] summary.factor     summary.glm     summary.infl* 
[13] summary.lm      summary.loess*    summary.manova 
[16] summary.matrix     summary.mlm*    summary.nls*  
[19] summary.packageStatus*   summary.PDF_Dictionary*  summary.PDF_Stream* 
[22] summary.POSIXct    summary.POSIXlt    summary.ppr*   
[25] summary.prcomp*    summary.princomp*   summary.proc_time 
[28] summary.shingle*    summary.srcfile    summary.srcref  
[31] summary.stepfun    summary.stl*    summary.table 
[34] summary.trellis*    summary.tukeysmooth*  summary.yearmon* 
[37] summary.yearqtr*    summary.zoo* 

正如你可以看到有對Arima類沒有方法(這是班級的fit對象的),所以這是不會發生什麼變化(即您是不會將您的預測與您的實際值進行比較)。您從上面的列表中使用summary.default

您可以從以下也看到這一點:

a <- arima(USAccDeaths, order = c(1,1,0)) 
identical(summary(a), summary(a, USAccDeaths[1:100])) 
#[1] TRUE 

summary(a)summary(a, USAccDeaths[1:100])沒有什麼區別。

比較使用RMSE:

library(forecast) 
fit <- arima(USAccDeaths[1:50], order = c(1,1,0)) 
preds <- as.vector(forecast(fit, h = 10)$mean) 
RMSE <- sqrt(mean((preds - as.vector(USAccDeaths[51:60]))^2)) 
RMSE 
#[1] 2056.483 

越靠近零更好的模型。

+0

那麼根據測試數據集檢查預測的正確方法是什麼? – theQman

+0

沒有最終的正確方法。我通常使用RMSE來評估適合度。但是像MAPE或MAE這樣的方法有很多。這些可以很容易地從殘差中計算出來。這裏是[鏈接](https://heuristically.wordpress.com/2013/07/12/calculate-rmse-and-mae-in-r-and-sas/)。 – LyzandeR

+0

我知道沒有單一的最佳度量標準,但我仍然不明白如何使用任何度量標準在R中比較模型預測與實際測試數據。 – theQman