Временные ряды Python, верните оригинал после внесения двух различий

#python #pandas #time-series

#python #pandas #временные ряды

Вопрос:

У меня есть данные длинного временного ряда. Но давайте просто используем минимальный пример здесь, с 10 случайными числами в качестве моего набора данных временных рядов.

 In [60]: from numpy.random import RandomState                                   

In [61]: prng = RandomState(32)                                                 

In [62]: series = pd.Series(prng.random(10))                                    

In [63]: series                                                                 
Out[63]: 
0    0.858889
1    0.372711
2    0.555129
3    0.955657
4    0.736670
5    0.816205
6    0.101087
7    0.928488
8    0.609109
9    0.596553
dtype: float64
  

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

 In [64]: series['diff'] = series.diff().diff()                                                   
Out[64]: 
0         NaN
1         NaN
2    0.668596
3    0.218110
4   -0.619515
5    0.298522
6   -0.794654
7    1.542520
8   -1.146780
9    0.306823
dtype: float64
  

Теперь я применяю ARIMA модель для прогнозирования:

 arima_model = ARIMA(series['diff'],order=(1,0,0) 
results_arima = arima_model.fit(disp=-2)
prediction = results_arima.fittedvalues
  

Теперь prediction будет иметь только 8 значений, так как мы сделали два различия. Как мне сделать, чтобы prediction массив был в том же масштабе, что и мой оригинал series ?
т. Е. prediction Массив не будет иметь того же «масштаба», что и мой оригинал series , а также будут отсутствовать первые два значения.

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

1. Можете ли вы показать ожидаемый результат?

2. prediction Массив не имеет того же масштаба, что и моя оригинальная серия, а также не хватает двух значений. Я хочу вернуть его к тому же масштабу, что и моя оригинальная серия, а также вернуть первые две недостающие точки.

3. После двух различий первые два значения станут NaN , какими бы вы хотели, чтобы они были?

4. вы могли бы согласовать прогноз с series.loc[2:, 'pred'] = prediction

5. отсутствие прогноза для первых значений является всего лишь результатом примененного вами преобразования, обойти это невозможно (т. Е. Вы не можете получить прогноз, если series['diff'] == NaN )

Ответ №1:

Проверьте с reindex

 news = pd.Series(prediction, index=series.index[series.notna()]).reindex(series.index)