Introdução

A regressão logística pode ser utilizada para modelar a probabilidade de eventos como guerra, adoção de políticas públicas, comparecimento ao voto e formação de governo, entre muitas outras situações.

Na situação típica, o pesquisador usa uma matriz \(n \times (p+1)\) de projeto \(X\) consistindo em uma única coluna de uns e \(p\) variáveis explicativas para modelar um vetor de \(n\) resultados binários \(Y\), onde \(y_i \in \{0,1\}\), usando o modelo \[\begin{equation*} P(y_i)=P(y_i=1|X_i)=\dfrac{1}{1+e^{-\beta X_i}}, \end{equation*}\] onde \(\beta\) é um vetor dos coeficientes da regressão de comprimento \(þ+1\).

A separação ocorre em modelos de dados binários quando uma variável explicativa prediz perfeitamente zeros, uns ou ambos.

A separação também pode ocorrer quando uma combinação de variáveis explicativas prediz perfeitamente zeros, uns ou ambos; ver Lesaffre e Albert (1989). Veja Geyer (2009) e Zorn (2005) para uma visão muito mais geral do conceito de separação.

Para uma variável explicativa binária \(s_i\) (para separar a variável explicativa), a separação completa (complete separation) ocorre quando \(s_i\) prediz perfeitamente zeros e uns. Para simplificar, descrevemos a separação completa e quase completa para uma variável explicativa binária, que é mais explicável do que casos mais gerais. De fato, nos problemas das ciências sociais, as variáveis explicativas binárias mais comumente levam à separação.

A separação quase completa (quasicomplete separation) ocorre quando \(s_i\) prediz perfeitamente zeros ou uns, mas não ambos (Zorn 2005). A sobreposição (overlap), o caso ideal, ocorre quando não existe tal \(s_i\). Com a sobreposição, as estimativas de máxima verossimilhança usuais existem e fornecem estimativas razoáveis dos parâmetros. No entanto, sob a separação completa ou quase-completa, as estimativas de máxima verossimilhança finitas não existem e o método usual de cálculo de erros padrão falha (Zorn 2005).

Para a variável explicativa binária \(s_i\), a separação completa ocorre quando \(s_i\) prediz perfeitamente zeros e uns. Por exemplo, suponha \(s_i\), tal que \(y_i=0\) para \(s_i=0\) e \(y_1=1\) para \(s_i=1\). Para maximizar a verossimilhança dos dados observados, a curva de regressão logística em forma de “S” deve atribuir \[\begin{equation*} P(y_i)=\dfrac{1}{1+e^{-\beta X_i}}=0, \end{equation*}\] quando \(s_i=0\) e \[\begin{equation*} P(y_i)=\dfrac{1}{1+e^{-\beta X_i}}=1, \end{equation*}\] quando \(s_i=1\). Como a curva de regressão logística está estritamente entre zero e um, essa verossimilhança não pode ser alcançada, apenas abordada de forma assintótica quando o coeficiente \(\beta_s\) para \(s_i\) se aproximando do infinito. Assim, a função de verossimilhança sob separação completa é monotônica, o que implica que não existe uma estimativa de máxima verossimilhança finita.

A separação quase completa ocorre quando \(s_i\) prediz perfeitamente tantos zeros quanto uns. Por exemplo, suponha que quando \(s_i = 0\), às vezes \(y_i = 1\) e outras vezes \(y_i = 0\), mas quando \(s_i = 1\), \(y_i = 1\) sempre. Para maximizar a verossmilhança dos dados observados, a curva de regressão logística em forma de “S” deve atribuir \[\begin{equation*} P(y_i)=\dfrac{1}{1+e^{-\beta X_i}}\in (0,1), \end{equation*}\] quando \(s_i=0\) e \[\begin{equation*} P(y_i)=\dfrac{1}{1+e^{-\beta X_i}}=1, \end{equation*}\] quando \(s_i=1\). Novamente, uma vez que a curva de regressão logística está estritamente entre zero e um, essa verossimilhança não pode ser alcançada, apenas abordada assintoticamente. Assim, a função de verossimilhança sob separação quase completa também aumenta monotonicamente conforme o coeficiente de \(s_i\) aumenta, o que novamente implica que a estimativa de máxima verossimilhança não existe.

Por conveniência, dizemos que a “direção da separação” é positiva se e somente se \(s_i=1\) implica \(y_i=1\) ou \(s_i=0\) implica que \(y_i=0\) e que a direção de separação é negativa se e somente se \(s_i=0\) implica \(y_i=1\) ou \(s_i=1\) implica que \(y_i=1\). Assim, \(\widehat{\beta}=+\infty\) quando a direção da separação for positiva e \(\widehat{\beta}=-\infty\) quando a direção da separação é negativa.

Exemplo de sobreposição (overlap). Situação ideal.

Trat =  as.factor(c(rep("A",5), rep("B",5)))
score = c(40, 57, 45, 55, 58, 57, 64, 55, 62, 65)

plot(Trat ~ score, ylab = "Tratamento", xlab = "Escore")

Tratamento = ifelse(Trat=="B",1,0)
plot(Tratamento ~ score, ylab = "Tratamento", xlab = "Escore", pch = 19)
grid()

Percebemos que o escore baixo prediz o tratamento A, o escore médio (entre 55 e 60) prediz tanto o tratamento A quanto B e o escore alto (maior do que 60) prediz o tratamento B.

modelo = glm(Tratamento ~ score, family = binomial)
summary(modelo)
## 
## Call:
## glm(formula = Tratamento ~ score, family = binomial)
## 
## Deviance Residuals: 
##     Min       1Q   Median       3Q      Max  
## -1.3493  -0.6700   0.1163   0.4583   1.5416  
## 
## Coefficients:
##             Estimate Std. Error z value Pr(>|z|)
## (Intercept) -23.1981    17.6422  -1.315    0.189
## score         0.4068     0.3073   1.324    0.186
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 13.8629  on 9  degrees of freedom
## Residual deviance:  8.1529  on 8  degrees of freedom
## AIC: 12.153
## 
## Number of Fisher Scoring iterations: 6
preditos = predict(modelo, type = "response")
preditos
##            1            2            3            4            5            6 
## 0.0009803058 0.4971726742 0.0074450203 0.3047286085 0.5976002869 0.4971726742 
##            7            8            9           10 
## 0.9446004206 0.3047286085 0.8831515207 0.9624198800
preditos.n = ifelse(preditos > 0.5, 1, 0)
mean(Tratamento==preditos.n)
## [1] 0.7
table(Tratamento,preditos.n)
##           preditos.n
## Tratamento 0 1
##          0 4 1
##          1 2 3

Significa temos 70% de acertos.

Exemplo de separação completa (complete separation)

Vamos utilizar modificações dos dados originais para apresentar esta situação.

Trat =  as.factor(c(rep("A",5), rep("B",5)))
score1 = c(40, 37, 45, 50, 48,  57, 64, 55, 62, 65)
plot(Trat ~ score1, ylab = "Tratamento", xlab = "Escore")

Tratamento = ifelse(Trat=="B",1,0)
plot(Tratamento ~ score1, ylab = "Tratamento", xlab = "Escore", pch = 19)
grid()

Percebemos que o escore baixo (menor do que 50) sempre o tratamento A e o escore alto (maior do que 50) sempre prediz o tratamento B.

modelo1 = glm(Tratamento ~score1, family = binomial)
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
summary(modelo1)
## 
## Call:
## glm(formula = Tratamento ~ score1, family = binomial)
## 
## Deviance Residuals: 
##        Min          1Q      Median          3Q         Max  
## -1.474e-05  -2.110e-08   0.000e+00   2.110e-08   1.462e-05  
## 
## Coefficients:
##              Estimate Std. Error z value Pr(>|z|)
## (Intercept)   -481.97  868352.13  -0.001        1
## score1           9.18   16527.22   0.001        1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 1.3863e+01  on 9  degrees of freedom
## Residual deviance: 4.3100e-10  on 8  degrees of freedom
## AIC: 4
## 
## Number of Fisher Scoring iterations: 25

Observe as consequências no ajuste do modelo. Além da informação de probilidades ajustadas numericamente iguais a 0 ou 1, o que não pode! nada é significativo no modelo ajustado com erro padrão absurdos. Não temos ajuste de modelo nesta situação.