当前位置: 首页 > 知识库问答 >
问题:

在回归输出中命名解释变量

谯皓君
2023-03-14

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

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

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

谢谢

共有2个答案

柯英奕
2023-03-14

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

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

使用公式创建模型时,参数名称将存储在模型的data属性model中。数据xnames,可通过模型访问。exog_名称

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

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

郁隐水
2023-03-14

搜索源代码时,似乎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.
 类似资料:
  • 我遇到过这样一种情况,JAXB拒绝解组XML元素,除非相应的Java字段有名称空间注释。这种行为仅始于JDK 1.8.0_111(也可能始于102)。JDK 1.8的早期版本可以工作。 测试案例: Java类(缩写): XML: package-info.java: 取消编组代码: 使用 JDK 1.8.0_101(及更早版本),可以打印以下内容: 分析结果:MyElement [subEl=su

  • 为什么我在输出中得到一个额外的1*1,这有点倒退?有点像递归初学者,希望得到详细的答案。 输出

  • 问题内容: 我做了一个简单的python脚本,将数据发布到网站上。 现在我想让我们用工具检查我的脚本中的编码标准。 我的输出如下: 现在,我的问题是为什么将变量名显示为。以这种方式命名变量是错误的编码约定。 我完整的pylint输出。 问题答案: 由于您的代码未包含在类或函数中,因此期望这些变量为常量,因此它们应为大写。 您可以阅读PEP8以获取更多信息。

  • 问题内容: 我想要的是将git命令的输出(例如git status)存储在shell脚本的变量内。当我说输出时,我说的是在终端上执行命令时返回的文本,例如:在回购之外执行git status时: 我尝试了这个: 但是’var’没有存储任何东西。 问题答案: 您可以使用: 即将stderr重定向到stdout,然后捕获输出。 否则,当会写上错误消息并且您的命令:仅正在捕获时。

  • 无法理解如何使用int类型的递归函数查找二叉查找树的高度的解释。 对于任何二元搜索树,给定一个指向树的根节点的指针,其中节点按常规定义如下。。。 我们可以使用以下int类型的递归函数来给出二元搜索树的高度。。。(函数“max”只取两个整数,并返回其中较大的一个) 我的理解是findHeight(根- 我对递归非常陌生,所以我决定只解压缩其中一个递归函数调用,并尝试理解它。我写了findHeight

  • 下面的两个查询给出了一些输出, 我不了解工作流程。它是如何输出的。谁能帮我解释一下吗。