使用熊貓OLS我能夠適應和使用模型如下:Pandas統計模型ols迴歸預測使用DF預測?
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所以現在得到一些額外的功能(主要是殘差圖見(question here)
我有:
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細胞我甚至想只是把一些如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
謝謝,但..我用SM API的...我遇到的問題是model.predict(merged2.lastqu [-1:])這是一個看起來像日期的DF 2014-12-31 2651 名稱:lastqu,dtype:float64 <<<我想使用2651作爲「exog」 – dartdog
沒有看到如何使用公式有助於直sm? ,並且對於我已經構建的函數中的DF的用例,不知道如何設置..當然有一種方法可以預測接受DF單元嗎?我只是想預測一個時期。 – dartdog
mmm有沒有辦法得到模型名稱並重命名預測結果,如果這是問題?抓住這裏 – dartdog