Regressão para dados binários

Modelo com função de ligação logito

A primeira forma de declarar a resposta quando temos um glm binomial com dados grupados é por umja matriz com duas colunas, cada uma delas com as contagens de um dos desfechos binários (insetos mortos e não mortos, no caso).

Forma alternativa:

Neste caso, declaramos a resposta como a fração de insetos mortos, e o número de insetos mortos é declarado em weights.

## 
## Call:
## glm(formula = cbind(Resposta, n - Resposta) ~ ldose, family = binomial, 
##     data = data_BCH)
## 
## Deviance Residuals: 
##       7        8        9       10       11       12  
## -1.8245   1.1416   0.3390  -0.4281   1.2679  -1.2728  
## 
## Coefficients:
##             Estimate Std. Error z value Pr(>|z|)    
## (Intercept)  -4.0428     0.4972  -8.131 4.27e-16 ***
## ldose         2.8381     0.3392   8.367  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 105.1973  on 5  degrees of freedom
## Residual deviance:   8.1581  on 4  degrees of freedom
## AIC: 35.376
## 
## Number of Fisher Scoring iterations: 4
## 
## Call:
## glm(formula = Resposta/n ~ ldose, family = binomial, data = data_BCH, 
##     weights = n)
## 
## Deviance Residuals: 
##       7        8        9       10       11       12  
## -1.8245   1.1416   0.3390  -0.4281   1.2679  -1.2728  
## 
## Coefficients:
##             Estimate Std. Error z value Pr(>|z|)    
## (Intercept)  -4.0428     0.4972  -8.131 4.27e-16 ***
## ldose         2.8381     0.3392   8.367  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 105.1973  on 5  degrees of freedom
## Residual deviance:   8.1581  on 4  degrees of freedom
## AIC: 35.376
## 
## Number of Fisher Scoring iterations: 4

Os modelos ajustados são rigorosamente os mesmos. Muda apenas a forma de declaração.

Exercício: Escreva a equação do modelo ajustado e calcule a estimativa da probabilidade de morte para insetos submetidos a uma dose de 7 unidades. Adicionalmente, interprete (se couber) os parâmetros do modelo.

Agora, vamos adicionar ao gráfico a curva referente ao modelo ajustado

Probabilidades estimadas para as doses no grid que criamos

Modelo com função de ligação probito

## 
## Call:
## glm(formula = Resposta/n ~ ldose, family = binomial(link = "probit"), 
##     data = data_BCH, weights = n)
## 
## Deviance Residuals: 
##       7        8        9       10       11       12  
## -1.6900   1.1213   0.3137  -0.3505   1.3744  -1.3053  
## 
## Coefficients:
##             Estimate Std. Error z value Pr(>|z|)    
## (Intercept)  -2.4373     0.2764  -8.817   <2e-16 ***
## ldose         1.7062     0.1881   9.069   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 105.1973  on 5  degrees of freedom
## Residual deviance:   7.9272  on 4  degrees of freedom
## AIC: 35.145
## 
## Number of Fisher Scoring iterations: 4

Exercício: Escreva a equação do modelo ajustado e calcule a estimativa da probabilidade de morte para insetos submetidos a uma dose de 7 unidades.

Adicionando ao gráfico a curva referente ao odelo ajustado

Modelo com função de ligação complemento log-log

## 
## Call:
## glm(formula = Resposta/n ~ ldose, family = binomial(link = "cloglog"), 
##     data = data_BCH, weights = n)
## 
## Deviance Residuals: 
##       7        8        9       10       11       12  
## -2.4988   0.8083   0.5615   0.1727   1.7142  -1.5676  
## 
## Coefficients:
##             Estimate Std. Error z value Pr(>|z|)    
## (Intercept)  -3.1170     0.3562  -8.751   <2e-16 ***
## ldose         1.8570     0.2166   8.575   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 105.197  on 5  degrees of freedom
## Residual deviance:  12.638  on 4  degrees of freedom
## AIC: 39.856
## 
## Number of Fisher Scoring iterations: 5

Exercício: Escreva a equação do modelo ajustado e calcule a estimativa da probabilidade de morte para insetos submetidos a uma dose de 7 unidades.

Adicionando ao gráfico a curva referente ao odelo ajustado

AIC

Vamos comparar os ajustes dos três modelos calculando os respectivos AICs.

##         df      AIC
## ajuste1  2 35.37617
## ajuste2  2 35.14529
## ajuste3  2 39.85641
## [1] -15.68809 -15.57264 -17.92820

Log-verossimilhanças maximizadas.

O modelo com ligação probito é ligeiramente superior ao com ligação logito. O modelo cloglog claramente tem pior ajuste que seus concorrentes.

E se ao invés de analisarmos os dados da forma como estão disponíveis (grupados) analisarmos na forma não grupada (ou seja, um inseto por linha)? Vamos construir uma nova base.

##          ldose Trat resp_bin
## 7    0.6931472  BHC        1
## 7.1  0.6931472  BHC        1
## 7.2  0.6931472  BHC        0
## 7.3  0.6931472  BHC        0
## 7.4  0.6931472  BHC        0
## 7.5  0.6931472  BHC        0
## 7.6  0.6931472  BHC        0
## 7.7  0.6931472  BHC        0
## 7.8  0.6931472  BHC        0
## 7.9  0.6931472  BHC        0
## 7.10 0.6931472  BHC        0
## 7.11 0.6931472  BHC        0
## 7.12 0.6931472  BHC        0
## 7.13 0.6931472  BHC        0
## 7.14 0.6931472  BHC        0
## 7.15 0.6931472  BHC        0
## 7.16 0.6931472  BHC        0
## 7.17 0.6931472  BHC        0
## 7.18 0.6931472  BHC        0
## 7.19 0.6931472  BHC        0

data_BCH2 é a base de dados desagregados. Agora, cada linha da base é o dado de um único besouro, e a resposta é 1, para os insetos mortos, e zero, para os vivos.

Vamos ajustar o modelo de regressão binomial com ligação logito à base de dados desagregada.

## 
## Call:
## glm(formula = resp_bin ~ ldose, family = binomial, data = data_BCH2)
## 
## Deviance Residuals: 
##     Min       1Q   Median       3Q      Max  
## -2.0018  -0.6981  -0.4862   0.7678   2.0947  
## 
## Coefficients:
##             Estimate Std. Error z value Pr(>|z|)    
## (Intercept)  -4.0428     0.4972  -8.131 4.27e-16 ***
## ldose         2.8381     0.3392   8.367  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 414.10  on 298  degrees of freedom
## Residual deviance: 317.06  on 297  degrees of freedom
## AIC: 321.06
## 
## Number of Fisher Scoring iterations: 4

E vamos comparar os ajustes dos modelos aplicados à base agregada e à base não agregada por meio das estimativas dos parâmetros e correspondentes erros padrões.

## Calls:
## 1: glm(formula = cbind(Resposta, n - Resposta) ~ ldose, family = 
##   binomial, data = data_BCH)
## 2: glm(formula = resp_bin ~ ldose, family = binomial, data = data_BCH2)
## 
##             Model 1 Model 2
## (Intercept)  -4.043  -4.043
## SE            0.497   0.497
##                            
## ldose         2.838   2.838
## SE            0.339   0.339
## 

Observe que o modelo ajustado às duas bases é idêntico. Então, usar a base de dados agregada ou não agregada não altera o resultado do ajuste.

## 'log Lik.' -15.68809 (df=2)
## 'log Lik.' -158.529 (df=2)

As escalas das verossimilhanças, no entanto, são diferentes. Em particular, o teste da qualidade do ajuste, baseado na deviance residual, se aplica aos dados agregados (para n grande), mas não aos dados desagregados. Vamos avaliar a qualidade do ajuste.

## [1] 0.08595524

p-valor do teste da qualidade do ajuste. Ao nível de significância de 5% não temos evidência de que o modelo não se ajuste bem aos dados.

Exercício - Avaliar a qualidade dos ajustes com base nas deviances (teste ao nível de significância de 5%). Faça também qqplots com envelopes simulados.

Parte 2

Agora, vamos analisar os três tratamentos conjuntamente. Nesta
etapa, vamos usar apenas a função de ligação logito

Gráfico de dispersão.

Conforme discutido em aula, vamos considerar três modelos, conforme descrito na sequência:

ajuste4 - Modelo de retas coincidentes - Sem considerar o efeito de tratamento. ajuste5 - Modelo de retas paralelas - Considerando o efeito de tratamento apenas no intercepto (modelo aditivo). ajuste6 - Modelo de retas concorrentes - Sem considerar o efeito de tratamento no intercepto e associado à dose (modelo multiplicativo - com efeito de interação)..

Modelo de retas coincidentes

Este é o modelo mais simples, em que ajustamos uma única reta (na escala do preditor, curva na escala da resposta) para os três tratamentos.

## 
## Call:
## glm(formula = cbind(Resposta, n - Resposta) ~ ldose, family = binomial, 
##     data = dados)
## 
## Deviance Residuals: 
##    Min      1Q  Median      3Q     Max  
## -4.336  -3.381  -1.384   4.024   6.301  
## 
## Coefficients:
##             Estimate Std. Error z value Pr(>|z|)    
## (Intercept)  -2.4653     0.2386  -10.33   <2e-16 ***
## ldose         2.0106     0.1703   11.81   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 413.65  on 17  degrees of freedom
## Residual deviance: 246.83  on 16  degrees of freedom
## AIC: 314.3
## 
## Number of Fisher Scoring iterations: 5

Adicionando o modelo ajustado ao gráfico.

Modelo de retas paralelas

Este é o modelo intermediário (aditivo), em que ajustamos retas paralelas (na escala do preditor) para os três tratamentos.

## 
## Call:
## glm(formula = cbind(Resposta, n - Resposta) ~ ldose + Trat, family = binomial, 
##     data = dados)
## 
## Deviance Residuals: 
##     Min       1Q   Median       3Q      Max  
## -2.0270  -0.6160  -0.2422   0.9016   2.6120  
## 
## Coefficients:
##             Estimate Std. Error z value Pr(>|z|)    
## (Intercept)  -3.8425     0.3327 -11.550  < 2e-16 ***
## ldose         2.6958     0.2157  12.498  < 2e-16 ***
## TratDDT      -0.7128     0.1981  -3.598  0.00032 ***
## TratDDT+BHC   2.4177     0.2381  10.154  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 413.648  on 17  degrees of freedom
## Residual deviance:  21.282  on 14  degrees of freedom
## AIC: 92.753
## 
## Number of Fisher Scoring iterations: 4

Agora, para predição precisamos de um grid de valores para cada inseticida. Vamos usar a função expand.grid para isso.

Adicionando as curvas de mortalidade vs dose para cada inseticida.

Modelo de retas concorrentes

Este é o modelo mais completo (multiplicativo - com interação), em que ajustamos retas concorrentes (na escala do preditor) para os três tratamentos.

## 
## Call:
## glm(formula = cbind(Resposta, n - Resposta) ~ ldose * Trat, family = binomial, 
##     data = dados)
## 
## Deviance Residuals: 
##      Min        1Q    Median        3Q       Max  
## -1.82453  -0.78870  -0.05548   0.59419   2.24095  
## 
## Coefficients:
##                   Estimate Std. Error z value Pr(>|z|)    
## (Intercept)        -4.0428     0.4972  -8.131 4.27e-16 ***
## ldose               2.8381     0.3392   8.367  < 2e-16 ***
## TratDDT             0.1278     0.7118   0.180   0.8575    
## TratDDT+BHC         1.9221     0.7722   2.489   0.0128 *  
## ldose:TratDDT      -0.5602     0.4680  -1.197   0.2313    
## ldose:TratDDT+BHC   0.5503     0.6662   0.826   0.4088    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 413.65  on 17  degrees of freedom
## Residual deviance:  17.89  on 12  degrees of freedom
## AIC: 93.361
## 
## Number of Fisher Scoring iterations: 4

Comparação dos ajustes dos três modelos

Pelo fato dos três modelos serem encaixados, vamos compará-los usando o TRV.

## Analysis of Deviance Table
## 
## Model 1: cbind(Resposta, n - Resposta) ~ ldose
## Model 2: cbind(Resposta, n - Resposta) ~ ldose + Trat
## Model 3: cbind(Resposta, n - Resposta) ~ ldose * Trat
##   Resid. Df Resid. Dev Df Deviance Pr(>Chi)    
## 1        16    246.832                         
## 2        14     21.282  2  225.550   <2e-16 ***
## 3        12     17.890  2    3.392   0.1834    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Repare, olhando para as duas primeiras linhas, que os modelos de retas coincidentes e retas paralelas produzem desvios significativamente diferentes. Nesse caso, dentre os dois modelos, optamos pelo não restrito (retas paralelas). No entanto, ao observar as duas últimas linhas, verificamos que os dois ajustes produzem desvios que não apresentam diferença significativa. Nesse caso, podemos optar pelo modelo restrito (retas paralelas). Pela análise dos desvios, baseado nos TRVs, o modelo de retas paralelas (efeito de tratamento no intercepto) é preferível.

##         df       AIC
## ajuste4  2 314.30301
## ajuste5  4  92.75286
## ajuste6  6  93.36065

Repare que também através dos AICs tem-se indicativo de melhor ajuste para o modelo de retas paralelas.

Observando os resultados do summary, verifica-se que o modelo de retas paralelas tem deviance 21,282, associado a 14 graus de liberdade. Vamos testar a qualidade do ajuste.

## [1] 0.09462121

Ao nível de significância de 5% não se tem evidência significativa de falta de ajuste.

Exercício - Para o modelo escolhido:

1- Escrever o modelo ajustado na escala do preditor, da chance e da probabilidade de resposta; 2- Interpretar as estimativas dos parâmetros do modelo; 3- Obter ICs 95% para os parâmetros do modelo; 4- Estimar a probabilidade de morte para doses de 3 e 7 unidades para cada tratamento. 5- Obter ICs 95% para as probabilidades mencionadas no item anterior; 6- Estimar, para cada tratamento, as doses letais 50% e 90%; 7- Fazer uma análise de diagnóstico, baseada na avaliação dos resíduos e de medidas de influência.