Мне 2 месяца до концепций прогнозирования, но я стараюсь учиться и продолжать практиковать. Здесь я пытаюсь предсказать недельный продукт с использованием различных методов прогнозирования в наборе обучающих данных и проверке его точности в наборе тестовых данных. Я пробовал разные методы, такие как ARIMA, TBATS, Holts Winter, UCM, байесовские структурные временные ряды и т. Д. Но не смог улучшить мою точность. Точность кажется очень плохой. Не знаю, где я ошибаюсь. Я также попробовал ARIMA с регрессором, но опять-таки это не очень помогает мне. Я не уверен, что мои коды или мой подход ошибочны. Может ли кто-нибудь помочь мне улучшить мою точность? Ниже еженедельный набор данных (начинается с 8-го декабря, 2012)Прогнозирование в R - ARIMA, TBATS, UCM, байесовские структурные временные ряды и т. Д.
[1] 74 76 78 63 58 58 57 56 85 73 71 91 85
[14] 79 101 74 86 98 131 90 127 116 320 145 121 148
[27] 112 141 153 118 151 151 152 90 147 123 266 99 110
[40] 146 134 76 81 100 80 323 15 22 14 13 19 56
[53] 78 79 70 79 24 26 31 35 45 33 41 41 61
[66] 91 83 76 57 68 87 82 105 76 107 116 105 124
[79] 127 149 124 120 111 122 134 87 80 81 89 40 63
[92] 112 85 131 97 51 65 74 70 47 62 60 49 47
[105] 56 64 57 58 45 56 60 49 82 49 61 71 61
[118] 92 90 75 69 114 79 144 121 133 132 114 124 152
[131] 125 112 128 124 152 95 64 59 91 132 146 120 196
[144] 212 115 125 66 68 78 83 74 300 46 98 86 95
[157] 61 73 89 56 81 60 58 101 482 55 124 72 57
[170] 51 82 55 68 105 153 113 105 85 34 77 95 96
[183] 97 94 81 104 76 97 65 42 18 11
Я рассмотрел мой период обучения, как 178 недель и тестирование в 14 недель. Позволяет сказать, «данные» мой dataframe с «единицы», как мой ColName,
series <- ts(data, start=2012+342/365.25, frequency = 365.25/7)
kk <- 178
seas <- 365.25/7
st <- tsp(series)[1] + (1/seas)*(kk-1)
training <- window(series, end = st)
testing <- window(series, start = st + 1/52.17857, end = st+14/52.17857)
train1 <- training[,"units"]
test1 <- testing[,"units"]
##ARIMA
farima <- forecast(auto.arima(train1),h=14)
acc_arima <- accuracy(farima$mean,test1)
##TBATS
fTBATS <- forecast(tbats(train1,seasonal.periods=c(4,7,12,52)), h=14)
acc_TBATS <- accuracy(fTBATS$mean,test1)
##struTs
fstruTs <- forecast(StructTS(train1), h=14)
acc_struTs <- accuracy(fstruTs$mean,test1)
##UCM
forUCM <- ucm(formula = train1~0, data = train1, level =
TRUE, slope = TRUE)
fUCM <- predict(forUCM$model, n.ahead = 14)
acc_struTs <- accuracy(fUCM$fit,test1)
##Bayesian Structural time series
ss <- AddLocalLinearTrend(list(), train1)
ss <- AddSeasonal(ss, train1, nseasons = 52, season.duration = 7)
model2 <- bsts(train1, state.specification = ss, niter = 500)
fbsts <- predict(model2, horizon = 14, burn = 100)
acc_bsts <- accuracy(fbsts$mean,test1)
Для всех вышеперечисленных методов, мой MAPE выше 100%, что я думаю, что это очень плохо. Может ли кто-нибудь помочь мне улучшить точность? Я буду очень признателен. Спасибо!
Привет, это набор данных одного из встроенных наборов данных? Если это так, я бы рекомендовал загрузить его как часть вашего скрипта, чтобы у вас был воспроизводимый пример кода, который другие могут посмотреть. Если нет, я бы рекомендовал использовать встроенные наборы данных для начального обучения, так как вы можете сравнить свое прогнозирование с тем, что другие смогли достичь. – kabdulla