#r #date #time #time-series #prediction
Вопрос:
У меня есть следующий df, и мне нужно сделать прогнозы на срок до 60 месяцев для нерегулярных временных рядов, как бы я это сделал? Нужно ли мне сначала преобразовать месяц в дату? есть ли какие-либо пакеты, на которые просто ушли бы месяцы, или это должна быть фактическая дата?
df=data.frame(Month=c(0,3,6,9,12,18,24,36),avg=c(0.9,1.0,0.95,0.98,0.97,0.93,0.91,0.85))
Комментарии:
1. Тебе нужен оракул.
2. Я не уверен, что понимаю @user2974951
Ответ №1:
Плотность Гаусса, умноженная на скалярный коэффициент, по-видимому, достаточно хорошо соответствует данным. Затем мы могли бы экстраполировать это.
fm <- nls(avg ~ dnorm(Month, mean, sd), df,
start = list(mean = 10, sd = 1), alg = "plinear")
plot(avg ~ Month, df)
lines(fitted(fm) ~ Month, df, col = "red")
Таким образом, мы имеем:
predict(fm, list(Month = max(df$Month) 1:60))
давая эти прогнозы на месяцы с 37 по 96:
[1] 0.8310901 0.8219951 0.8126746 0.8031385 0.7933969 0.7834600 0.7733383
[8] 0.7630421 0.7525820 0.7419684 0.7312120 0.7203234 0.7093132 0.6981920
[15] 0.6869704 0.6756589 0.6642679 0.6528078 0.6412889 0.6297213 0.6181151
[22] 0.6064803 0.5948265 0.5831633 0.5715003 0.5598465 0.5482111 0.5366029
[29] 0.5250304 0.5135021 0.5020261 0.4906104 0.4792625 0.4679899 0.4567997
[36] 0.4456987 0.4346937 0.4237909 0.4129963 0.4023157 0.3917547 0.3813183
[43] 0.3710116 0.3608391 0.3508052 0.3409139 0.3311690 0.3215741 0.3121323
[50] 0.3028466 0.2937196 0.2847538 0.2759513 0.2673139 0.2588434 0.2505410
[57] 0.2424080 0.2344452 0.2266534 0.2190328
Комментарии:
1. У меня есть вопрос, вы бы не использовали временные ряды для этих данных?
2. Функции серии t ime в основном требуют данных с регулярным интервалом, поэтому они здесь неприменимы.