Os modelos de regressão com uma mistura de variáveis quantitativas e qualitativas são chamados de modelos de análise de covariância (ANCOVA). Eles são uma extensão dos modelos ANOVA no sentido de que fornecem um método de controle estatístico dos efeitos das variáveis independentes quantitativas, chamadas covariáveis ou variáveis de controle, em um modelo que inclui tanto variáveis quantitativas quanto qualitativas ou binários.

Vamos seguir nosso exemplo prático anterior com base no salário médio (em dólares) de professores de escolas públicas nos EUA para o ano escolar de 2005–2006. Não obstante, agora vamos incluir ao modelo a variável gastos das autoridades locais com a escola pública.

1 Salário médio de professores de escolas públicas

Repassando alguns passos.

1.1 Importar o conjunto de dados

Primeiro, importamos o conjunto de dados.

library(readxl)
exercicio_anova <- read_excel("D:/Documentos/Fabio/OneDrive/Área de Trabalho/ADRI_exercício/exercicio_anova.xlsx", col_types = c("text", "text", "numeric", "numeric"))
print(exercicio_anova)
## # A tibble: 51 × 4
##    Estado        Regiao       Salario Gastos
##    <chr>         <chr>          <dbl>  <dbl>
##  1 Connecticut   Nordeste       60822  12436
##  2 Illinois      Centro-Norte   58246   9275
##  3 Indiana       Centro-Norte   47831   8935
##  4 Iowa          Centro-Norte   43130   7807
##  5 Kansas        Centro-Norte   43334   8373
##  6 Maine         Nordeste       41596  11285
##  7 Massachusetts Nordeste       58624  12596
##  8 Michigan      Centro-Norte   54895   9880
##  9 Minnesota     Centro-Norte   49634   9675
## 10 Missouri      Centro-Norte   41839   7840
## # ℹ 41 more rows

Como se pode observar, o conjunto de dados apresenta 51 observações classificadas em três regiões geográficas:

  1. Nordeste e Centro-norte (21 estados no total);
  2. Sul (17 estados no total);
  3. Oeste (13 estados no total).

Para realizar a análise de variancia é preciso definir as variáveis binárias para representar cada região.

1.2 Definir as variávies binárias

Para definir as variáveis binárias que representam cada região, é necessário selecionar uma delas como região de referência.

Para o exercício, considere a seguinte classificação:

  • a região Oeste como categoria de referência;
  • \(D_{2} = 1\) para os estados da regiões Nordeste e Centro-Norte; \(0\) para as demais;
  • \(D_{3} = 1\) para os estados da região Sul; \(0\) para as demais.

Para criar as variávies binárias no R, execute o seguinte código:

library(dplyr)

exercicio_anova <- exercicio_anova %>%
  mutate(D2 = case_when(
    Regiao == "Nordeste" | Regiao == "Centro-Norte" ~ 1,
    TRUE ~ 0
  ))

exercicio_anova <- exercicio_anova %>%
  mutate(D3 = case_when(
    Regiao == "Sul" ~ 1,
    TRUE ~ 0
  ))
print(exercicio_anova)
## # A tibble: 51 × 6
##    Estado        Regiao       Salario Gastos    D2    D3
##    <chr>         <chr>          <dbl>  <dbl> <dbl> <dbl>
##  1 Connecticut   Nordeste       60822  12436     1     0
##  2 Illinois      Centro-Norte   58246   9275     1     0
##  3 Indiana       Centro-Norte   47831   8935     1     0
##  4 Iowa          Centro-Norte   43130   7807     1     0
##  5 Kansas        Centro-Norte   43334   8373     1     0
##  6 Maine         Nordeste       41596  11285     1     0
##  7 Massachusetts Nordeste       58624  12596     1     0
##  8 Michigan      Centro-Norte   54895   9880     1     0
##  9 Minnesota     Centro-Norte   49634   9675     1     0
## 10 Missouri      Centro-Norte   41839   7840     1     0
## # ℹ 41 more rows

Observe que duas novas colunas, D2 e D3, foram adicionadas ao conjunto de dados. Quando ambas assumem o valor zero, a observação corresponde à região de referência, representada por D1.

Para que o R interprete uma variável numérica como qualitativa, é importante convertê-la em um fator. Essa transformação é necessária porque a ANOVA compara categorias, e não valores contínuos. Portanto, o modelo precisa reconhecer que os valores representam grupos distintos, e não uma escala numérica.

exercicio_anova$D2 <- as.factor(exercicio_anova$D2)
exercicio_anova$D3 <- as.factor(exercicio_anova$D3)
print(exercicio_anova)
## # A tibble: 51 × 6
##    Estado        Regiao       Salario Gastos D2    D3   
##    <chr>         <chr>          <dbl>  <dbl> <fct> <fct>
##  1 Connecticut   Nordeste       60822  12436 1     0    
##  2 Illinois      Centro-Norte   58246   9275 1     0    
##  3 Indiana       Centro-Norte   47831   8935 1     0    
##  4 Iowa          Centro-Norte   43130   7807 1     0    
##  5 Kansas        Centro-Norte   43334   8373 1     0    
##  6 Maine         Nordeste       41596  11285 1     0    
##  7 Massachusetts Nordeste       58624  12596 1     0    
##  8 Michigan      Centro-Norte   54895   9880 1     0    
##  9 Minnesota     Centro-Norte   49634   9675 1     0    
## 10 Missouri      Centro-Norte   41839   7840 1     0    
## # ℹ 41 more rows

Agora o conjunto de dados está pronto para rodar o modelo de regressão.

1.3 Especificar o modelo de regressão

Suponhamos que desejamos verificar se o salário médio anual dos professores de escolas públicas varia conforme as diferentes regiões em que o país foi dividido e os gastos das autoridades locais com a escola pública.

Para tanto, podemos aplicar a ANCOVA para comparar dois ou mais valores médios com base em variáveis qualitativas e quantitativas.

Vamos admitir o seguinte modelo:

\[Y_{i} = \beta_{1} + \beta_{2}D_{2i} + \beta_{3}D_{3i} + \beta_{4}X_{i} + u_{i}\]

onde,

\(Y_{i}\) = salário médio dos professores da rede pública no Estado i;

\(D_{2i}\) = 1 se o estado pertencer a região Nordeste ou Norte-central; = 0 se estiver situado em outras regioões do país;

\(D_{3i}\) = 1 se o estado pertencer a região Sul; 0 se estiver localizado em outras regiões;

\(X_{i}\) = gastos com escolas públicas por aluno;

\(u_{i}\) = termo do erro.

modelo_anova <- lm(Salario ~ D2 + D3 + Gastos, data = exercicio_anova)
summary(modelo_anova)
## 
## Call:
## lm(formula = Salario ~ D2 + D3 + Gastos, data = exercicio_anova)
## 
## Residuals:
##    Min     1Q Median     3Q    Max 
## -10556  -2471    106   2066  15084 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 28694.9180  3262.5213   8.795 1.70e-11 ***
## D21         -2954.1268  1862.5756  -1.586   0.1194    
## D31         -3112.1948  1819.8725  -1.710   0.0938 .  
## Gastos          2.3404     0.3592   6.515 4.45e-08 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 4905 on 47 degrees of freedom
## Multiple R-squared:  0.4977, Adjusted R-squared:  0.4656 
## F-statistic: 15.52 on 3 and 47 DF,  p-value: 3.762e-07

O modelo ANCOVA sugere que os gastos com educação pública por aluno têm um impacto forte e positivo nos salários do professores, enquanto as diferenças salariais entre regiões não são estatisticamente significativas. Isso pode indicar que o efeito regional sobre os salários precisa ser analisado com mais profundidade ou incluir outras variáveis que possam influenciar essas diferenças.

2 Renda semana em uma cidade industrial no Sul da Índia

Vamos analisar agora um outro exemplo ANCOVA, levando em consideração a renda, a idade, o genêro e o grau de escolaridade.

2.1 Importar o conjunto de dados

Primeiro, importamos o conjunto de dados que apresenta informações referentes ao rendimento semanal de trabalhadores indianos de uma cidade industrial em 1990.

library(readxl)
exercicio_india <- read_excel("D:/Documentos/Fabio/OneDrive/Área de Trabalho/ADRI_exercício/exercicio_india.xlsx")
print(exercicio_india)
## # A tibble: 114 × 7
##       RS Idade   DE2   DE3   DE4   DPT  Dgen
##    <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
##  1   120    57     0     0     0     0     0
##  2   224    48     0     0     1     1     0
##  3   132    38     0     0     0     0     0
##  4    75    27     0     1     0     0     0
##  5   111    23     0     1     0     0     1
##  6   127    22     0     1     0     0     0
##  7    30    18     0     0     0     0     0
##  8    24    12     0     0     0     0     0
##  9   119    38     0     0     0     1     0
## 10    75    55     0     0     0     0     0
## # ℹ 104 more rows

Onde,

\(RS\) = renda semanal em rúpias \(Idade\) = idade em anos \(D_{gen}\) = 0 para homens, 1 para mulheres; \(DPT\) = 0 para trabalhadores temporários, 1 para trabalhadores contratados com tempo indeterminado; \(DE2\) = 1 para trabalhadores com fundamental grau completo, 0 para os demais; \(DE3\) = 1 para trabalhadores com médio grau completo, 0 para o demais; \(DE4\) = 1 para trabalhadores com ensino superior completo, 0 para os demais.

2.2 Converter a variável numérica em um fator

exercicio_india$DE2 <- as.factor(exercicio_india$DE2)
exercicio_india$DE3 <- as.factor(exercicio_india$DE3)
exercicio_india$DE4 <- as.factor(exercicio_india$DE4)
exercicio_india$DPT <- as.factor(exercicio_india$DPT)
exercicio_india$Dgen <- as.factor(exercicio_india$Dgen)
print(exercicio_india)
## # A tibble: 114 × 7
##       RS Idade DE2   DE3   DE4   DPT   Dgen 
##    <dbl> <dbl> <fct> <fct> <fct> <fct> <fct>
##  1   120    57 0     0     0     0     0    
##  2   224    48 0     0     1     1     0    
##  3   132    38 0     0     0     0     0    
##  4    75    27 0     1     0     0     0    
##  5   111    23 0     1     0     0     1    
##  6   127    22 0     1     0     0     0    
##  7    30    18 0     0     0     0     0    
##  8    24    12 0     0     0     0     0    
##  9   119    38 0     0     0     1     0    
## 10    75    55 0     0     0     0     0    
## # ℹ 104 more rows

2.3 Especificar o modelo sem interação

Para especificar o modelo, vamos admitir como categoria de referência os trabalhadores do gênero masculino com primeiro grau incompleto e trabalho temporário.

Portanto, que satisfaz a seguinte condição:

\(D_{gen} = 0\)

\(DPT = 0\)

\(DE2 = 0\)

\(DE3 = 0\)

\(DE4 = 0\)

Dito isso, nosso objetivo é investigar de que forma os salários semanais se relacionam com a idade, o gênero, o nível de escolaridade e o tempo de serviço no emprego.

Para tanto, estimamos o seguinte modelo de regressão:

\[ln(RS_{i} = \beta_{1} + \beta_{2}Idade + \beta_{3}D_{gen} + \beta_{4}DE2 + \beta_{5}DE3 + \beta_{6}DE4 + \beta_{7}DPT + u_{i})\]

Seguindo a literatura da Economia do Trabalho, expressamos o logaritmo natural dos salários como uma função das variáveis explanatórias. Essa abordagem é justificada pelo fato de que, conforme observado, a distribuição de variáveis como os salários tende a ser assimétrica. A transformação logarítmica contribui para reduzir essa assimetria, além de mitigar problemas de heterocedasticidade nos resíduos do modelo.

Com isso tempos:

modelo_india <- lm(log(RS) ~ Idade + Dgen + DE2 + DE3 + DE4 + DPT, data = exercicio_india)
summary(modelo_india)
## 
## Call:
## lm(formula = log(RS) ~ Idade + Dgen + DE2 + DE3 + DE4 + DPT, 
##     data = exercicio_india)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -1.76975 -0.36798  0.04408  0.33801  1.97701 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  3.622107   0.169943  21.314  < 2e-16 ***
## Idade        0.029309   0.004708   6.226 9.58e-09 ***
## Dgen1       -0.666497   0.143860  -4.633 1.02e-05 ***
## DE21         0.157655   0.165072   0.955  0.34170    
## DE31         0.505008   0.165203   3.057  0.00282 ** 
## DE41         0.623553   0.266812   2.337  0.02130 *  
## DPT1         0.319470   0.126350   2.528  0.01292 *  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.6072 on 107 degrees of freedom
## Multiple R-squared:  0.4992, Adjusted R-squared:  0.4711 
## F-statistic: 17.78 on 6 and 107 DF,  p-value: 3.349e-14

Resultado

Considerando que o modelo satisfaça todas as premiças do MQO, os resultados mostram que o logaritmo de salários está positivamente relacionado à idade, educação e permanência no emprego, mas negativamente relacionado ao gênero.

Embora pareça não haver diferença prática nos salários semanais de trabalhadores com graus de escolaridade primário ou menor, os salários semanais são mais altos para trabalhadores com segundo grau e muito mais altos para trabalhadores com educação superior.

Lembre-se: os coeficientes das variáveis binárias devem ser interpretados como valores diferenciais da categoria de referência.

O coeficiente da variável DPT sugere que aqueles trabalhadores com contratos por tempo indeterminado ganham, em média, mais dinheiro que aqueles cujos trabalhos são temporários.

OBS: em um modelo log-linear (variáveis dependentes em forma de logaritmo e variáveis explanatórias em forma linear), o coeficiente angular de uma variável explanatória representa a semielasticidade, ou seja, fornece a variação percentual ou relativa na variável dependente para uma variação de unidade no valor da variável explanatória.

Não obstante, quando a variável explanatória é uma variável dummy, temos de ser cuidadosos. Aqui temos de tomar o antilogaritmo do coeficiente binário estimado, subtrair 1 dele e multiplicar o resultado por 100. Ou seja, para descobrirmos a variação percentual em salários semanais para aqueles trabalhadores que têm empregos por tempo indeterminado versus aqueles que têm empregos temporários, tomamos o antilogaritmo do coeficiente DPT, subtraímos 1 e então multiplicamos a diferença por 100.

Para o nosso exemplo:

(exp(modelo_india$coefficients[["DPT1"]]) - 1)*100
## [1] 37.63978

Para o nosso exemplo, mantendo-se constantes as demais variáveis, trabalhadores que possuem contrato por tempo indeterminado possuem, em média, uma renda semanal 37.6% maior em relação aos trabalhadores com contrato temporário.

Além disso, o estudo indica que gênero e escolaridade também têm efeitos diferencias nos ganhos semanais. Vejamos os efeitos diferencias tomados individualmente.

  • Gênero
(exp(modelo_india$coefficients[["Dgen1"]]) - 1)*100
## [1] -48.64957

Portanto, mantendo-se constantes as demais variáveis, as mulheres indianas recebem, em média, 48,64% a menos por semana em comparação aos homens.

  • Ensino médio completo
(exp(modelo_india$coefficients[["DE31"]]) - 1)*100
## [1] 65.69983

Mantendo-se constantes as demais variáveis, os trabalhadores indianos com ensino médio completo recebem, em média, 65,7% a mais por semana em comparação aos demais níveis de escolaridade.

  • Ensino superior completo
(exp(modelo_india$coefficients[["DE41"]]) - 1)*100
## [1] 86.5545

Já, mantendo-se constantes as demais variáveis, os trabalhadores indianos com ensino superior completo recebem, em média, 86,55% a mais por semana em comparação aos demais níveis de escolaridade.

2.4 Especificar o modelo com interação: gênero e educação

modelo_india2 <- lm(log(RS) ~ Idade + Dgen + DE2 + DE3 + DE4 + Dgen*DE2 + Dgen*DE3 + Dgen*DE4 + DPT, data = exercicio_india)
summary(modelo_india2)
## 
## Call:
## lm(formula = log(RS) ~ Idade + Dgen + DE2 + DE3 + DE4 + Dgen * 
##     DE2 + Dgen * DE3 + Dgen * DE4 + DPT, data = exercicio_india)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -1.82026 -0.37652  0.04838  0.30159  1.95085 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  3.642675   0.170947  21.309  < 2e-16 ***
## Idade        0.029575   0.004735   6.247 9.31e-09 ***
## Dgen1       -0.804700   0.167351  -4.808 5.15e-06 ***
## DE21         0.064557   0.177382   0.364   0.7166    
## DE31         0.432772   0.177745   2.435   0.0166 *  
## DE41         0.449705   0.364887   1.232   0.2206    
## DPT1         0.332894   0.127692   2.607   0.0105 *  
## Dgen1:DE21   0.655485   0.489911   1.338   0.1838    
## Dgen1:DE31   0.461928   0.486463   0.950   0.3445    
## Dgen1:DE41   0.402677   0.525642   0.766   0.4454    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.6079 on 104 degrees of freedom
## Multiple R-squared:  0.5121, Adjusted R-squared:  0.4698 
## F-statistic: 12.13 on 9 and 104 DF,  p-value: 6.446e-13