Прогноз непериодических временных рядов с R
У меня две проблемы с прогнозированием непериодических (несезонных) данных временных рядов. 1- Я хочу прогнозировать около 230 образцов с 102 тренировками 2- как уже упоминалось, эти данные не являются периодическими, и я не получаю хороших результатов.
Я пытался использовать пакет прогноза (ETS), но результат является линейным. Кроме того, я попробовал ARIMA и другие онлайн-решения. Какой пакет в этом случае лучший? Это данные:
data<-c(0.912039419,0.967,1.074,1.139,0.955,0.9,0.975,0.983,0.8745,0.894,0.871,0.834,0.906672936,0.908150096,1.059,0.952,0.895,0.944666667,1.010666667,1.0085,0.911,1.15,0.9825,0.8955,0.888274541,0.8985,0.892252778,0.979,0.9685,0.9095,0.891535613,0.854,0.898643358,0.945,1.002,0.8945,0.899878442,0.904,0.904889356,0.799,0.916999404,0.966,0.955,0.97875,0.922,0.881,0.906,0.948,1.023,1.092666667,1.052333333,0.918333333,0.967,1.049,1.095,1.1165,0.834,1.059,0.8705,1.0265,0.738,0.937,1.0405,0.85,1.0885,0.901,0.911,1.0735,0.968,0.8955,0.8985,0.979,0.9685,0.886,0.933,0.854,0.9595,1.03,0.8945,0.904,0.8585,1.014,0.9325,0.9155,0.893,1.118,1.1665,1.0045,0.9,0.932878788,0.892,0.932,1.118,1.1665,1.118,1.194,1.113,0.922,0.9295,1.276,1.329,1.3505)
Используя этот код: результат <- прогноз (ets (x, модель = "ZZZ", демпфированный = ИСТИНА), h = 234) $ среднее
Я получаю этот прогноз
Я перепробовал все эти пакеты, но не получил хороших результатов. Все результаты являются постоянными только предсказывая 10 образцов. Любая идея?
# ARIMA
fit.arima <- auto.arima(x)
forecast(fit.arima,h=10)
Point Forecast Lo 80 Hi 80 Lo 95 Hi 95
103 1.197507 1.074395 1.320618 1.0092237 1.385789
104 1.165417 1.034176 1.296658 0.9647016 1.366133
105 1.158687 1.024239 1.293134 0.9530672 1.364306
106 1.157275 1.020380 1.294170 0.9479118 1.366638
107 1.156979 1.017810 1.296148 0.9441378 1.369820
108 1.156917 1.015536 1.298297 0.9406942 1.373139
109 1.156904 1.013352 1.300456 0.9373602 1.376447
110 1.156901 1.011211 1.302591 0.9340877 1.379714
111 1.156901 1.009104 1.304697 0.9308650 1.382936
112 1.156900 1.007027 1.306774 0.9276882 1.386113
#--------------------------------------------
# TBATS
fit.tbats <- tbats(x)
forecast(fit.tbats,h=10)
Point Forecast Lo 80 Hi 80 Lo 95 Hi 95
103 1.158007 1.023787 1.309822 0.9591528 1.398087
104 1.158007 1.021329 1.312974 0.9556336 1.403236
105 1.158007 1.018924 1.316074 0.9521930 1.408306
106 1.158007 1.016567 1.319125 0.9488268 1.413302
107 1.158007 1.014257 1.322130 0.9455310 1.418229
108 1.158007 1.011991 1.325091 0.9423020 1.423089
109 1.158007 1.009766 1.328010 0.9391364 1.427885
110 1.158007 1.007582 1.330888 0.9360313 1.432622
111 1.158007 1.005436 1.333729 0.9329838 1.437302
112 1.158007 1.003326 1.336534 0.9299913 1.441927
#--------------------------------------------
library(tsintermittent)
# Croston’s method
f.crost <- crost(x,h=10,outplot=1)
f.crost$frc.out
[1] 1.03952 1.03952 1.03952 1.03952 1.03952 1.03952 1.03952 1.03952
[9] 1.03952 1.03952
#--------------------------------------------
# Single Exponential Smoothing
sexsm(x,h=10)$frc.out
[1] 0.981276 0.981276 0.981276 0.981276 0.981276 0.981276 0.981276
[8] 0.981276 0.981276 0.981276
#--------------------------------------------
# SBA
crost(x,h=10,type="sba")$frc.out
[1] 1.013801 1.013801 1.013801 1.013801 1.013801 1.013801 1.013801
[8] 1.013801 1.013801 1.013801
#--------------------------------------------
# Moving Average Croston
crost.ma(x,h=10)$frc.out
[1] 0.9798783 0.9798783 0.9798783 0.9798783 0.9798783 0.9798783 0.9798783
[8] 0.9798783 0.9798783 0.9798783
#--------------------------------------------
# TSB
tsb(x,h=10)$frc.out
[1] 1.03952 1.03952 1.03952 1.03952 1.03952 1.03952 1.03952 1.03952
[9] 1.03952 1.03952
#--------------------------------------------
# IMAPA
imapa(x,h=10)$frc.out
[1] 0.9774082 0.9774082 0.9774082 0.9774082 0.9774082 0.9774082 0.9774082
[8] 0.9774082 0.9774082 0.9774082
#--------------------------------------------
# ADIDA
as.vector(imapa(x,h=10,minimumAL=10+1,maximumAL=10+1)$frc.out)
[1] 0.9556603 0.9556603 0.9556603 0.9556603 0.9556603 0.9556603 0.9556603
[8] 0.9556603 0.9556603 0.9556603