每日和每周数据的傅里叶变换
Fourier transform for daily & weekly data
我有每天的数据(虚拟数据如下):
Date Value
01/01/2014 610413
02/01/2014 243374
03/01/2014 459427
04/01/2014 243769
05/01/2014 415550
06/01/2014 345504
07/01/2014 583661
08/01/2014 406861
09/01/2014 326838
10/01/2014 389894
数据 运行 到 2016 年为止 & 我想 运行 一个 arima 模型 & 当我检查每日季节性时:
#Check for daily seasonality
ets(Data2)
fit <- tbats(Data2)
seasonal <- !is.null(fit$seasonal)
seasonal
& 结果是
季节性的
[1] 正确
#Check for weekly seasonality
timeSeriesObj = ts(Data2,start=c(2014,1,1),frequency=7)
fit <- tbats(timeSeriesObj)
seasonal <- !is.null(fit$seasonal)
seasonal
& 结果是
季节性 [1] 真
我需要生成未来 3 年的预测并考虑到我希望使用傅立叶项的季节性。但我不太熟悉如何生成傅立叶项。我浏览了论文 https://robjhyndman.com/hyndsight/forecasting-weekly-data/
但是如何优化 select 傅立叶项的数量。根据论文,我 运行 以下代码:
bestfit <- list(aicc=Inf)
for(i in 1:25)
{
fit <- auto.arima(data_ts, xreg=fourier(data_ts, K=i), seasonal=FALSE)
if(fit$aicc < bestfit$aicc)
bestfit <- fit
else break;
}
bestfit
fc <- forecast(bestfit, xreg=fourier(data_ts, K=7, h=104))
plot(fc)
但是预测片报错:
forecast.Arima(bestfit, xreg = fourier(data_ts, K = 7, h = 104)) 错误:
回归量的数量与拟合模型不匹配
这是因为我无法确定 'K' 的最佳数量。此外,是否有更好的替代方法来处理我在数据中的季节性。
提前致谢。
fc <- forecast(bestfit, xreg=fourier(data_ts, K=7, h=104))
我认为 K
应该是您最适合的 K
(在本例中为 i
),它可以最小化 AICc,而不是 7。
希望对您有所帮助。
这可能会有所帮助,不确定您是否还需要答案:
bestfit <- list(aicc=Inf)
for(i in 1:25)
{
fit <- auto.arima(data_ts, xreg=fourier(data_ts, K=i), seasonal=FALSE)
if(fit$aicc < bestfit$aicc)
bestfit <- fit
else break;
print(i)
}
如果您包含 print(i)
,那么最后出现的数字就是您的最佳 K 值。
我有每天的数据(虚拟数据如下):
Date Value
01/01/2014 610413
02/01/2014 243374
03/01/2014 459427
04/01/2014 243769
05/01/2014 415550
06/01/2014 345504
07/01/2014 583661
08/01/2014 406861
09/01/2014 326838
10/01/2014 389894
数据 运行 到 2016 年为止 & 我想 运行 一个 arima 模型 & 当我检查每日季节性时:
#Check for daily seasonality
ets(Data2)
fit <- tbats(Data2)
seasonal <- !is.null(fit$seasonal)
seasonal
& 结果是 季节性的 [1] 正确
#Check for weekly seasonality
timeSeriesObj = ts(Data2,start=c(2014,1,1),frequency=7)
fit <- tbats(timeSeriesObj)
seasonal <- !is.null(fit$seasonal)
seasonal
& 结果是 季节性 [1] 真 我需要生成未来 3 年的预测并考虑到我希望使用傅立叶项的季节性。但我不太熟悉如何生成傅立叶项。我浏览了论文 https://robjhyndman.com/hyndsight/forecasting-weekly-data/ 但是如何优化 select 傅立叶项的数量。根据论文,我 运行 以下代码:
bestfit <- list(aicc=Inf)
for(i in 1:25)
{
fit <- auto.arima(data_ts, xreg=fourier(data_ts, K=i), seasonal=FALSE)
if(fit$aicc < bestfit$aicc)
bestfit <- fit
else break;
}
bestfit
fc <- forecast(bestfit, xreg=fourier(data_ts, K=7, h=104))
plot(fc)
但是预测片报错:
forecast.Arima(bestfit, xreg = fourier(data_ts, K = 7, h = 104)) 错误: 回归量的数量与拟合模型不匹配 这是因为我无法确定 'K' 的最佳数量。此外,是否有更好的替代方法来处理我在数据中的季节性。
提前致谢。
fc <- forecast(bestfit, xreg=fourier(data_ts, K=7, h=104))
我认为 K
应该是您最适合的 K
(在本例中为 i
),它可以最小化 AICc,而不是 7。
希望对您有所帮助。
这可能会有所帮助,不确定您是否还需要答案:
bestfit <- list(aicc=Inf)
for(i in 1:25)
{
fit <- auto.arima(data_ts, xreg=fourier(data_ts, K=i), seasonal=FALSE)
if(fit$aicc < bestfit$aicc)
bestfit <- fit
else break;
print(i)
}
如果您包含 print(i)
,那么最后出现的数字就是您的最佳 K 值。