FB-Пророк, получающий точки изменения в R: что представляет m$точки изменения.t?

#r #time-series #facebook-prophet

Вопрос:

Я использую алгоритм Пророка Facebook для определения точек изменений во временных рядах. Когда я просматривал учебник на веб-сайте, я заметил, что в выводе вызова есть несколько векторов prophet() , которые относятся к точкам изменения.

Предположим, что m ваш пророк выхода объекта, чем m$changepoints выводит вектор с датами изменения и m$params$delta выводит изменение цены (я полагаю), как описано в статье: «генеративные модели тенденцией является то, что есть с changepoints по истории Т точек, каждая из которых имеет скорость изменения формула» (Тейлор и Letham, 2018. П. 40).

Но что именно m$changepoints.t ? Сначала я думал, что этот вектор содержит значения исходного временного ряда в момент времени t, когда была обнаружена точка изменения. Но когда я проверяю значения m$changepoints.t , он имеет значения от 0 до 1, в то время как мой исходный временной ряд не имеет значений ниже 5.263.

Вот код:

 # load in the log number of views to Peyton Manning’s Wikipedia page
peytondf <- read.csv("https://raw.githubusercontent.com/facebook/prophet/ba9a5a2c6e2400206017a5ddfd71f5042da9f65b/examples/example_wp_log_peyton_manning.csv")

# make a prophet object
m <- prophet(peytondf)

# Prepare a dataframe with dates over which to predict new values
future <- make_future_dataframe(m, periods = 30)

# make a forecast over the dates in the future
forecast <- predict(m, future)
 

Давайте сравним некоторые различные результаты точек изменения и сводную статистику исходного временного ряда.

 > print(m$params$delta)
              [,1]         [,2]      [,3]      [,4]         [,5]          [,6]       [,7]
[1,] -7.747987e-08 5.963255e-08 0.3511606 0.4575449 3.446425e-09 -3.234277e-05 -0.2446286
           [,8]        [,9]        [,10]         [,11]     [,12]     [,13]       [,14]
[1,] -0.2479764 2.22051e-08 4.905514e-08 -4.845165e-08 0.2993031 0.2125642 0.001508987
            [,15]      [,16]         [,17]         [,18]        [,19]     [,20]      [,21]
[1,] 0.0001771334 -0.8544597 -8.687544e-07 -8.719968e-08 7.831569e-07 0.4638492 0.01226102
            [,22]      [,23]        [,24]         [,25]
[1,] 1.597865e-07 -0.3350588 8.737527e-08 -3.928844e-08

> print(m$changepoints.t) 
 [1] 0.03307459 0.06513669 0.10327371 0.13533581 0.16672292 0.19811002 0.23152211 0.26425920
 [9] 0.29632130 0.33007087 0.36145798 0.39284509 0.42423220 0.45561930 0.48768140 0.51974350
[17] 0.55146811 0.58285521 0.61390483 0.64529193 0.67667904 0.70840364 0.73979075 0.77151536
[25] 0.80290246

> summary(peytondf)
      ds                  y         
 Length:2905        Min.   : 5.263  
 Class :character   1st Qu.: 7.515  
 Mode  :character   Median : 7.998  
                    Mean   : 8.139  
                    3rd Qu.: 8.580  
                    Max.   :12.847 
 

Ответ №1:

По умолчанию prophet использует 25 потенциальных точек изменений, равномерно распределенных по вашим временным рядам, но некоторые из них остаются неиспользованными. печать(m$точки изменения.t) показывает все потенциальные точки изменения. Вы можете визуализировать точки изменений, которые в конечном итоге были использованы с

 plot(m, forecast)   add_changepoints_to_plot(m)
 

введите описание изображения здесь

Тенденции Меняются.

Комментарии:

1. Спасибо за ваш ответ, я все еще немного озадачен тем, что представляют собой значения потенциальных точек изменения. Или они вообще не представляют собой ничего полезного? Можно ли , например, понимать это как некое число, которое предполагает, насколько вероятно, что потенциальная точка изменения превратится в реальную точку изменения?

2. Если вы посмотрите на ненулевые значения paras$delta, то увидите, что в модели есть точка перегиба. Так что, насколько я понимаю, именно здесь происходят точки изменения. В местах, где дельта парас$близка к нулю, протекторная дорожка просто продолжается без изменений. Обратите внимание, что по умолчанию prophet помещает точки изменений только в первые 80% временного ряда, поэтому значения m$точек изменений.t являются фракционированным расстоянием между временными рядами. Чтобы увидеть 25 фактических раз, используйте точки изменения m$. Таким образом, фактическими точками изменений, которые использует prophet, являются точки изменения m$, где m$парас$дельта не равна нулю.