Используя Pandas OLS, я могу подобрать и использовать следующую модель:
ols_test = pd.ols(y=merged2[:-1].Units, x=merged2[:-1].lastqu) #to exclude current year, then do forecast method
yrahead=(ols_test.beta['x'] * merged2.lastqu[-1:]) + ols_test.beta['intercept']
Мне нужно было переключиться на statsmodels, чтобы получить дополнительную функциональность (в основном остаточные графики См. (вопрос здесь)
Итак, теперь у меня есть:
def fit_line2(x, y):
X = sm.add_constant(x, prepend=True) #Add a column of ones to allow the calculation of the intercept
model = sm.OLS(y, X,missing='drop').fit()
"""Return slope, intercept of best fit line."""
X = sm.add_constant(x)
return model
А также:
model=fit_line2(merged2[:-1].lastqu,merged2[:-1].Units)
print fit.summary()
Но я не могу получить
yrahead2=model.predict(merged2.lastqu[-1:])
или любой вариант, чтобы дать мне прогноз? Обратите внимание, что pd.ols использует тот же merged2.lastqu [-1:] для получения данных, которые я хочу «спрогнозировать», независимо от того, что я помещаю в () для предсказания, что у меня нет никакой радости. statsmodels хочет что-то конкретное в (), кроме ячейки DF pandas. Я даже попытался просто ввести число, например, 2696, но все равно ничего ... Моя текущая ошибка
----> 3 yrahead2=model.predict(merged2.lastqu[-1:])
/usr/lib/pymodules/python2.7/statsmodels/base/model.pyc in predict(self, exog, transform, *args, **kwargs)
1004 exog = np.atleast_2d(exog) # needed in count model shape[1]
1005
-> 1006 return self.model.predict(self.params, exog, *args, **kwargs)
1007
1008
/usr/lib/pymodules/python2.7/statsmodels/regression/linear_model.pyc in predict(self, params, exog)
253 if exog is None:
254 exog = self.exog
--> 255 return np.dot(exog, params)
256
257 class GLS(RegressionModel):
ValueError: objects are not aligned
> /usr/lib/pymodules/python2.7/statsmodels/regression/linear_model.py(255)predict()
254 exog = self.exog
--> 255 return np.dot(exog, params)
256