2016-04-12 24 views
1

それぞれの変数は、単独のリストです。回帰出力での説明変数の名前付け

ここで別のスレッドで見つかった方法を使用しています。

import numpy as np 
import statsmodels.api as sm 

y = [1,2,3,4,3,4,5,4,5,5,4,5,4,5,4,5,6,5,4,5,4,3,4] 

x = [ 
    [4,2,3,4,5,4,5,6,7,4,8,9,8,8,6,6,5,5,5,5,5,5,5], 
    [4,1,2,3,4,5,6,7,5,8,7,8,7,8,7,8,7,7,7,7,7,6,5], 
    [4,1,2,5,6,7,8,9,7,8,7,8,7,7,7,7,7,7,6,6,4,4,4] 
    ] 

def reg_m(y, x): 
    ones = np.ones(len(x[0])) 
    X = sm.add_constant(np.column_stack((x[0], ones))) 
    for ele in x[1:]: 
     X = sm.add_constant(np.column_stack((ele, X))) 
    results = sm.OLS(y, X).fit() 
    return results 

より意味のある名前にこれらを変更することが可能であったならば、私の回帰出力では、説明変数は、X1、X2、X3などのラベルが付いていることを私の唯一の問題点は、不思議でしたか? sourceを検索

おかげ

+0

あなたはおそらく 'pandas'を探しています:http://stackoverflow.com/questions/19991445/run-an-ols-regression-with-pandas-data-frame – Akavall

+0

ありがとう!これは非常に便利で、おそらくそれを使用する方法を学ぶ必要があります – aspiringcoderzzz

+0

質問のコードは、ここの答えのフォームになります:http://stackoverflow.com/questions/11479064/multivariate-linear-regression-in-python/14971531#14971531、おそらくそれを参照する必要があります。 – Akavall

答えて

2

summary()方法が説明変数のために独自の名前を使用してサポートしています表示されます。だから、:

results = sm.OLS(y, X).fit() 
print results.summary(xname=['Fred', 'Mary', 'Ethel', 'Bob']) 

は私達を与える:

       OLS Regression Results 
============================================================================== 
Dep. Variable:      y R-squared:      0.535 
Model:       OLS Adj. R-squared:     0.461 
Method:     Least Squares F-statistic:      7.281 
Date:    Mon, 11 Apr 2016 Prob (F-statistic):   0.00191 
Time:      22:22:47 Log-Likelihood:    -26.025 
No. Observations:     23 AIC:        60.05 
Df Residuals:      19 BIC:        64.59 
Df Model:       3 
Covariance Type:   nonrobust 
============================================================================== 
       coef std err   t  P>|t|  [95.0% Conf. Int.] 
------------------------------------------------------------------------------ 
Fred   0.2424  0.139  1.739  0.098  -0.049  0.534 
Mary   0.2360  0.149  1.587  0.129  -0.075  0.547 
Ethel   -0.0618  0.145  -0.427  0.674  -0.365  0.241 
Bob   1.5704  0.633  2.481  0.023   0.245  2.895 
============================================================================== 
Omnibus:      6.904 Durbin-Watson:     1.905 
Prob(Omnibus):     0.032 Jarque-Bera (JB):    4.708 
Skew:       -0.849 Prob(JB):      0.0950 
Kurtosis:      4.426 Cond. No.       38.6 
============================================================================== 

Warnings: 
[1] Standard Errors assume that the covariance matrix of the errors is correctly specified. 
+0

ありがとう、これはおそらく私が探しているものに近いです。 – aspiringcoderzzz

0

パラメータ

summaryの名前を調整するには、いくつかの方法がありますだけで変更するために使用することのできる動作するはずxnameキーワードを持っていますサマリーテーブルの名前 http://www.statsmodels.org/dev/generated/statsmodels.regression.linear_model.RegressionResults.summary.html

数式の場合、パラメータ名はモデルのdata属性に内部的に格納され、model.data.xnamesであり、model.exog_namesからアクセスできます。

適切な設定方法はなく、公式にはサポートされていませんが、AFAIK model.data.xnamesは上書きすることができます。つまり、新しい文字列のリストを割り当てることができます。 リストmodel.exog_namesは、model.data.xnamesの別の参照のため、インプレースでのみ変更する必要があります。 これらの変更は永続的で、パラメータ名のすべての使用に影響します。

(*)AFAIK:exog_namesまたはxnamesを変更するための単体テストはありません。一部のモデルでは、推定が必要な追加パラメータに応じて名前を変更する必要があります。内部リファクタリングはparam_namesを使用する方向に向かっているので、パラメータの名前を説明変数の名前から分離することができます。後者はいくつかの新しいモデルでは必要ですが、OLSや他の多くの従来のモデルには関係ありません。

関連する問題