Одним из возможных объяснений могут быть нелинейности в отношениях между вашим исходом и предиктором.
[ - 1 , 1 ]х ≈ - 1х ≈ 1х ≈ 0
> set.seed(1)
> nn <- 1e3
> xx <- runif(nn,-1,1)
> yy <- runif(nn)<1/(1+exp(-xx^2))
>
> library(lmtest)
>
> model_0 <- glm(yy~1,family="binomial")
> model_1 <- glm(yy~xx,family="binomial")
> lrtest(model_1,model_0)
Likelihood ratio test
Model 1: yy ~ xx
Model 2: yy ~ 1
#Df LogLik Df Chisq Pr(>Chisq)
1 2 -676.72
2 1 -677.22 -1 0.9914 0.3194
>
> xx_cut <- cut(xx,c(-1,-0.3,0.3,1))
> model_2 <- glm(yy~xx_cut,family="binomial")
> lrtest(model_2,model_0)
Likelihood ratio test
Model 1: yy ~ xx_cut
Model 2: yy ~ 1
#Df LogLik Df Chisq Pr(>Chisq)
1 3 -673.65
2 1 -677.22 -2 7.1362 0.02821 *
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Однако это не означает, что дискретизация предиктора является лучшим подходом. (Это почти никогда не бывает.) Намного лучше моделировать нелинейность, используя сплайны или аналогичные.
Один из возможных способов заключается в том, что отношения явно нелинейны. Невозможно сказать (учитывая нехватку деталей), действительно ли это объясняет, что происходит.
Вы можете проверить сами. Во-первых, вы можете создать добавленную переменную для самой переменной, а также отразить подгоночные эффекты в факторной версии модели. Если объяснение верно, оба должны видеть отчетливо нелинейный образец.
источник