如何在循环中更改函数的参数(Python)?

时间:2017-11-30 06:14:55

标签: python loops statsmodels

在Python中,假设我有一个带有标记为Y,X1,X2,X3的列的pandas数据帧。 我在Y上用X1,X2,X3运行OLS回归。 我想使用循环将回归中的系数存储在列表中。 如何在循环中更改函数的参数? 以下代码不起作用。

import pandas as pd
import statsmodels.api as sm

ols = sm.OLS(df[['Y']],(df[['X_1','X_2','X_3']]))
olsfit = ols.fit(cov_type='HC0')

coef = []

for i in range(4):
    coef.append(olsfit.params.X_i)

2 个答案:

答案 0 :(得分:0)

我不确定这是否足以让您的代码正常工作,但如果您只需要动态访问属性,请使用getattr

{{1}}

那就是说,我建议你按照ako的回答

答案 1 :(得分:0)

不要迭代整数来构建回归名称,只需在statsmodels RegressionResultsWrapper params属性中使用实际名称(这是一个整洁的pd.Series,索引回归程序名称)以适当过滤 - 如下:

olsfit.params[olsfit.params.index.str.contains('^X_')]