【问题标题】:Naming explanatory variables in regression output在回归输出中命名解释变量
【发布时间】:2016-08-02 09:28:03
【问题描述】:

我的每一个变量都是一个独立的列表。

我在这里使用在另一个线程上找到的方法。

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 等。想知道是否可以将这些更改为更有意义的名称?

谢谢

【问题讨论】:

标签: python regression statsmodels


【解决方案1】:

有几种方法可以调整参数的名称

summary 有一个 xname 关键字,它应该可以用来更改汇总表中的名称 http://www.statsmodels.org/dev/generated/statsmodels.regression.linear_model.RegressionResults.summary.html

当使用公式创建模型时,参数名称内部存储在模型的data 属性model.data.xnames 中,可以通过model.exog_names 访问。

没有合适的 setter 方法,也不是“官方”(*) 支持的,但 AFAIK model.data.xnames 可以被覆盖,即分配一个新的字符串列表。 列表model.exog_names 应该只在原地更改,因为它只是model.data.xnames 的另一个参考。 这些更改将是永久性的,并会影响参数名称的所有使用。

(*) AFAIK:没有用于更改 exog_names 或 xnames 的单元测试。一些模型需要根据需要估计的额外参数来更改名称。内部重构正朝着使用param_names 的方向发展,因此我们可以将参数的名称与解释变量的名称分开。后者在一些较新的模型中是必需的,但与 OLS 和许多其他传统模型无关。

【讨论】:

    【解决方案2】:

    搜索source,看来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.
    

    【讨论】:

    • 谢谢,这可能与我正在寻找的一样接近。
    猜你喜欢
    • 2021-12-10
    • 2013-10-08
    • 1970-01-01
    • 2018-06-13
    • 1970-01-01
    • 1970-01-01
    • 2019-01-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多