预测每小时分区数据和绘图

时间:2016-02-13 19:24:13

标签: r forecasting

我正在尝试根据过去几年的数据预测每小时销售额,使用x轴SaleDateTime显示预测图,并根据测试日期集检查准确性。我一直在遇到错误。

我尝试使用dput生成一小部分数据样本但由于某种原因,它仍尝试输出更多日期,然后我在子集样本数据中输出。

我的数据如下:SaleDateTime =“2015-01-02 23:00:00.000”和SaleCount =“1”。

看起来我的主要问题是如何将数据划分为训练和测试集。

另外我想在情节上的x轴有“2015-03-01 23:00:00”的形式。我对预测很陌生,所以非常感谢所有的帮助。

代码:

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

SampleData <- read.csv("SampleDataAll.csv")

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

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

eventdata <- zoo(Value, order.by = rDateTime)
timeseries <- ts(eventdata$SaleCount, frequency=24)

##Partitioning data Training/Testing
ts1Train <- window(timeseries,start="2011-08-01 00:00:00", end="2014-08-01 00:00:00")

错误: window.default(x,...)出错:'start'不能在'end'之后 另外:警告信息: 在window.default(x,...)中:'end'值未更改

ts1Test <- window(timeseries,start="2014-08-01 01:00:00", end="2015-08-01 00:00:00")

window.default(x,...)出错:'start'不能在'end'之后 另外:警告信息: 在window.default(x,...)中:'end'值未更改

fcast2<-forecast(ts1Train,h=8764)

错误: 预测错误(ts1Train,h = 8764):找不到对象'ts1Train'

plot(fcast2)

accuracy(fcast2,ts1Test)

错误: 频率误差(x):未找到对象'ts1Test'

更新:

我根据建议对下面的更改进行了如何划分培训和测试数据。现在,当我尝试在ts1Test数据上运行准确性时,我收到以下错误消息。

新守则:

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 :(得分:0)

您可以在将数据转换为时间序列函数之前尝试拆分函数。例如:

train <- sampleData[1:100,]   # choose the first 100 row as training set
test  <- sampleData[101:200,] # choose the following 100 row as testing set

您的代码中存在以下几个问题:

  1. start函数中的window参数接受整数(作为年份)或向量(年和月)。 ?window会提供更多信息。

  2. 第一个window函数的错误不会为以下代码提供预期的输入,特别是forecast部分。

  3. 顾名思义,
  4. forecast是一个预测函数。您需要在训练数据上构建时间序列模型(例如,使用arima函数)。

  5. 我建议你阅读一些时间序列教程,这里是一个: https://a-little-book-of-r-for-time-series.readthedocs.org/en/latest/