How to extract the regression coefficient from statsmodels.api?

故事扮演 提交于 2019-12-04 19:07:19

问题


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

After I get the result, how can I get the coefficient and the constant?

In other words, if y = ax + c how to get the values a and c?


回答1:


You can use the params property of a fitted model to get the coefficients.

For example, the following code:

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)

will print you a numpy array [ 0.89516052 2.00334187] - estimates of intercept and slope respectively.

If you want more information, you can use the object result.summary() that contains 3 detailed tables with model description.




回答2:


Cribbing from this answer Converting statsmodels summary object to Pandas Dataframe, it seems that the result.summary() is a set of tables, which you can export as html and then use Pandas to convert to a dataframe, which will allow you to directly index the values you want.

So, for your case (putting the answer from the above link into one line):

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

And then

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


来源:https://stackoverflow.com/questions/47388258/how-to-extract-the-regression-coefficient-from-statsmodels-api

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!