我的每个变量都是一个单独的列表。
我正在使用另一个线程上找到的方法。
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等。我想知道是否有可能将这些变量更改为更有意义的名称?
谢谢
有几种方法可以调整参数的名称
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和许多其他传统模型无关。
搜索源代码时,似乎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
下面的两个查询给出了一些输出, 我不了解工作流程。它是如何输出的。谁能帮我解释一下吗。