创建预测和检查准确性

时间:2016-02-15 06:21:21

标签: r forecasting

我的格式为SaleDateTime ='2015-01-02 23:00:00.000'SalendCount = 4。

我正在尝试使用下面的代码创建未来12小时的每小时预测。

我是预测新手,非常感谢一些建议。

我正在尝试对数据进行分区,训练模型,使用“2015-01-02 23:00:00.000”形式的x轴绘制预测,并在测试时间序列上测试模型的准确性

当我尝试运行如图所示的精度时,我收到以下错误消息。有谁知道为什么我收到下面的错误信息?

当我运行如下图所示的情节时,它有一个0到400的x轴,有没有人知道如何显示像'2015-01-02 23:00:00.000'?我还希望将情节缩小到最后说3个月。

我的理解是,如果您没有为预测指定模型,那么它会尝试将最佳模型与预测数据相匹配。这是对的吗?

我如何使用预测作为ts1Test过滤相同的时间序列范围,我正在尝试运行准确度,是否类似于ts(fcast2,start = 2001,end = 8567)?

由于我正在使用zoo包,因此不需要as.POSIXct步骤,我可以只执行eventdata< - zoo(Value,order.by = SaleDateTime)吗?

library("forecast")
library("zoo")

SampleData<-SampleData

Value<-SampleData[,c("SaleDateTime","SaleCount")]

rDateTime<-as.POSIXct(SampleData$SaleDateTime, format="%Y-%m-%d %H:%M:%S")

eventdata <- zoo(Value, order.by = rDateTime)

##Partitioning data Training/Testing
ts1SampleTrain<-eventdata[1:2000,]
ts1Train<-ts(ts1SampleTrain$SaleCount, frequency=24)


ts1SampleTest<-eventdata[2001:28567,]
ts1Test<-ts(ts1SampleTest$SaleCount, frequency=24)



#Training Model
fcast2<-forecast(ts1Train,h=8567)

plot(fcast2)

accuracy(fcast2,ts1Test)

新错误:

  

-.default中的错误(xx,ff [1:n]):二元运算符的非数字参数

1 个答案:

答案 0 :(得分:1)

要进行准确度测试,您应确保测试数据ts1Test的长度和h中预测范围fcast2<-forecast(ts1Train,h=8567)的长度相同。现在您有26567数据点与8567

按照您的方法,下一个玩具示例将起作用:

library(forecast)
library(zoo)

Value <- rnorm(1100)

rDateTime <- seq(as.POSIXct('2012-01-01 00:00:00'), along.with=Value, by='hour')

eventDate <- ts(zoo(Value, order.by=rDateTime), frequency = 24)

tsTrain <-eventDate[1:1000]
tsTest <- eventDate[1001:1100]

fcast<-forecast(tsTrain,h=100)

accuracy(fcast, tsTest)

    ME  RMSE    MAE MPE MAPE    MASE    ACF1
Training set    -2.821378e-04   9.932745e-01    7.990188e-01    1.003861e+02    1.007542e+02    7.230356e-01    4.638487e-02
Test set    0.02515008  1.02271839  0.86072703  99.79208174 100.14023919    NA  NA

关于你的另外两个问题:

使用POSIX时间戳和zoo包。你不需要他们     使用forecastts(Value, frequency)就足够了。

使用日期时间作为标签绘制时间序列对象。该     以下代码片段应该让您从这个方向开始。寻找     提供所需行为的axis函数:

par(mar=c(6,2,1,1)) # bottom, left, top, right margins
plot(tsTrain, type="l", xlab="", xaxt="n")
axis(side=1, at=seq(1,1000,100), label=format(rDateTime[seq(1,1000,100)], "%Y-%m-%d"), las=2)

enter image description here