OLS Pandas / Statsmodel предсказывает будущие ценности
Я пытался получить прогноз будущих значений в модели, которую я создал. Я пробовал оба OLS в пандах и statsmodels. Вот что я имею в statsmodels:
import statsmodels.api as sm
endog = pd.DataFrame(dframe['monthly_data_smoothed8'])
smresults = sm.OLS(dframe['monthly_data_smoothed8'], dframe['date_delta']).fit()
sm_pred = smresults.predict(endog)
sm_pred
Длина возвращаемого массива равна количеству записей в моем исходном кадре данных, но значения не совпадают. Когда я делаю следующее, используя панд, я не получаю возвращаемых значений.
from pandas.stats.api import ols
res1 = ols(y=dframe['monthly_data_smoothed8'], x=dframe['date_delta'])
res1.predict
(Обратите внимание, что в OLS нет функции .fit для OLS) Может кто-нибудь пролить свет на то, как я могу получить будущие прогнозы из своей модели OLS в pandas или statsmodel - я понимаю, что не должен использовать .predict должным образом, и я прочитайте множество других проблем, которые были у людей, но они, кажется, не относятся к моему делу.
редактировать Я считаю, что «endog», как он определен, неверен - я должен передавать значения, для которых я хочу предсказать; поэтому я создал диапазон дат из 12 периодов после последнего записанного значения. Но все же я что-то упускаю, так как получаю ошибку:
matrices are not aligned
редактировать Вот фрагмент данных, последний столбец (красным цветом) чисел является дельтой даты, которая является разницей в месяцах от первой даты:
month monthly_data monthly_data_smoothed5 monthly_data_smoothed8 monthly_data_smoothed12 monthly_data_smoothed3 date_delta
0 2011-01-31 3.711838e+11 3.711838e+11 3.711838e+11 3.711838e+11 3.711838e+11 0.000000
1 2011-02-28 3.776706e+11 3.750759e+11 3.748327e+11 3.746975e+11 3.755084e+11 0.919937
2 2011-03-31 4.547079e+11 4.127964e+11 4.083554e+11 4.059256e+11 4.207653e+11 1.938438
3 2011-04-30 4.688370e+11 4.360748e+11 4.295531e+11 4.257843e+11 4.464035e+11 2.924085