2014-01-20 74 views
2

Statsmodels OLS功能可以說,我想找到阿爾法(一)具有類似多重回歸參數

y=a+ax1+ax2+...+axi 

使用OLS一個方程數值可以說,我們啓動了10個值的基本情況I = 2

#y=a+ax1+ax2 

y = np.arange(1, 10) 
x = np.array([[ 5, 10], [10, 5], [ 5, 15], 
     [15, 20], [20, 25], [25, 30],[30, 35], 
     [35, 5], [ 5, 10], [10, 15]]) 

使用statsmodel我將通常下面的代碼來獲得NX1 x和y陣列的根:

import numpy as np 
import statsmodels.api as sm 

X = sm.add_constant(x) 

# least squares fit 
model = sm.OLS(y, X) 
fit = model.fit() 
alpha=fit.params 

但是,當x不等於y時,這不起作用。如果您不知道OLS是什麼,則第一頁上的公式爲here

+0

如果你想要'y = a + ax1 + ax2',那麼你在代碼中設置了x和y。 OLS只能處理一維y。 – user333700

+0

@ user333700即使你將它倒過來,它也有'alpha = fit.params'中的nx1數組 – user3084006

回答

1

回溯告訴你什麼是錯的

raise ValueError("endog and exog matrices are different sizes") 
ValueError: endog and exog matrices are different sizes 

你的X具有10個值,你y的值9。只有兩者具有相同數量的觀察值時,迴歸纔有效。

endog是y和exog是x,這些是statsmodels中用於獨立和解釋變量的名稱。

如果更換y通過

y = np.arange(1, 11) 

則一切正常。

+0

的相同問題。我爲alpha返回4個值,但我只求解2個,其他2個來自哪裏? – user3084006

+0

您應該返回3個值,一個用於常量和兩個斜率參數。你想要所有的係數相等嗎? – user333700

+0

我發現我的錯誤,我再次交換x和y – user3084006

0

以上是上述的基本問題,你說你使用了10個項目,但是你只用了9個你的y向量。

>>> import numpy 
>>> len(numpy.arange(1, 10)) 
9 

這是因爲Python中的切片和範圍上升到但不包括停止整數。如果你做了:

numpy.arange(10) 

,你將不得不的10個項目清單,從0開始,並與9

結束對於迴歸,你需要爲每一套預測的預測變量。否則,預測變量是無用的。你也可以放棄沒有預測變量的一組預測變量。