2016-02-13 17 views
1

我試圖根據過去幾年的數據來預測小時銷售量,使用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,...): '開始' 不能 '端' 除了後:警告消息: 在window.default (X,...): '結束' 值不改變window.default

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

錯誤(X,...): '啓動' 不能是 '結束' 此外之後:警告消息: 在window.default(x,...)中:'結束'值沒有改變

fcast2<-forecast(ts1Train,h=8764) 

錯誤: 錯誤預測(ts1Train,H = 8764):對象 'ts1Train' 未找到

plot(fcast2) 

accuracy(fcast2,ts1Test) 

錯誤: 錯誤頻率(X):對象 'ts1Test'沒有找到

UPDATE:

我做下面我如何按照建議分區訓練和測試數據的變化。當我嘗試運行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]): 非數值參數二元運算

回答

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. window功能start參數接受整數(如一年)或載體(年份和月份)。 ?window將提供更多信息。

  2. 從第一個window函數的錯誤將不會給出以下代碼的預期輸入,特別是forecast部分。

  3. forecast顧名思義,是一種預測功能。您需要在訓練數據上構建時間序列模型(例如,使用arima函數)。

我建議你讀一段時間的系列教程,這裏是一個: https://a-little-book-of-r-for-time-series.readthedocs.org/en/latest/

+0

我想如果你沒有通過預測功能的模型,可以試圖找到最好的模式,以適應數據? – user3476463

+0

我使用修改的代碼對訓練和測試數據進行了分區,更新了原始文章。我是否正確,如果您未指定模型,則預測函數會嘗試根據您傳遞的時間序列來查找用於預測數據的最佳模型?當我嘗試運行精確度函數時,您是否發現了導致錯誤的原因? – user3476463

+0

據我所知,'預測'不用於構建時間序列模型,請檢查'?預測'。要運行自動時間序列擬合過程,您可以查看此預測包中的'auto.arima'函數。 –