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)
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% CI |
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 |
# 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