R

时间:2019-02-09 03:54:42

标签: r time-series xts forecasting smoothing

我的交通流量时间序列很短,我想使用简单指数平滑方法预测交通流量,以便与ARIMA模型进行比较。

我已经完成了ARIMA模型的一部分,但是我对如何格式化数据以应用简单指数平滑模型感到困惑。

之所以使用“简单指数平滑”,是因为我读到它适用于没有趋势或季节性的短时间序列。 我的时间序列为4个月,每小时阅读一次。

我的数据如下:

       Date_Hour       Traffic_Flow      
2017-07-17 00:00:00         50 
2017-07-17 01:00:00         80 
2017-07-17 02:00:00         77 
2017-07-17 03:00:00         89 
2017-07-17 04:00:00         61 
2017-07-17 05:00:00         64

我有2175个观测值,对于训练,将使用1522个观测值(3/4),对于测试,将使用653个观测值。

View(SES_Data)
SES_DataXTS <- as.xts(x= SES_Data[,-1], order.by = as.POSIXct(SES_Data$Date_Hour), frequency = 4)
# Split the Data
training_indices <- 1:floor(0.7 * nrow(SES_DataXTS))
training_data <- SES_DataXTS[training_indices]
test_data <- SES_DataXTS[-training_indices]
#Fit mode:
fit_Model_SES <- ses(training_data ,beta=FALSE, gamma=FALSE)
# Do forecasting
forecast_SES <- forecast(fit_Model_SES,h=653)

进行预测时,出现此错误:

Error in forecast.forecast(fit_Model_SES, h = 653) : 
  Please select a longer horizon when the forecasts are first computed

每小时读取一次数据时如何指定开始和结束? 我找不到如何与xts和zoo对象一起使用简单指数平滑的示例。 如果我将数据转换为ts(),它将忽略每小时的读数。

我尝试了此命令,但我认为它不正确。

tsfunction <- ts(SES_Data, frequency=24, start=2017-07-17 00:00:00, end= 2017-10-15 14:00:00, beta=FALSE, gamma=FALSE)

有什么建议吗?或我可以在短时间序列中使用的其他任何预测技术,将其与ARIMA进行比较

更新:

因此我将命令编辑为:

#Fit mode:
fit_Model_SES <- ses(SES_DataXTS ,beta=FALSE, gamma=FALSE, h=653)
#fit_Model_SES <- ses(training_data1 ,beta=FALSE, gamma=FALSE, h = 653)    
#Model 1: Exponential State Smoothing
f_ets = forecast(fit_Model_SES) # forecast 4 months into the future
plot(f_ets, col="blue")

但是当我绘制预测时,它读取的日期时间格式不正确。

像这样: enter image description here

我正在寻找使用ARIMA模型绘制具有相同数据的预测图:

enter image description here

1 个答案:

答案 0 :(得分:0)

您需要在函数h中指定ses()参数(它将计算预测值)。对于某些功能,例如ses(),您无需在之后调用forecast()

forecast_SES <- forecast(fit_Model_SES, h = 600)

来源:Forecast package Prediction Horizon issue in R