I’m wondering how can I get odds ratio from a fitted logistic regression models in python statsmodels.
>>> import statsmodels.api as sm >>> import numpy as np >>> X = np.random.normal(0, 1, (100, 3)) >>> y = np.random.choice([0, 1], 100) >>> res = sm.Logit(y, X).fit() Optimization terminated successfully. Current function value: 0.683158 Iterations 4 >>> res.summary() <class 'statsmodels.iolib.summary.Summary'> """ Logit Regression Results ============================================================================== Dep. Variable: y No. Observations: 100 Model: Logit Df Residuals: 97 Method: MLE Df Model: 2 Date: Sun, 05 Jun 2016 Pseudo R-squ.: 0.009835 Time: 23:25:06 Log-Likelihood: -68.316 converged: True LL-Null: -68.994 LLR p-value: 0.5073 ============================================================================== coef std err z P>|z| [95.0% Conf. Int.] ------------------------------------------------------------------------------ x1 -0.0033 0.181 -0.018 0.985 -0.359 0.352 x2 0.0565 0.213 0.265 0.791 -0.362 0.475 x3 0.2985 0.216 1.380 0.168 -0.125 0.723 ============================================================================== """ >>>
Advertisement
Answer
You can get the odds ratio with:
np.exp(res.params)
To also get the confidence intervals (source):
params = res.params conf = res.conf_int() conf['Odds Ratio'] = params conf.columns = ['5%', '95%', 'Odds Ratio'] print(np.exp(conf))
Disclaimer: I’ve just put together the comments to your question.