How to extract the regression coefficient from statsmodels.api?
You can use the params
property of a fitted model to get the coefficients.
For example, the following code:
import statsmodels.api as smimport numpy as npnp.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.
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]
Adding up details on @IdiotTom answer.
You may use:
head = pd.read_html(res.summary2().as_html())[0]body = pd.read_html(res.summary2().as_html())[1]
Not as nice, but the info is there.