2016-02-15 2 views
1

У меня есть данные формы SaleDateTime = '2015-01-02 23: 00: 00.000' SaleCount = 4.Создать прогноз и проверить точность

Я пытаюсь создать почасовой прогноз на следующие 12 часов, используя приведенный ниже код.

Я новичок в прогнозировании и могу определенно оценить некоторые советы.

Я пытаюсь разбить данные, подготовить модель, построить прогноз с осью x формы «2015-01-02 23: 00: 00.000» и проверить точность модели во время тестирования серии.

Я получаю сообщение об ошибке ниже, когда я пытаюсь выполнить точность, как показано. Кто-нибудь знает, почему я получаю сообщение об ошибке ниже?

Когда я запустил график, как показано ниже, он имеет ось x от 0 до 400, кто-нибудь знает, как показать это как нечто вроде «2015-01-02 23: 00: 00.000»? Я также хотел бы сузить сюжет до последнего слова 3 месяца.

Я понимаю, что если вы не укажете модель для прогноза, то она попытается подобрать лучшую модель, которая может быть использована для данных для прогноза. Это верно?

Как отфильтровать для одного и того же диапазона с прогнозом как ts1Test, на который я пытаюсь выполнить точность, это что-то вроде ts (fcast2, start = 2001, end = 8567)?

Поскольку я использую пакет зоопарка, это необязательный шаг asPOSIXct, могу ли я просто сделать 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) 

Новая ошибка:

Error in -.default(xx, ff[1:n]) : non-numeric argument to binary operator

+0

Перекрестных писали: http://stats.stackexchange.com/questions/196624/hourly-forecast-creation-and-accuracy- тестирование –

ответ

1

Для того, чтобы ваш тест точности перспективы вы должны убедиться, что длина ваших данных испытаний ts1Test и ваш горизонт прогнозирования, h в fcast2<-forecast(ts1Train,h=8567) имеет одинаковую длину. Теперь у вас есть 26567 datapoints vs 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 пакета. Вам не нужны они forecast. ts(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

Смежные вопросы