簡體   English   中英

如何從statsmodels中的WLS回歸的2D參數獲取測試預測

[英]How to get the prediction of test from 2D parameters of WLS regression in statsmodels

我使用statsmodels逐步增加WLS回歸函數的參數。

我有一個這樣聲明的10x3數據集X:

X = np.array([[1,2,3],[1,2,3],[4,5,6],[1,2,3],[4,5,6],[1,2,3],[1,2,3],[4,5,6],[4,5,6],[1,2,3]])

這是我的數據集,我有一個10x2的endog向量,看起來像這樣:

z =
[[  3.90311860e-322   2.00000000e+000]
 [  0.00000000e+000   2.00000000e+000]
 [  0.00000000e+000  -2.00000000e+000]
 [  0.00000000e+000   2.00000000e+000]
 [  0.00000000e+000  -2.00000000e+000]
 [  0.00000000e+000   2.00000000e+000]
 [  0.00000000e+000   2.00000000e+000]
 [  0.00000000e+000  -2.00000000e+000]
 [  0.00000000e+000  -2.00000000e+000]
 [  0.00000000e+000   2.00000000e+000]]

現在import statsmodels.api as sm導入import statsmodels.api as sm我這樣做:

g = np.zeros([3, 2]) # g(x) is a function that will store the regression parameters
mod_wls = sm.WLS(z, X)
temp_g = mod_wls.fit()
print temp_g.params

我得到以下輸出:

[[ -5.92878775e-323  -2.77777778e+000]
 [ -4.94065646e-324  -4.44444444e-001]
 [  4.94065646e-323   1.88888889e+000]]

之前,從該問題的答案中 ,我能夠使用numpy.dot預測測試數據X_test的值,如下所示:

np.dot(X_test, temp_g.params)

我很容易理解,因為它是endg向量,所以y是一維數組。 但是當我的endg向量(在這種情況下為z )為2D時,它如何工作? 當我嘗試上述線在1D版本中使用時,出現以下錯誤:

   self._check_integrity()
  File "C:\Users\app\Anaconda\lib\site-packages\statsmodels\base\data.py", line 247, in _check_integrity
    raise ValueError("endog and exog matrices are different sizes")
ValueError: endog and exog matrices are different sizes

np.dot(X_test, temp_g.params)應該仍然可以工作。

在某些情況下,您需要檢查矩陣的方向,有時需要轉置

但是,結果的predict方法和大多數其他方法將不起作用,因為該模型假定因變量z為一維。

問題再次是您要做什么?

如果要獨立適合z的列,請對其進行迭代,以便每個y為1D。

for y in zT: res = WLS(y, X).fit()

zT允許在列上進行迭代。

在其他情況下,我們通常將模型堆疊起來,以使y為1D且其第一部分為z[:,0] ,而列的第二部分為z[:,1] 設計矩陣或解釋變量矩陣必須相應地擴展。

支持多元因變量是statsmodels的組成部分,但仍需要一些時間來准備。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM