Почему Prophet возвращает отрицательный прогноз, когда все входные данные положительны?

Я пытаюсь делать прогнозы с помощью Facebook Prophet, все данные положительные, но прогнозы отрицательные. Я немного сбит с толку, я прочитал быстрый старт, и если введенные все положительны, то все прогнозы, скорее всего, будут положительными, и форма прогноза аналогична входным, например, если входные данные равны 0,86, тогда выходными данными будут 0,81. Почему это так? Как это исправить?

covid_pr = covid[['date','acc_confirmed']].copy()
covid_pr.rename(columns = {'date':'ds', 'acc_confirmed':'y'},inplace= True)

prt = Prophet()
prt.fit(covid_pr)

future_prt = prt.make_future_dataframe(30)
forecast = prt.predict(future_prt)

Мои входные данные

           ds     y
0  2020-03-02     2
1  2020-03-03     2
2  2020-03-04     2
3  2020-03-05     2
4  2020-03-06     4
5  2020-03-07     4
6  2020-03-08     6
7  2020-03-09    19
8  2020-03-10    27
9  2020-03-11    34
10 2020-03-12    34
etc until thousands

Предсказание fbprophet

     yhat   yhat_lower   yhat_upper
0   -261.572541  -499.409024    -4.741004
1   -208.490561  -446.503629    41.371788
2   -255.114682  -500.580393    -7.825269
3   -208.963597  -481.238870    33.707433
4   -146.566250  -394.337188    96.726382
5    -92.445918  -354.914790   150.409867
6    -38.341696  -293.639411   204.964963
7     83.483534  -158.412231   332.263619
8    136.565514   -95.174934   370.980615
9     89.941393  -153.219255   349.129866
10   136.097121   -95.508485   404.666524
etc until thousands

person random student    schedule 08.05.2020    source источник
comment
Можете ли вы построить график данных и прогнозов? Если есть отрицательная тенденция, вполне вероятно, что прогнозы следуют этой тенденции (для любой хорошей модели), независимо от того, имеет ли это смысл с учетом области моделирования. Я не вижу здесь проблем с кодом как таковых, поэтому лучше задать этот вопрос на перекрестной проверке.   -  person N. Wouda    schedule 08.05.2020
comment
хорошо из компонентов fbprohphet, это показывает, что есть отрицательная еженедельная сезонность   -  person random student    schedule 08.05.2020


Ответы (1)


facebook prophet saturating-minimum page - это то, что вы хотите посмотреть. Вы можете указать предел даже для каждой строки.

https://facebook.github.io/prophet/docs/saturating_forecasts.html#saturating-minimum

Чтобы быть ограниченным, вы должны использовать логистику роста. Предполагая, что ваш будущий фрейм данных называется future, вы можете указать столбец пола, как показано ниже:

future['floor'] = 0
m = Prophet(growth='logistic')
m.fit(df)
result = m.predict(future)
person maede rayati    schedule 08.05.2020
comment
о, хорошо, я впервые использую fbprophet, я уже читал эту ссылку, которую вы даете, а также эту очень похожую ссылку. но я не понимаю, почему мое решение - минимум насыщения. не могли бы вы мне немного объяснить? - person random student; 08.05.2020