2017-10-28 242 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