1 Introdução

Em muitas situações estamos interessados em analisar o comportamento de uma variável resposta discreta \(y\) com relação a um conjunto de covariáveis \(\mathbf{X}\). No caso em que \(y\) é binária, isto é, a variável \(y\) assume o valor \(1\) quando ocorre o evento de interesse, que é denominado como “sucesso”, e assume o valor \(0\) quando não ocorre o evento de interesse, que é denominado “fracasso”. Neste caso, podemos utilizar o modelo de regressão logística, o qual estima as probabilidades de ocorrência de um determinado evento de interesse com base nas covariáveis.

Para as análises deste tutorial, utilizaremos o banco de dados lowbwt do pacote aplore3, que é referente a 189 partos de mulheres numa clínica obstétrica.

2 Metodologia

Seja \(y_i\) a variável resposta binária e \(\mathbf{x}_i = (1, x_{i1}, \ldots, x_{ip})^{\top}\) o vetor de \(p\) covariáveis do \(i\)-ésimo indivíduo (\(i = 1, \ \ldots, n\)). Seja \(\mathbf{X}\) uma matriz \(n\times (p + 1)\) da forma \(\mathbf{X} = (\mathbf{x}_1, \ldots, \mathbf{x}_n)^{\top}\). Assumimos que \(y_i\sim \text{Bernoulli}(\pi_i)\), em que \(\pi_i\) é a probabilidade de ocorrência de um determinado evento e desejamos calculá-la a partir das covariáveis preditoras presentes em \(\mathbf{x}_i\). Para que os intervalos das probabilidades estimadas permaneçam no intervalo \([0, 1]\), utilizaremos a função de ligação logito. Portanto, a \(E[y_i|\mathbf{x}_i]\) pode ser escrita a partir da forma

\[ E[y_i|\mathbf{x}_i] = \pi_i(\mathbf{x}_i) = \frac{e^{g(\mathbf{x}_i)}}{1 + e^{g(\mathbf{x}_i)}}, \quad i = 1, \ldots, n,\] em que \(g(\mathbf{x}_i)\) é o preditor linear da forma

\[g(\mathbf{x}_i) = \beta_0 + \beta_1 x_{i1} + \beta_2 x_{i2} + \cdots + \beta_p x_{ip}\]

e \(\beta_0, \beta_1, \ldots, \beta_p\) representam parâmetros do modelo.

2.1 Estimação dos parâmetros

Para estimar o vetor \(\boldsymbol{\beta} = (\beta_0, \ \beta_1, \ldots, \ \beta_p)^{\top}\), utilizaremos o método da máxima verossimilhança. Seja \(\mathbf{x}_i\) as observações referentes ao \(i\)-ésimo indivíduo e \(\mathbf{y} = (y_1, \ldots, y_n)^{\top}\). Então a função de log-verossimilhança é da forma

\[ \ell\left(\boldsymbol{\beta};\mathbf{X}, \mathbf{y}\right) = \displaystyle\sum_{i = 1}^n \left\{y_ig(\mathbf{x}_i)-\log\left[1 + e^{g(\mathbf{x}_i)}\right]\right\}.\] Derivando a expressão acima com relação aos parâmetros \(\beta_j\), \(j = 1, \ldots, p\), as estimativas dos parâmetros são dadas pela solução simultâneas das equações abaixo, em que \(x_{ij}\) representa a \(j\)-ésima variável do \(i\)-ésimo indivíduo.

\[ \displaystyle\sum_{i = 1}^n[y_i-\pi_i(\mathbf{x}_i)] = 0\quad \mbox{e}\quad \sum_{i = 1}^nx_{ij}[y_i-\pi_i(\mathbf{x}_i)] = 0, \quad j = 1, \ldots, p.\]

As estimativas dos parâmetros podem ser encontradas a partir de métodos numéricos e denotamos por \(\boldsymbol{\hat{\beta}} = \left(\hat\beta_0, \hat\beta_1, \ \ldots, \hat\beta_p\right)\).

Seja \(I(\boldsymbol{\beta})\) a matriz de Informação de Fisher de ordem \((p + 1)\times(p + 1)\) da seguinte forma:

\[\begin{align*} I_{jj}(\boldsymbol{\beta}) & = \frac{\partial^2 \ell(\boldsymbol{\beta})}{\beta_j^2} = -\displaystyle\sum_{i = 1}^nx_{ij}^2\pi_i(1-\pi_i), \\ I_{jl}(\boldsymbol{\beta}) & = \frac{\partial^2 \ell(\boldsymbol{\beta})}{\beta_j\beta_l} = -\displaystyle\sum_{i = 1}^nx_{ij}x_{il}\pi_i(1-\pi_i), \end{align*}\]

para \(j, l = 0, 1, \ldots, p\) e \(\pi_i = \pi_i(\mathbf{x}_i)\). Podemos obter as variâncias e covariâncias do vetor \(\boldsymbol{\hat\beta}\) a partir da inversa da matriz de Informação de Fisher, isto é\(,\text{Var}(\boldsymbol{\hat\beta}) = I^{-1}(\boldsymbol{\beta})\). Entretanto, essa quantidade depende de parâmetros desconhecidos, portanto, para resolver esse problema, usaremos a estimativa da variância a partir da estimativa da matriz de Informação de Fisher, logo\(,\widehat{\text{Var}}(\boldsymbol{\hat\beta}) = \hat I^{-1}(\boldsymbol{\hat\beta})\). A matriz de Fisher estimada pode ser escrita da forma \(\hat I(\boldsymbol{\hat\beta}) = \mathbf{X}^{\top}\mathbf{V}\mathbf{X}\), em que

\[\mathbf{X} = \begin{bmatrix} 1 & x_{11} & \cdots & x_{1p}\\ 1 & x_{21} & \cdots & x_{2p}\\ \vdots & \vdots & \ddots & \vdots\\ 1 & x_{n1} & \cdots & x_{np} \end{bmatrix}_{n\times(p + 1)}\quad \mbox{e}\quad \mathbf{V} = \begin{bmatrix} \hat\pi_1(1-\hat\pi_1) & 0 & \cdots & 0\\ 0 & \hat\pi_2(1-\hat\pi_2) & \cdots & 0\\ \vdots & \vdots & \ddots & \vdots\\ 0 & 0 & \cdots & \hat\pi_n(1-\hat\pi_n) \end{bmatrix}_{n\times n}.\]

e \(\hat\pi_i\) é a estimativa da probabilidade de ocorrência do evento para \(i\)-ésimo indivíduo. A variância estimada de um determinado \(\hat\beta_j\) é encontrada no termo \(jj\) da matriz de variâncias estimadas e a covariância entre \(\hat\beta_j\) e \(\hat\beta_l\) é encontrada no termo \(jl\), ou no termo \(lj\), já que a matriz é simétrica. Então, o desvio padrão estimado de um determinado coeficiente \(\hat\beta_j\) é dado por

\[ \hat\sigma (\hat\beta_j) = \sqrt{\widehat{\text{Var}}(\hat\beta_j)} = \sqrt{\hat I^{-1}_{jj}(\boldsymbol{\hat\beta})}.\]

2.2 Avaliação da significância dos parâmetros

2.2.1 Teste de Wald

Para testarmos se um único \(\beta_j\)\(,j = 0, \ldots, p\) é igual a zero, ou seja, para testarmos

\[ H_0: \beta_j = 0\quad \mbox{vs}\quad H_1: \beta_j \neq 0\] a um nível de significância \(\alpha, \ 0<\alpha<1\), podemos utilizar a estatística de Wald, definida como

\[ W_j = \frac{\hat\beta_j}{\hat\sigma(\hat\beta_j)}.\] Sob hipótese nula, essa estatística possui distribuição assintótica qui-quadrado com 1 grau de liberdade. Para valores maiores que o quantil com acumulada igual a \(1-\alpha\), rejeitamos \(H_0\). Também podemos testar a significância de todo o vetor \(\boldsymbol{\beta}\) a partir da seguinte fórmula:

\[ W = \mathbf{\hat\beta}^{\top}\left(X^{\top} VX\right)\mathbf{\hat\beta}.\] Sob hipótese nula, essa quantidade possui distribuição assintótica qui-quadrado com \(p + 1\) graus de liberdade. O critério de rejeição é análogo ao do caso unidimensional.

2.2.2 Teste da razão de verossimilhança

Para testamos a hipótese de que alguma partição do vetor \(\boldsymbol\beta\) de tamanho \(k, \ 1\leq k \leq p\), é significativa no modelo, também podemos utilizar a estatística da razão de verossimilhanças, definida por

\[ G = -2\log (L_S) + 2\log(L_C),\]

em que \(L_S\) é a verossimilhança do modelo sem o vetor de interesse e \(L_C\) é a verossimilhança do modelo com o vetor de interesse. Sob hipótese nula, essa estatística tem distribuição qui-quadrado com \(k\) graus de liberdade e o critério de rejeição é análogo ao teste de Wald.

2.3 Intervalos de Confiança

2.3.1 Intervalo de confiança para os parâmetros

O intervalo de confiança de um determinado \(\beta_j\) com confiança de \(100(1-\alpha)\%\) é definido como

\[ IC\left[\beta_j; 100(1-\alpha)\%\right] = \left[\hat\beta_j\mp z_{1-\alpha/2}\hat\sigma(\hat\beta_j)\right],\]

em que \(z_{1-\alpha/2}\) é a quantil da distribuição normal padrão cuja probabilidade acumulada é \(1-\alpha/2\).

2.3.2 Intervalo de confiança para o logito das probabilidades

O estimador do preditor linear do \(i\)-ésimo indivíduo \(g(\mathbf{x}_i)\) é pode ser escrito como

\[ \hat g(\mathbf{x}_i) = \mathbf{x}_i^{\top}\widehat{\mathbf{\beta}},\]

e sua variância estimada é definida por

\[ \widehat {\text{Var}}[\hat g(\mathbf{x}_i)] = \mathbf{x}_i^{\top}(\mathbf{X}^{\top}\mathbf{V}\mathbf{X})^{-1}\mathbf{x}_i.\]

Logo, o intervalo de confiança para \(g(\mathbf{x}_i)\) com confiança \(100(1-\alpha)\%\) é dado por

\[ IC[g(\mathbf{x}_i); 100(1-\alpha)\%] = \left[\hat g(\mathbf{x}_i)\mp z_{1-\alpha/2}\sigma[\hat g(\mathbf{x}_i)]\right]\]

2.3.3 Intervalo de confiança para os valores ajustados

A partir do intervalo de confiança do logito das probabilidades, podemos encontrar o intervalo de confiança das probabilidades estimadas:

\[ IC[\pi_i; 100(1-\alpha)\%] = \left[\frac{e^{\hat g(\mathbf{x}_i)\mp z_{1-\alpha/2}\sigma[\hat g(\mathbf{x}_i)]}}{1 + e^{\hat g(\mathbf{x}_i)\mp z_{1-\alpha/2}\sigma[\hat g(\mathbf{x}_i)]}}\right].\]

2.4 Análise de Resíduos

2.4.1 Resíduos de Pearson

Para testarmos a hipótese \(H_0:\) “O modelo está bem ajustado” contra \(H_1:\) “O modelo não está bem ajustado” podemos utilizar os resíduos de Pearson que, para o \(i\)-ésimo indivíduo, é definido como

\[ r(y_i, \hat\pi_i) = r_i = \frac{y_i-\hat\pi_i}{\sqrt{\hat\pi_i(1-\hat\pi_i)}}, \quad i = 1, \ldots, n. \] A partir deles, calculamos a estatística qui-quadrado de Pearson pela fórmula

\[\chi^2 = \displaystyle\sum_{i = 1}^nr(y_i, \hat\pi_i)^2.\] Sob a hipótese nula, essa estatística segue uma distribuição Qui-quadrado com \(n-(p + 1)\) graus de liberdade. O critério de rejeição é análogo ao teste de Wald.

2.4.2 Resíduos deviance

Para testar a mesma hipótese do teste de Pearson, podemos utilizar os resíduos deviance, que, para o \(i\)-ésimo são definidos por

\[ d(y_i, \hat\pi_i) = \pm \left\{2\left[ y_i\log\left(\frac{y_i}{\hat\pi_i}\right) + (1-y_i)\log\left(\frac{1-y_i}{1-\hat\pi_i}\right)\right] \right\}^{1/2}.\] Sua estatística é dada por sua soma, isto é,

\[ D = \displaystyle\sum_{j = 1}^n d(y_j, \hat\pi_j)^2.\]

Sob a hipótese nula, a estatística \(D\) possui \(n-(p + 1)\) graus de liberdade e o critério de rejeição é análogo ao teste de Pearson.

2.5 Predição

Após a estimação das probabilidades de ocorrência, podemos estar interessados em associar um valor estimado para \(y\), denotado por \(\hat y\), que pode estar de acordo ou não com o valor real. A tabela abaixo mostra a chamada matriz de confusão ou tabela de contigência de um modelo arbitrário.

ŷ = 0 ŷ = 1
y = 0 VN FP
y = 1 FN VP

em que VN, VP, FN e FP representam, respectivamente, verdadeiro negativo, verdadeiro positivo, falso negativo e falso positivo. A partir desses quatro valores, podemos definir três conceitos para avaliar se a predição foi boa: a precisão, a sensibilidade e a especificidade.

A precisão (ou accuracy) mede a proporção de predições corretas, independemente de serem verdadeiros positivos ou negativos.

\[ACC = \frac{VP + VN}{n}\]

em que \(n\) é o tamanho da amostra.

A sensibilidade (ou sensitivity) mede a proporção de verdadeiros positivos, ou seja, a capacidade do modelo classificar como positivo dado que ele é de fato positivo.

\[ SENS = \frac{VP}{VP + FN}.\]

A especificidade (ou specificity) mede a proporção de verdadeiros negativos, ou seja, a capacidade do modelo classificar como negativo dado que ele é de fato negativo.

\[ SPE = \frac{VN}{VN + FP}.\]

É desejável que essas três quantidades estejam próximas de 1, valores próximos a 0 indicam uma predição não tão boa. Outra medida de avaliar a predição é a partir da curva ROC (Receiver Operating Characteristic Curve, ou Curva Característica de Operação do Receptor) que gera vários valores e mede sua sensibilidade e 1 menos a sua especificidade, além da área sobre a curva. Valores próximos a 0.5 indicam uma má predição, já valores próximos a 1 indicam uma boa predição.

As fórmulas utilizadas podem ser encontradas em Hosmer, Lemeshow, and Sturdivant (2013) e Da Silva (2016).

3 Análise exploratória

O banco de dados escolhido para este tutorial está presente no pacote aplore3 e é chamado lowbwt. Esse conjunto de dados contém 11 variáveis referentes a 189 partos de mulheres atendidas numa clínica obstétrica e pode ser chamado pelo seguinte comando

library(aplore3)
data(lowbwt)

A Tabela abaixo mostra as 4 variáveis de interesse para a regressão logística, sendo low a variável resposta, age e lwt covariáveis preditoras numéricas e smoke uma covariável preditora (fator).

Variável Significado
low Indicador de peso baixo ao nascer (1: > = 2500g, 2: < 2500g).
age Idade da mãe em anos.
lwt Peso da mãe no último período menstrual em libras.
smoke Indicador de fumo durante a gravidez (1: Não, 2: Sim).

A Figura 3.1 mostra os boxplots das idades das mães pelo peso do bebê. É possível perceber que não há muita diferença entre os dois grupos, indicando que, provavelmente, a idade da mãe não deve ser significativa no modelo.

library(ggplot2)
theme_set(theme_bw())

ggplot(data = lowbwt, aes(x = low, y = age)) + 
  geom_boxplot() + 
  labs(x = "Peso do bebê", y = "Idade")
Gráfico da idade pelo peso do bebê ao nascer.

Figure 3.1: Gráfico da idade pelo peso do bebê ao nascer.

O segundo gráfico, presente na Figura 3.2, ilustra os boxplots do peso da mãe em libras pelo peso do bebê ao nascer. É possível perceber que o peso das mães que tiveram filhos mais pesados tende a ser levemente maior.

ggplot(data = lowbwt, aes(x = low, y = lwt)) + 
  geom_boxplot() + 
  labs(x = "Peso do bebê", y = "Peso da mãe (libras)")
\label{fig:lwt} Gráfico da idade pelo peso do bebê ao nascer.

Figure 3.2: Gráfico da idade pelo peso do bebê ao nascer.

A tabela a seguir mostra o indicador de se mãe fumou pelo peso do bebê. É possível notar que, dentre as mães que não fumaram, o peso dos bebês tende a ser maior que 2500 g, já dentre as que fumaram, a proporção de bebês mais leves aumenta.

table(lowbwt$smoke, lowbwt$low)
##      
##       >= 2500 g < 2500 g
##   No         86       29
##   Yes        44       30

Transformando todas as variáveis binárias para torná-las variáveis dummies (0 para não e 1 para sim). É importante verificar se as variáveis fatores estão realmente como fatores, já que muitas vezes elas aparecem como numéricas. Para isso, é necessário usar o comando class, caso elas não estejam, uma das maneiras de transformá-las em fatores é com a função as.factor.

class(lowbwt$low)
## [1] "factor"
class(lowbwt$smoke)
## [1] "factor"
levels(lowbwt$low) = c(0, 1)
levels(lowbwt$smoke) = c(0, 1)

4 Modelagem

4.1 Ajustes

Neste tutorial será mostrado como estimar a probabilidade de um bebê ter um peso menor que 2500 g ao nascer, a partir da idade da mãe, do peso dela no último período menstrual e se ela fumou durante a gravidez. O comando geral para a regressão logística é a partir da função glm usando o argumento family = binomial, que por default usa a função de ligação logito. O primeiro passo será calcular apenas a probabilidade de um bebê nascer com peso baixo a partir da idade da mãe.

(ajuste1 <- glm(low ~ age, family = binomial, data = lowbwt))
## 
## Call:  glm(formula = low ~ age, family = binomial, data = lowbwt)
## 
## Coefficients:
## (Intercept)          age  
##     0.38458     -0.05115  
## 
## Degrees of Freedom: 188 Total (i.e. Null);  187 Residual
## Null Deviance:       234.7 
## Residual Deviance: 231.9     AIC: 235.9

Aplicando a função summary para verificar a significância do modelo, tem-se

summary(ajuste1)
## 
## Call:
## glm(formula = low ~ age, family = binomial, data = lowbwt)
## 
## Deviance Residuals: 
##     Min       1Q   Median       3Q      Max  
## -1.0402  -0.9018  -0.7754   1.4119   1.7800  
## 
## Coefficients:
##             Estimate Std. Error z value Pr(>|z|)
## (Intercept)  0.38458    0.73212   0.525    0.599
## age         -0.05115    0.03151  -1.623    0.105
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 234.67  on 188  degrees of freedom
## Residual deviance: 231.91  on 187  degrees of freedom
## AIC: 235.91
## 
## Number of Fisher Scoring iterations: 4

Considerando um nível de 5% de significância, a idade da mãe não influencia no modelo, já que seu p-valor é igual a 0, 105 para testar a hipótese de que o respectivo parâmetro é igual a zero, usando a estatística de Wald. Repetindo o processo com o peso da mãe, tem-se

ajuste2 <- glm(low ~ lwt, family = binomial, data = lowbwt)
summary(ajuste2)
## 
## Call:
## glm(formula = low ~ lwt, family = binomial, data = lowbwt)
## 
## Deviance Residuals: 
##     Min       1Q   Median       3Q      Max  
## -1.0951  -0.9022  -0.8018   1.3609   1.9821  
## 
## Coefficients:
##             Estimate Std. Error z value Pr(>|z|)  
## (Intercept)  0.99831    0.78529   1.271   0.2036  
## lwt         -0.01406    0.00617  -2.279   0.0227 *
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 234.67  on 188  degrees of freedom
## Residual deviance: 228.69  on 187  degrees of freedom
## AIC: 232.69
## 
## Number of Fisher Scoring iterations: 4

Considerando 5% de significância, a estatística Wald mostra que o peso da mãe é significativo para o modelo (\(p = 0.0227\)) e possui valor negativo. O terceiro ajuste usa a variável indicadora de fumo da mãe durante o parto.

ajuste3 <- glm(low ~ smoke, family = binomial, data = lowbwt)
summary(ajuste3)
## 
## Call:
## glm(formula = low ~ smoke, family = binomial, data = lowbwt)
## 
## Deviance Residuals: 
##     Min       1Q   Median       3Q      Max  
## -1.0197  -0.7623  -0.7623   1.3438   1.6599  
## 
## Coefficients:
##             Estimate Std. Error z value Pr(>|z|)    
## (Intercept)  -1.0871     0.2147  -5.062 4.14e-07 ***
## smoke1        0.7041     0.3196   2.203   0.0276 *  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 234.67  on 188  degrees of freedom
## Residual deviance: 229.80  on 187  degrees of freedom
## AIC: 233.8
## 
## Number of Fisher Scoring iterations: 4

Nesse caso, as mães fumantes apresentam uma probabilidade de ter um filho mais leve maior que as não fumantes (\(p = 0.0276\)). Por fim, será realizado o ajuste com as duas variáveis que foram significativas

ajuste4 <- glm(low ~ lwt + smoke, family = binomial, data = lowbwt)
summary(ajuste4)
## 
## Call:
## glm(formula = low ~ lwt + smoke, family = binomial, data = lowbwt)
## 
## Deviance Residuals: 
##     Min       1Q   Median       3Q      Max  
## -1.2487  -0.8459  -0.7374   1.2491   2.0808  
## 
## Coefficients:
##             Estimate Std. Error z value Pr(>|z|)  
## (Intercept)  0.62200    0.79592   0.781   0.4345  
## lwt         -0.01332    0.00609  -2.188   0.0287 *
## smoke1       0.67667    0.32470   2.084   0.0372 *
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 234.67  on 188  degrees of freedom
## Residual deviance: 224.34  on 186  degrees of freedom
## AIC: 230.34
## 
## Number of Fisher Scoring iterations: 4

A partir dessa saída, pode-se concluir que as probabilidades ajustadas de ter um filho com menor peso terão intercepto nulo (\(p = 0.4345\)), serão decrescentes conforme o peso da mãe aumenta (\(p = 0.0287\)) e aumentam se a mãe é fumante (\(p = 0.0372\)). A seguir, será utilizada a tabela ANOVA com testes da máxima verossimilhança para verificar a significância do modelo completo.

anova(ajuste4, test = "Chisq")
## Analysis of Deviance Table
## 
## Model: binomial, link: logit
## 
## Response: low
## 
## Terms added sequentially (first to last)
## 
## 
##       Df Deviance Resid. Df Resid. Dev Pr(>Chi)  
## NULL                    188     234.67           
## lwt    1   5.9813       187     228.69  0.01446 *
## smoke  1   4.3500       186     224.34  0.03701 *
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Considerando ainda um nível de \(5\%\) de significância, o modelo com as variáveis lwt e smoke mostrou-se significativo. É possível também criar um intervalo de confiança para as estimativas a partir da funçaõ confint.

cbind(Estimativa = coef(ajuste4), confint(ajuste4))
## Waiting for profiling to be done...
##              Estimativa       2.5 %       97.5 %
## (Intercept)  0.62199682 -0.88316262  2.254747549
## lwt         -0.01332433 -0.02607485 -0.002048779
## smoke1       0.67667325  0.04086881  1.317358561

Como pode-se perceber, o intervalo de confiança do intercepto contém o número 0, o que corrobora com a evidência de sua nulidade. A probabilidade de a \(i\)-ésima mãe ter um filho com peso menor que 2500 g pode ser descrita como

\[\pi (\mathbf{x}_i) = \frac{\exp(-0.0133\times lwt + 0.6767\times smoke)}{1 + \exp(-0.0133\times lwt + 0.6767\times smoke)}.\]

4.2 Análise de Resíduos

O primeiro passo para a análise de resíduos é a obtenção dos resíduos de Pearson para calcular a estatística de Pearson. Na Figura 4.1 é possível perceber que apenas um resíduo teve módulo maior que 2, indicando que, no geral, os resíduos estão bem comportados. Além disso, é possível perceber uma massa de pontos superior a 0, indicando os resíduos das mães que tiveram um filho com peso maior que 2500 g (low = 1) e uma segunda massa de pontos, indicando os resíduos das mães que tiveram filho com menor peso (low = 0). Entretanto, esse comportamento ocorreu devido à organização do banco de dados. Muitos bancos de dados apresentam resíduos se comportando conforme a Figura 4.2.

resp <- data.frame(indice = 1:nrow(lowbwt),
                   residuos = residuals(ajuste4, type = "pearson"))

ggplot(resp, aes(x = indice, y = residuos)) +
  geom_point() +
  geom_hline(yintercept = 0) +
  labs(x = "Índice", y = "Resíduos")