Я использую подход ARIMA в python, и я разделяю данные в разделении Train и Test.
Как я понял, если я использую np.log
и diff()
, я могу преобразовать его обратно с np.exp
и cumsum()
. Следующий пример из stackoverflow и работает:
import pandas as pd
import numpy as np
np.random.seed(0)
s = pd.Series(np.random.uniform(10,10000, size=50))
df = s.to_frame()
df.columns = ['test']
df['new'] = np.log(df['test']).diff()
df['new'][0] = np.log(df['test'][0])
df['reserve'] = np.exp(df['new'].cumsum())
Там результат теста и резерва соответствует 1 к 1.
Но если я разделю фрейм данных:
df['new'] = np.log(df['test']).diff()
df['new'][0] = np.log(df['test'][0])
df2 = df[-30:]
df2['reserve'] = np.exp(df2['new'].cumsum())
Это больше не соответствует, я думаю, что это из-за cumsum (), но какой обходной путь для этого? Я сделаю прогноз для этой части данных, так как я могу получить резервный столбец, который имеет смысл для исходного размера df ['test'] или он не работает вообще?