如何从statsmodels.api中提取回归系数?

时间:2017-11-20 09:01:32

标签: python pandas linear-regression statsmodels

 result = sm.OLS(gold_lookback, silver_lookback ).fit()

得到结果后,我怎样才能得到系数和常数?

换句话说,如果 y = ax + c 如何获取值ac

3 个答案:

答案 0 :(得分:11)

您可以使用拟合模型的params属性来获取系数。

例如,以下代码:

import statsmodels.api as sm
import numpy as np
np.random.seed(1)
X = sm.add_constant(np.arange(100))
y = np.dot(X, [1,2]) + np.random.normal(size=100)
result = sm.OLS(y, X).fit()
print(result.params)

会打印出一个numpy数组[ 0.89516052 2.00334187] - 分别估计截距和斜率。

如果您想了解更多信息,可以使用包含3个详细表格和模型描述的对象result.summary()

答案 1 :(得分:1)

从此答案Converting statsmodels summary object to Pandas Dataframe开始,似乎result.summary()是一组表,您可以将其导出为html,然后使用Pandas转换为数据框,从而可以直接索引所需的值。

因此,对于您的情况(将以上链接的答案放在一行中):

df = pd.read_html(result.summary().tables[1].as_html(),header=0,index_col=0)[0]

然后

a=df['coef'].values[1]
c=df['coef'].values[0]

答案 2 :(得分:0)

添加有关@IdiotTom答案的详细信息。

您可以使用:

head = pd.read_html(res.summary2().as_html())[0]
body = pd.read_html(res.summary2().as_html())[1]

不太好,但是信息在那里。