2016-06-05 2 views
1

Мне интересно, как я могу получить отношение шансов от установленных моделей логистической регрессии в statsmodels 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 
============================================================================== 
""" 
>>> 
+0

Дополнительная информация: http://blog.yhat.com/posts/logistic-regression-and-python.html – BrenBarn

+0

Согласно сайту 'OR = np.exp (res.params)'. Я не уверен на 100%, что эта формула правильная – Donbeo

+0

Ваш вопрос о математике о том, как получить отношение шансов, или о программировании того, как получить его из statsmodels. См. Например, самый конец [этой страницы] (http://www.ats.ucla.edu/stat/stata/faq/oratio.htm), в котором говорится: «Конечным результатом всех математических манипуляций является то, что коэффициенты отношение может быть вычислено путем поднятия е до мощности логистического коэффициента ». – BrenBarn

ответ

0

Вы можете получить ОШ с:

np.exp(res.params) 

также получить доверительные интервалы (source):

params = res.params 
conf = res.conf_int() 
conf['OR'] = params 
conf.columns = ['2.5%', '97.5%', 'OR'] 
print(np.exp(conf)) 

Отказ от ответственности: Я просто соединили комментарии ваш вопрос.

Смежные вопросы