How to extract the regression coefficient from statsmodels.api?

前端 未结 3 893
余生分开走
余生分开走 2021-02-07 05:34
 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,

相关标签:
3条回答
  • 2021-02-07 05:43

    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.

    0 讨论(0)
  • 2021-02-07 06:00

    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.

    0 讨论(0)
  • 2021-02-07 06:05

    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]
    
    0 讨论(0)
提交回复
热议问题