RLM: Expectativa de Vida

Vinícius Ferreira

2023-05-05


Intalação de pacotes e configuração do ambiente

# Carregamento das bibliotecas
if(!require(pacman)) install.packages("pacman")
library(pacman)

pacman::p_load(dplyr, ggplot2, lmtest, car, psych, QuantPsyc, MASS, EnvStats, readr, ggfortify, gtsummary, prettydoc)

Carregamento dos dados

dados <- read_delim('data/adh_br.csv', delim = ',')

# Cria variável "proporção de população urbana"
dados <- dados %>%
  mutate(prc_pop_urbana = populacao_urbana / populacao)

# Extração de amostra
set.seed(2)
dados <- dados %>% 
  slice_sample(n=360)

# View(dados)

Seleção de variáveis

# Todas as variáveis
mod.inicial <- lm(expectativa_vida ~ fecundidade_total + taxa_agua_encanada +
                  prop_pobreza + renda_pc + taxa_coleta_lixo + taxa_energia_eletrica +
                  expectativa_anos_estudo + indice_frequencia_escolar + populacao +
                  idhm_e + prc_pop_urbana, data = dados)

# Modelo nulo (apenas o intercepto)
mod.simples <- lm(expectativa_vida ~ 1, data = dados)

stepAIC(mod.inicial, scope = list(upper = mod.inicial,
                                  lower = mod.simples),
        direction = "backward")
## Start:  AIC=173.98
## expectativa_vida ~ fecundidade_total + taxa_agua_encanada + prop_pobreza + 
##     renda_pc + taxa_coleta_lixo + taxa_energia_eletrica + expectativa_anos_estudo + 
##     indice_frequencia_escolar + populacao + idhm_e + prc_pop_urbana
## 
##                             Df Sum of Sq    RSS    AIC
## - fecundidade_total          1     0.049 546.10 172.01
## - taxa_agua_encanada         1     0.085 546.13 172.03
## - indice_frequencia_escolar  1     0.901 546.95 172.57
## - populacao                  1     1.344 547.39 172.86
## - taxa_coleta_lixo           1     1.538 547.59 172.99
## <none>                                   546.05 173.98
## - prc_pop_urbana             1     9.958 556.01 178.48
## - expectativa_anos_estudo    1    13.191 559.24 180.57
## - idhm_e                     1    13.553 559.60 180.80
## - renda_pc                   1    13.818 559.86 180.97
## - taxa_energia_eletrica      1    16.041 562.09 182.40
## - prop_pobreza               1   156.233 702.28 262.56
## 
## Step:  AIC=172.01
## expectativa_vida ~ taxa_agua_encanada + prop_pobreza + renda_pc + 
##     taxa_coleta_lixo + taxa_energia_eletrica + expectativa_anos_estudo + 
##     indice_frequencia_escolar + populacao + idhm_e + prc_pop_urbana
## 
##                             Df Sum of Sq    RSS    AIC
## - taxa_agua_encanada         1     0.097 546.19 170.07
## - indice_frequencia_escolar  1     0.982 547.08 170.66
## - populacao                  1     1.435 547.53 170.95
## - taxa_coleta_lixo           1     1.651 547.75 171.10
## <none>                                   546.10 172.01
## - prc_pop_urbana             1     9.910 556.01 176.48
## - expectativa_anos_estudo    1    13.155 559.25 178.58
## - idhm_e                     1    13.791 559.89 178.99
## - renda_pc                   1    13.840 559.94 179.02
## - taxa_energia_eletrica      1    17.449 563.55 181.33
## - prop_pobreza               1   159.191 705.29 262.10
## 
## Step:  AIC=170.07
## expectativa_vida ~ prop_pobreza + renda_pc + taxa_coleta_lixo + 
##     taxa_energia_eletrica + expectativa_anos_estudo + indice_frequencia_escolar + 
##     populacao + idhm_e + prc_pop_urbana
## 
##                             Df Sum of Sq    RSS    AIC
## - indice_frequencia_escolar  1     0.955 547.15 168.70
## - populacao                  1     1.417 547.61 169.01
## - taxa_coleta_lixo           1     1.786 547.98 169.25
## <none>                                   546.19 170.07
## - prc_pop_urbana             1     9.949 556.14 174.57
## - expectativa_anos_estudo    1    13.165 559.36 176.65
## - renda_pc                   1    13.747 559.94 177.02
## - idhm_e                     1    13.795 559.99 177.05
## - taxa_energia_eletrica      1    18.183 564.38 179.86
## - prop_pobreza               1   193.024 739.22 277.02
## 
## Step:  AIC=168.7
## expectativa_vida ~ prop_pobreza + renda_pc + taxa_coleta_lixo + 
##     taxa_energia_eletrica + expectativa_anos_estudo + populacao + 
##     idhm_e + prc_pop_urbana
## 
##                           Df Sum of Sq    RSS    AIC
## - populacao                1     1.095 548.24 167.42
## - taxa_coleta_lixo         1     1.775 548.92 167.87
## <none>                                 547.15 168.70
## - prc_pop_urbana           1    10.006 557.16 173.23
## - renda_pc                 1    17.429 564.58 177.99
## - expectativa_anos_estudo  1    18.503 565.65 178.68
## - taxa_energia_eletrica    1    22.067 569.22 180.94
## - idhm_e                   1    23.693 570.84 181.96
## - prop_pobreza             1   200.991 748.14 279.33
## 
## Step:  AIC=167.42
## expectativa_vida ~ prop_pobreza + renda_pc + taxa_coleta_lixo + 
##     taxa_energia_eletrica + expectativa_anos_estudo + idhm_e + 
##     prc_pop_urbana
## 
##                           Df Sum of Sq    RSS    AIC
## - taxa_coleta_lixo         1     1.850 550.09 166.63
## <none>                                 548.24 167.42
## - prc_pop_urbana           1    11.234 559.48 172.72
## - renda_pc                 1    16.419 564.66 176.04
## - expectativa_anos_estudo  1    17.886 566.13 176.98
## - taxa_energia_eletrica    1    22.285 570.53 179.77
## - idhm_e                   1    22.996 571.24 180.21
## - prop_pobreza             1   214.624 762.87 284.35
## 
## Step:  AIC=166.64
## expectativa_vida ~ prop_pobreza + renda_pc + taxa_energia_eletrica + 
##     expectativa_anos_estudo + idhm_e + prc_pop_urbana
## 
##                           Df Sum of Sq    RSS    AIC
## <none>                                 550.09 166.63
## - prc_pop_urbana           1    10.853 560.95 171.67
## - expectativa_anos_estudo  1    16.934 567.03 175.55
## - renda_pc                 1    17.240 567.34 175.75
## - idhm_e                   1    23.493 573.59 179.69
## - taxa_energia_eletrica    1    24.036 574.13 180.03
## - prop_pobreza             1   235.407 785.50 292.88
## 
## Call:
## lm(formula = expectativa_vida ~ prop_pobreza + renda_pc + taxa_energia_eletrica + 
##     expectativa_anos_estudo + idhm_e + prc_pop_urbana, data = dados)
## 
## Coefficients:
##             (Intercept)             prop_pobreza                 renda_pc  
##               81.126708                -0.103541                 0.002096  
##   taxa_energia_eletrica  expectativa_anos_estudo                   idhm_e  
##               -0.068357                -0.307108                 6.578673  
##          prc_pop_urbana  
##               -1.012525
## Análise de correlação do primeiro modelo proposto
dados %>%
  dplyr::select(prop_pobreza, expectativa_anos_estudo, prc_pop_urbana,
                idhm_e, renda_pc, taxa_energia_eletrica) %>%
  pairs.panels()

# Distribuição da variável "taxa de energia elétrica"
dados %>% 
  ggplot(aes(taxa_energia_eletrica)) + 
  geom_boxplot(fill = "white", colour = "#3366FF")

# Rosner's test: verificação de outliers
print(rosnerTest(dados$taxa_energia_eletrica, k = 10)$all.stats)
##    i   Mean.i     SD.i Value Obs.Num    R.i+1 lambda.i+1 Outlier
## 1  0 97.50864 4.707477 67.02      16 6.476642   3.774425    TRUE
## 2  1 97.59357 4.429275 71.52      91 5.886644   3.773658    TRUE
## 3  2 97.66640 4.214715 72.76      33 5.909391   3.772889    TRUE
## 4  3 97.73616 4.008284 74.49     252 5.799529   3.772117    TRUE
## 5  4 97.80146 3.819047 75.46     286 5.850010   3.771343    TRUE
## 6  5 97.86439 3.634879 77.37     325 5.638261   3.770566    TRUE
## 7  6 97.92229 3.472255 77.58     241 5.858524   3.769787    TRUE
## 8  7 97.97992 3.303313 79.33     298 5.645821   3.769005    TRUE
## 9  8 98.03290 3.154238 83.42      81 4.632783   3.768221    TRUE
## 10 9 98.07453 3.060359 84.50     194 4.435600   3.767435    TRUE
# Segundo modelo proposto
mod.proposto <- lm(formula = expectativa_vida ~ prop_pobreza + expectativa_anos_estudo + idhm_e +
                   prc_pop_urbana, data = dados)

Análise de resíduos

autoplot(mod.proposto, which = 1:6, ncol = 2, label.size = 1,
         colour = "steelblue") + theme_bw()

# Teste de Shapiro-Wilk: normalidade
shapiro.test(mod.proposto$residuals)
## 
##  Shapiro-Wilk normality test
## 
## data:  mod.proposto$residuals
## W = 0.99541, p-value = 0.3695
# Teste de Breush-Pagan: homocedasticidade (variância constante) 
ncvTest(mod.proposto, ~ prc_pop_urbana + idhm_e + expectativa_anos_estudo + prop_pobreza)
## Non-constant Variance Score Test 
## Variance formula: ~ prc_pop_urbana + idhm_e + expectativa_anos_estudo + prop_pobreza 
## Chisquare = 17.22198, Df = 4, p = 0.0017501
# Regressão por Mínimos Múltiplos Quadrados Ponderados para contornar heterocedasticidade
pesos <- 1 / lm(abs(mod.inicial$residuals) ~ mod.inicial$fitted.values)$fitted.values^2

mod.mmqp <- lm(formula = expectativa_vida ~ prop_pobreza + expectativa_anos_estudo + idhm_e + prc_pop_urbana, data = dados, weights = pesos)
# Teste de Breush-Pagan: homocedasticidade (variância constante)
ncvTest(mod.mmqp, ~ prc_pop_urbana + idhm_e + expectativa_anos_estudo + prop_pobreza)
## Non-constant Variance Score Test 
## Variance formula: ~ prc_pop_urbana + idhm_e + expectativa_anos_estudo + prop_pobreza 
## Chisquare = 8.141008, Df = 4, p = 0.086547

Interpretação do modelo

# Sumário completo
summary(mod.mmqp)
## 
## Call:
## lm(formula = expectativa_vida ~ prop_pobreza + expectativa_anos_estudo + 
##     idhm_e + prc_pop_urbana, data = dados, weights = pesos)
## 
## Weighted Residuals:
##     Min      1Q  Median      3Q     Max 
## -3.3882 -0.8934 -0.0011  0.9496  3.7845 
## 
## Coefficients:
##                          Estimate Std. Error t value Pr(>|t|)    
## (Intercept)             76.131697   0.904459  84.174  < 2e-16 ***
## prop_pobreza            -0.117545   0.006432 -18.275  < 2e-16 ***
## expectativa_anos_estudo -0.446740   0.088409  -5.053 6.97e-07 ***
## idhm_e                   8.645055   1.519233   5.690 2.65e-08 ***
## prc_pop_urbana          -1.224138   0.373571  -3.277  0.00115 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.312 on 355 degrees of freedom
## Multiple R-squared:  0.7536, Adjusted R-squared:  0.7508 
## F-statistic: 271.4 on 4 and 355 DF,  p-value: < 2.2e-16
# IC dos coeficientes 
mod.mmqp %>% 
  tbl_regression()
Characteristic Beta 95% CI1 p-value
prop_pobreza -0.12 -0.13, -0.10 <0.001
expectativa_anos_estudo -0.45 -0.62, -0.27 <0.001
idhm_e 8.6 5.7, 12 <0.001
prc_pop_urbana -1.2 -2.0, -0.49 0.001
1 CI = Confidence Interval
# Coeficientes padronizados
lm.beta(mod.mmqp)
##            prop_pobreza expectativa_anos_estudo                  idhm_e 
##             -0.79397689             -0.18414022              0.29163612 
##          prc_pop_urbana               (weights) 
##             -0.10276504             -0.01382226
# Variância dos resíduos
var_res <- mod.mmqp %>% 
  summary() %>% 
  pluck("sigma")

var_res^2
## [1] 1.722106