логистическая регрессия получить значения sm.Logit (python, statsmodels) - PullRequest
0 голосов
/ 15 мая 2018

Я делаю логистическую регрессию в Python, используя sm.Logit , затем для получения модели, p-значений и т. Д. Используются функции .summary , я хочу хранитьрезультат от функции .summary , пока у меня есть:

  • .params.values ​​: дать бета-значение
  • .params : дать имя переменной и бета-значение
  • .conf_int () : дать доверительный интервал

Я все ещенужно получить std err , z и p-значение

Мне также интересно, есть ли способ получить это (сначалачасть функции .summary ):

enter image description here

1 Ответ

0 голосов
/ 18 мая 2018

Если вы рассчитываете свою модель, используя код как

model = sm.Logit(y_data, x_data)
model_fit = model.fit()

, тогда вы можете получить доступ к p-значениям напрямую с помощью model_fit.pvalues.

Для стандартной погрешности для коэффициентов вы можете позвонить

cov = model_fit.cov_params()
std_err = np.sqrt(np.diag(cov))

для расчета стандартной ошибки в виде квадратного корня из дисперсионных членов (диагональных элементов) оценки ковариационной матрицы модели.

Значение z определяется как каждый коэффициент, деленный на его стандартную ошибку, поэтому вы можете вычислить это как

z_values = model_fit.params / std_err

с использованием std_err, определенным в строке выше.

Что касается вашего последнего вопроса, неясно, спрашиваете ли вы, как получить фактическую подстроку из вывода summary(), или по отдельности получить все различные фрагменты данных, которые она печатает.

Если вы хотите получить их по отдельности, я советую подогнать вашу модель в интерактивном сеансе программирования с завершением табуляции, например, с помощью jupyter, чтобы вы могли видеть различные варианты степени свободы и другие данные, доступные для объекта model_fit.

Если вы просто ищете строки, это так просто, как:

'\n'.join(str(model_fit.summary()).split('\n')[1:10])
...