我想确保理解R fit
和summary
函数。
以下是我如何将它们用于包含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]
进行比较?
答案 0 :(得分: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
越接近零,模型越好。