Как я могу использовать прошедший месяц во временных рядах?

#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 в основном требуют данных с регулярным интервалом, поэтому они здесь неприменимы.