Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум врачей-аспирантов _ Медицинская статистика _ Очень большие Odds ratio в логистической регрессии

Автор: Felix77 23.02.2020 - 09:34

Доброго времени суток!
Модель вроде бы адекватная (зависимая переменная - КИН), 3 предиктора - объем контраста, возраст, анемия (есть или нет). Но вот отношения шансов получаются какие-то очень высокие.
Intercept) Анемия1 возраст Объем.контраста
4.991232e-15 4.267894e+03 1.167138e+00 2.609896e+03

Автор: Felix77 23.02.2020 - 09:37

 Регрессия.xlsx ( 14,25 килобайт ) : 252

Данные здесь

Автор: p2004r 23.02.2020 - 10:09

Цитата(Felix77 @ 23.02.2020 - 09:37) *
 Регрессия.xlsx ( 14,25 килобайт ) : 252

Данные здесь


Внимательнее данные готовьте, тут шутников и так хоть ртом ешь.

Автор: Felix77 23.02.2020 - 10:15

А что не так то?

Автор: Felix77 23.02.2020 - 10:37

 regression.txt ( 4,58 килобайт ) : 337

Вот в текстовом варианте
Если я делаю что-то не так, так Вы скажите пожалуйста. Во всяком случае в R я данные загружал и вычисления проводил. Получилось вот такое

Call:
glm(formula = КИН ~ Объем.контраста + Анемия + возраст, family = "binomial",
data = reg)

Deviance Residuals:
Min 1Q Median 3Q Max
-1.68285 -0.00979 -0.00186 -0.00029 2.18472

Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) -32.93109 10.07242 -3.269 0.001078 **
Объем.контраста 7.86707 2.18889 3.594 0.000326 ***
Анемия 8.35888 2.77845 3.008 0.002626 **
возраст 0.15455 0.07788 1.984 0.047210 *
---
Signif. codes: 0 ?***? 0.001 ?**? 0.01 ?*? 0.05 ?.? 0.1 ? ? 1

(Dispersion parameter for binomial family taken to be 1)

Null deviance: 220.410 on 300 degrees of freedom
Residual deviance: 20.614 on 297 degrees of freedom
AIC: 28.614

Number of Fisher Scoring iterations: 10

> exp(coef(logit))
(Intercept) Объем.контраста Анемия возраст
4.991232e-15 2.609896e+03 4.267894e+03 1.167138e+00

Автор: p2004r 23.02.2020 - 10:39

Цитата(Felix77 @ 23.02.2020 - 09:34) *
Доброго времени суток!
Модель вроде бы адекватная (зависимая переменная - КИН), 3 предиктора - объем контраста, возраст, анемия (есть или нет). Но вот отношения шансов получаются какие-то очень высокие.
Intercept) Анемия1 возраст Объем.контраста
4.991232e-15 4.267894e+03 1.167138e+00 2.609896e+03



1. У вас разделены данные по КИН без всяких моделей и сомнений. "Просто глазами" разделяемы.

2. Предикторы мультиколлинеарны более чем допустимо, значит значения коэффициентов модели содержательно интерпретировать нельзя. Но судя по п.1 сильно не уменьшиться.

Цитата(Felix77 @ 23.02.2020 - 10:15) *
А что не так то?



Ага

Автор: Felix77 23.02.2020 - 11:36

Коэффициенты корреляций между предикторами слабые - 0.14-0.36. И с чего вдруг мультиколлинеарность больше чем допустимо.
Не понимаю!

Автор: p2004r 23.02.2020 - 13:03

Цитата(Felix77 @ 23.02.2020 - 11:36) *
Коэффициенты корреляций между предикторами слабые - 0.14-0.36. И с чего вдруг мультиколлинеарность больше чем допустимо.
Не понимаю!



Код
> car::vif(modkim)
         Анемия Объем.контраста         возраст
       5.584514        5.157870        1.400406


Generally, VIF for an X variable should be less than 4 in order to be accepted as not causing multi-collinearity. The cutoff is kept as low as 2, if you want to be strict about your X variables.


ЗЫ

Код
> glm(КИН ~ Объем.контраста + возраст , kinm, family=binomial(link="logit"))

Call:  glm(formula = КИН ~ Объем.контраста + возраст,
    family = binomial(link = "logit"), data = kinm)

Coefficients:
    (Intercept)  Объем.контраста          возраст  
      -16.17699          4.67647          0.07174  

Degrees of Freedom: 300 Total (i.e. Null);  298 Residual
Null Deviance:        220.4
Residual Deviance: 60.04     AIC: 66.04
> car::vif(glm(КИН ~ Объем.контраста + возраст , kinm, family=binomial(link="logit")))
Объем.контраста         возраст
       1.014424        1.014424

Автор: Felix77 23.02.2020 - 19:50

Цитата(p2004r @ 23.02.2020 - 17:03) *
Код
> car::vif(modkim)
         Анемия Объем.контраста         возраст
       5.584514        5.157870        1.400406


Generally, VIF for an X variable should be less than 4 in order to be accepted as not causing multi-collinearity. The cutoff is kept as low as 2, if you want to be strict about your X variables.


ЗЫ

Код
> glm(КИН ~ Объем.контраста + возраст , kinm, family=binomial(link="logit"))

Call:  glm(formula = КИН ~ Объем.контраста + возраст,
    family = binomial(link = "logit"), data = kinm)

Coefficients:
    (Intercept)  Объем.контраста          возраст  
      -16.17699          4.67647          0.07174  

Degrees of Freedom: 300 Total (i.e. Null);  298 Residual
Null Deviance:        220.4
Residual Deviance: 60.04     AIC: 66.04
> car::vif(glm(КИН ~ Объем.контраста + возраст , kinm, family=binomial(link="logit")))
Объем.контраста         возраст
       1.014424        1.014424

А почему получается такой логит при подстановке значений?
> x<-data.frame(возраст=60,Объем.контраста=3)
> p<-predict(logit,x)
> p
1
2.157031


Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)