Limpeza do ambiente e importação dos dados brutos
## used (Mb) gc trigger (Mb) max used (Mb)
## Ncells 2299280 122.8 3962208 211.7 3962208 211.7
## Vcells 3927028 30.0 8388608 64.0 7055318 53.9
data_estudos <- fread("C:/Users/danim/Downloads/2000 - média anos de estudos.csv",
sep = ";", dec = ",", skip = 1)
data_renda <- fread("C:/Users/danim/Downloads/2000 - renda per capita.csv",
sep = ";", dec = ",", skip = 1)
data_gini <- fread("C:/Users/danim/Downloads/2000 - gini.csv",
sep = ";", dec = ",", skip = 1)
data_populacao <- fread("C:/Users/danim/Downloads/2000 - população.csv",
sep = ";", dec = ",", skip = 1)
data_populacao_urbana <- fread("C:/Users/danim/Downloads/2000 - população urbana.csv",
sep = ";", dec = ",", skip = 1)
data_area <- fread("C:/Users/danim/Downloads/2000 - area.csv",
sep = ";", dec = ",", skip = 1)
data_homicidios <- fread("C:/Users/danim/Downloads/2000 - homicidios.csv",
sep = ";", dec = ",", skip = 1)
data_desocupacao <- fread("C:/Users/danim/Downloads/2000 - desocupação.csv",
sep = ";", dec = ",", skip = 1)
data_fpm <- fread("C:/Users/danim/Downloads/2000 - fpm.csv",
sep = ";", dec = ",", skip = 1)
data_esgotofossa <- fread("C:/Users/danim/Downloads/2000 - rede esgoto e fossa.csv",
sep = ";", dec = ",", skip = 1)
data_pobreza1990 <- fread("C:/Users/danim/Downloads/ipeadata[18-11-2025-10-51].csv",
sep = ";", dec = ",", skip = 1)
data_analf1980 <- fread("C:/Users/danim/Downloads/ipeadata[22-11-2025-11-49].csv",
sep = ";", dec = ",", skip = 1)
Gerando descritvas da base com e sem os NAs
stargazer(dados_2000, type = "text",
title = "Estatísticas Descritivas - Base Completa",
summary.stat = c("n","mean","sd","min","max","p25","median","p75"))
##
## Estatísticas Descritivas - Base Completa
## =====================================================================================================================
## Statistic N Mean St. Dev. Min Max Pctl(25) Median Pctl(75)
## ---------------------------------------------------------------------------------------------------------------------
## media_anos_estudo 5,507 4.039 1.288 0.814 9.653 3.009 4.069 4.912
## renda_pc 5,564 338.580 192.440 62.650 1,759.760 173.520 308.720 463.207
## gini 5,564 0.547 0.069 0.300 0.870 0.500 0.550 0.590
## pop 5,507 30,846.710 186,763.400 795 10,435,546 5,152.5 10,473 21,407
## pop_urb 5,506 25,049.990 180,038.200 44 9,814,133 2,401.8 5,308 13,240.8
## area 5,507 1,543.187 5,714.000 2.900 160,755.000 205.100 415.800 1,028.600
## tax_hom 5,562 10.703 16.427 0.000 166.810 0.000 3.400 15.697
## tax_desocup 5,564 9.593 5.636 0.000 55.980 5.410 8.940 12.800
## fpm 5,304 2,663,333.000 5,591,000.000 0.000 228,143,100.000 1,298,214.000 1,660,987.000 2,715,333.000
## tax_sewage 5,487 34.355 31.199 0.050 99.930 4.545 25.810 61.195
## pobreza_1991 4,491 62.823 21.822 4.830 98.850 46.975 65.960 82.410
## analfabetismo_1980 3,991 36.743 18.056 2.900 91.400 21.650 32.700 52.600
## fpm_pc 5,304 213.010 656.350 0.000 46,648.200 116.652 159.220 242.534
## share_urbano 5,506 58.757 23.326 1.447 100.000 40.435 59.224 77.875
## densidade_pop 5,507 98.005 533.634 0.132 12,915.980 11.387 23.762 48.210
## gini_escala 5,564 54.707 6.868 30 87 50 55 59
## ---------------------------------------------------------------------------------------------------------------------
dados_2000l <- dados_2000[complete.cases(dados_2000)]
stargazer(dados_2000l, type = "text",
title = "Estatísticas Descritivas - Base Sem NA",
summary.stat = c("n","mean","sd","min","max","p25","median","p75"))
##
## Estatísticas Descritivas - Base Sem NA
## =====================================================================================================================
## Statistic N Mean St. Dev. Min Max Pctl(25) Median Pctl(75)
## ---------------------------------------------------------------------------------------------------------------------
## media_anos_estudo 3,853 4.236 1.292 1.316 9.653 3.161 4.321 5.123
## renda_pc 3,853 359.769 200.600 69.200 1,759.760 183.700 337.110 487.970
## gini 3,853 0.548 0.063 0.330 0.820 0.510 0.550 0.590
## pop 3,853 39,187.080 220,041.500 795 10,435,546 6,592 13,316 26,910
## pop_urb 3,853 32,770.290 212,178.900 423 9,814,133 3,384 7,344 17,695
## area 3,853 1,458.454 5,960.681 3.600 160,755.000 217.100 417.800 959.700
## tax_hom 3,853 11.019 15.347 0.000 127.960 0.000 5.770 16.360
## tax_desocup 3,853 10.198 5.189 0.000 39.430 6.520 9.590 13.140
## fpm 3,853 3,061,497.000 6,219,610.000 0.000 228,143,100.000 1,356,829.000 2,007,012.000 3,110,174.000
## tax_sewage 3,853 40.244 31.594 0.050 99.930 8.570 36.700 68.380
## pobreza_1991 3,853 62.010 22.140 4.830 98.850 45.500 64.740 82.100
## analfabetismo_1980 3,853 36.321 18.009 2.900 91.400 21.400 31.900 52.100
## fpm_pc 3,853 181.826 145.325 0.000 4,591.236 108.443 148.795 207.000
## share_urbano 3,853 63.712 21.492 1.559 100.000 46.894 64.850 81.370
## densidade_pop 3,853 121.844 622.826 0.168 12,915.980 14.425 28.032 58.036
## gini_escala 3,853 54.834 6.301 33 82 51 55 59
## ---------------------------------------------------------------------------------------------------------------------
Gerando o Modelo OLS
modelo_olslimpo <- lm(
tax_hom ~ media_anos_estudo + renda_pc +
gini_escala + tax_desocup + tax_sewage +
share_urbano + densidade_pop,
data = dados_2000l
)
summary(modelo_olslimpo)
##
## Call:
## lm(formula = tax_hom ~ media_anos_estudo + renda_pc + gini_escala +
## tax_desocup + tax_sewage + share_urbano + densidade_pop,
## data = dados_2000l)
##
## Residuals:
## Min 1Q Median 3Q Max
## -54.575 -8.928 -4.754 5.069 116.951
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -5.6421628 2.5171036 -2.242 0.0250 *
## media_anos_estudo 0.7371891 0.4445905 1.658 0.0974 .
## renda_pc 0.0004489 0.0027039 0.166 0.8681
## gini_escala 0.0855465 0.0392658 2.179 0.0294 *
## tax_desocup 0.4561056 0.0529993 8.606 < 2e-16 ***
## tax_sewage -0.0504799 0.0101996 -4.949 7.77e-07 ***
## share_urbano 0.0836771 0.0168108 4.978 6.72e-07 ***
## densidade_pop 0.0060364 0.0003899 15.480 < 2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 14.22 on 3845 degrees of freedom
## Multiple R-squared: 0.1426, Adjusted R-squared: 0.141
## F-statistic: 91.35 on 7 and 3845 DF, p-value: < 2.2e-16
# Testes de diagnóstico
bptest(modelo_olslimpo) # Heterocedasticidade
##
## studentized Breusch-Pagan test
##
## data: modelo_olslimpo
## BP = 70.746, df = 7, p-value = 1.044e-12
vif(modelo_olslimpo) # Multicolinearidade
## media_anos_estudo renda_pc gini_escala tax_desocup
## 6.277726 5.601556 1.165353 1.440047
## tax_sewage share_urbano densidade_pop
## 1.977121 2.485395 1.123075
Matriz Correlação Geral
vars_geral <- c(
"media_anos_estudo", "renda_pc", "gini", "pop", "pop_urb", "area",
"tax_hom", "tax_desocup", "fpm", "tax_sewage", "pobreza_1991",
"analfabetismo_1980", "fpm_pc", "share_urbano", "densidade_pop",
"gini_escala"
)
dados_corr_geral <- as.data.frame(dados_2000l[, ..vars_geral])
col_fun <- colorRampPalette(
c("#2C7BB6", "#ABD9E9", "#FFFFFF", "#FDAE61", "#D7191C")
)
corr_geral <- cor(dados_corr_geral, use = "pairwise.complete.obs")
corrplot(
corr_geral,
method = "color",
col = col_fun(200),
type = "upper",
order = "hclust",
addCoef.col = "black",
tl.col = "black",
tl.srt = 45,
number.cex = 0.7,
tl.cex = 0.8,
diag = FALSE
)

Matriz de correlação variaveis usadas no modelo IV e OLS
# Variáveis do modelo IV:
# - Dependente: tax_hom
# - Endógenas: media_anos_estudo, renda_pc
# - Controles: gini_escala, tax_desocup, tax_sewage, share_urbano, densidade_pop
# - Instrumentos: pobreza_1991, analfabetismo_1980
vars_iv <- c(
"tax_hom", # dependente
"media_anos_estudo", # endógena
"renda_pc", # endógena
"gini_escala", # controle
"tax_desocup", # controle
"tax_sewage", # controle
"share_urbano", # controle
"densidade_pop", # controle
"pobreza_1991", # instrumento
"analfabetismo_1980" # instrumento
)
dados_iv <- as.data.frame(dados_2000l[, ..vars_iv])
M_iv <- cor(dados_iv, use = "pairwise.complete.obs")
labels_iv <- c(
"Taxa de homicídios\n(por 100 mil hab.)", # tax_hom
"Média de anos de estudo", # media_anos_estudo
"Renda per capita", # renda_pc
"Gini (0–100)", # gini_escala
"Taxa de desocupação", # tax_desocup
"Proporção com esgoto/fossa", # tax_sewage
"Proporção urbana", # share_urbano
"Densidade populacional", # densidade_pop
"Pobreza 1991", # pobreza_1991
"Analfabetismo 1980" # analfabetismo_1980
)
colnames(M_iv) <- labels_iv
rownames(M_iv) <- labels_iv
corrplot(
M_iv,
method = "color",
col = col_fun(200),
type = "upper",
order = "original",
addCoef.col = "black",
number.cex = 0.8,
tl.col = "black",
tl.cex = 0.8,
tl.srt = 45,
diag = TRUE
)
