O Rio de Janeiro, uma metrópole com rica história e cultura, enfrenta um desafio persistente: a criminalidade. A violência, em suas diversas formas, tem impactado significativamente a vida dos cariocas e a imagem da cidade no cenário nacional e internacional. Diante dessa problemática, a presente pesquisa propõe uma análise estatística da criminalidade no estado do Rio de Janeiro, com foco no ano de 2018.
Os dados foram fornecidos pelo Instituto de Segurança Pública que, com mais de 20 anos de existência, conta com grande conhecimento acumulado no desenvolvimento de metodologias de análise de dados relativos à Segurança Pública. Sua missão é produzir informações e disseminar pesquisas e análises com vistas a influenciar e subsidiar a implementação de políticas públicas de segurança e assegurar a participação social na construção dessas políticas.
Este trabalho propõe uma pesquisa estatística sobre a criminalidade no Rio de Janeiro e suas regiões (Capital, Interior, Baixada Fluminense e Grande Niterói), utilizando os dados do Instituto de Segurança Pública. O objetivo é analisar as tendências da criminalidade no ano de 2018, e avaliar a eficácia das políticas públicas de segurança, comparando os resultados entre as regiões.
Para analisarmos as informações da base de dados, foi utilizado o RStudio, que é um ambiente de software livre para computação estatística e gráficos. O primeiro passo, antes de começar as análises, foi necessário selecionar e carregar a base de dados para o ambiente do RStudio. A fonte selecionada é uma base de dados do site Kaggle.com, que foi fornecida pelo Instituto de Segurança Pública e desenvolvida por Daniel Esteves, atualizada em 2019. Esta contém 26.217 linhas (observações) e 63 colunas (variáveis), abordando em torno de 50 crimes (como roubos, furtos, homicídios, estupros, tráfico de drogas, entre outros), ocorridos nos municípios e regiões do Rio de Janeiro, entre os anos de 2003 a 2019. Porém, para fins desta pesquisa, foram analisadas somente as variáveis, no ano de 2018: indicador de letalidade, registro de ocorrências, homicídio doloso, lesão corporal e total de roubos.
#Carregando a base:
library(readr)
BaseDP <- read_delim("C:/Users/marco/Downloads/archive (3)/BaseDPEvolucaoMensalCisp.csv", delim = ";",
escape_double = FALSE, trim_ws = TRUE)## Rows: 26217 Columns: 63
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ";"
## chr (3): mes_ano, munic, Regiao
## dbl (60): CISP, mes, vano, AISP, RISP, mcirc, hom_doloso, lesao_corp_morte, ...
##
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
#Consertando os erros:
BaseDP$munic=iconv(BaseDP$munic, "latin1", "UTF-8")
BaseDP$Regiao=iconv(BaseDP$Regiao, "latin1", "UTF-8")
#Baixando dplyr:
library(dplyr)##
## Attaching package: 'dplyr'
##
## The following objects are masked from 'package:stats':
##
## filter, lag
##
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
#Isolando a base de 2018:
BaseDP2018 = BaseDP %>% filter(vano=='2018')
NOMES = names(BaseDP2018)
library(kableExtra)##
## Attaching package: 'kableExtra'
##
## The following object is masked from 'package:dplyr':
##
## group_rows
#DICIONARIO = data.frame(NOMES,SIGNIFICADO = c('Centro de seguranca','mes','Ano de #registro','MES E ANO' ,rep(NA,59)))
DICIONARIO = data.frame(NOMES = c('indicador_letalidade', 'registro_ocorrencias','hom_doloso','total_roubos','lesao_corp_dolosa','Regiao'),
SIGNIFICADO = c('Indicador de Letaliade','Registro de Ocorrências','Homicídio Doloso','Total de Roubos','Lesão corporal Dolosa','Regiões'))
kable(DICIONARIO, row.names = FALSE)| NOMES | SIGNIFICADO |
|---|---|
| indicador_letalidade | Indicador de Letaliade |
| registro_ocorrencias | Registro de Ocorrências |
| hom_doloso | Homicídio Doloso |
| total_roubos | Total de Roubos |
| lesao_corp_dolosa | Lesão corporal Dolosa |
| Regiao | Regiões |
Na tabela abaixo, podemos observar a base de dados.
#Carregando a biblioteca para tabela:
library(kableExtra)
#Execução e manipulação da tabela:
#kable(BaseDP2018, row.names = FALSE)%>%
# kable_styling( full_width = T,bootstrap_options = c("striped", "hover", "condensed", #"responsive"), position = "center", fixed_thead = T) %>%
# scroll_box(width = "900px", height="600px")As variáveis de interesse que serão utilizadas no estudo desta base de dados são:
Primeiramente, foi criado uma base de dados isolando o ano de 2018 (o qual foi analisado). Após isto, foram elaborados os gráficos do tipo Boxplot entre a variável qualitativa Região e as variáveis quantitativas Indicadores de Letalidade, Registro de Ocorrências, Homicídio Doloso, Lesão Corporal Dolosa e Total de Roubos. Em seguida, foram executados os testes de hipóteses com cada variável para fins conclusivos. Para a análise das hipóteses, foram utilizados: Teste de Shapiro, Teste de Kruscall-Wallis, Teste de Wilcoxon e Medianas. Ao fim dessas etapas, foram elaborados gráficos do tipo Geobr, que permitem a elaboração de mapas do Brasil utilizando as variáveis Municípios e as quantitativas de interesse do estudo, para facilitar a visualização dos dados apresentados.
Foram executados testes de hipóteses para avaliar como a variável Região interfere e se associa com as variáveis Indicadores de Letalidade, Registro de Ocorrências, Homicídio Doloso, Lesão Corporal Dolosa e Total de Roubos. Adotou-se alpha=0,05 para todos os testes realizados. Dessa forma, a regra de decisão foi definida como:
Se p-value ≤ alpha, rejeita H0.
Se p-value > alpha, não rejeita H0.
O primeiro teste de hipóteses realizado com as variáveis teve como objetivo a verificação do pressuposto de normalidade, por meio do teste de Shapiro Wilk, o qual parte do pressuposto de que as observações são independentes e apresenta as seguintes hipóteses:
H0:os dados seguem uma distribuição normal.
H1:os dados não seguem uma distribuição normal.
Após a verificação do pressuposto de normalidade, executou-se, para os dados que não seguem distribuição normal, o teste de Kruskal-Wallis com as hipóteses:
H0: os grupos têm distribuições de populações iguais.
H1: os grupos não têm distribuições de populações iguais.
E, em seguida, executou-se o teste de Comparações Múltiplas de Wilcoxon. Após isto, executou-se as medianas para cada variável.
Antes de começarmos as análises, vale ressaltar que estudamos a violência no Estado do Rio de Janeiro, produzindo gráficos com números absolutos, e testes de hipóteses com números relativos. Os gráficos se referem a quantidade, sendo importante destacar que a Capital terá maior número de incidência de crimes devido a sua maior concentração de população.
Foram analisadas duas variáveis, qualitativa e quantitativa, e elaborados gráficos Boxplot para visualização da associação entre os dados.
1° Análise: Região e Indicador de Letalidade.
# Construção do gráfico boxplot:
boxplot(BaseDP2018$indicador_letalidade ~ BaseDP2018$Regiao, main="Boxplot 1 - Indicador de Letalidade por Região", col=c("violet"), xlab= "Região", ylab="Indicador de Letalidade")A partir do gráfico, podemos observar que a Baixada Fluminense, Capital e Interior possuem outliers, ou seja, há municípios destas regiões que possuem taxa de incidência de letalidade muito superior ao restante. De acordo com o gráfico, podemos observar, analisando as medianas, que a Baixada e Grande Niterói possuem comportamento parecido, enquanto o Interior se distancia do panorama apresentado pelas regiões. Além disso, há uma maior dispersão de dados na Baixada, e menor no Interior.
Realizando os testes de hipóteses:
##
## Shapiro-Wilk normality test
##
## data: BaseDP2018$indicador_letalidade
## W = 0.75033, p-value < 2.2e-16
##
## Kruskal-Wallis rank sum test
##
## data: BaseDP2018$indicador_letalidade by BaseDP2018$Regiao
## Kruskal-Wallis chi-squared = 385.09, df = 3, p-value < 2.2e-16
##
## Pairwise comparisons using Wilcoxon rank sum test with continuity correction
##
## data: BaseDP2018$indicador_letalidade and BaseDP2018$Regiao
##
## Baixada Fluminense Capital Grande Niterói
## Capital < 2e-16 - -
## Grande Niterói 0.0011 3.8e-07 -
## Interior < 2e-16 < 2e-16 < 2e-16
##
## P value adjustment method: holm
De acordo com este teste, foi observado uma diferença significativa entre as regiões.
Analisaremos a mediana:
## # A tibble: 4 × 2
## Regiao mediana
## <chr> <dbl>
## 1 Baixada Fluminense 8
## 2 Capital 3
## 3 Grande Niterói 5
## 4 Interior 1
2° Análise: Região e Registro de Ocorrências.
#Construção do gráfico boxplot:
boxplot(BaseDP2018$registro_ocorrencias ~ BaseDP2018$Regiao, main="Boxplot 2 - Registro de ocorrencia por Região", col=c("pink"), xlab= "Região", ylab="registro de ocorrência")Com a análise exploratória do gráfico, podemos observar que a Baixada Fluminense, Capital e Interior possuem outliers, ou seja, há municípios destas regiões que possuem taxa de incidência de registro de ocorrência muito superior ao restante. O gráfico nos mostra que a Capital e Grande Niterói possuem comportamento parecido. Além disso, a Baixada apresenta maior dispersão de dados e mediana abaixo dos anteriores, enquanto o Interior possui dispersão e mediana menores, comparado aos outros.
Realizando os testes de hipóteses:
##
## Shapiro-Wilk normality test
##
## data: BaseDP2018$registro_ocorrencias
## W = 0.87904, p-value < 2.2e-16
##
## Kruskal-Wallis rank sum test
##
## data: BaseDP2018$registro_ocorrencias by BaseDP2018$Regiao
## Kruskal-Wallis chi-squared = 799.69, df = 3, p-value < 2.2e-16
##
## Pairwise comparisons using Wilcoxon rank sum test with continuity correction
##
## data: BaseDP2018$registro_ocorrencias and BaseDP2018$Regiao
##
## Baixada Fluminense Capital Grande Niterói
## Capital 1.8e-05 - -
## Grande Niterói 0.013 0.044 -
## Interior < 2e-16 < 2e-16 < 2e-16
##
## P value adjustment method: holm
De acordo com este teste, foi observado uma diferença significativa entre as regiões.
Analisaremos a mediana:
## # A tibble: 4 × 2
## Regiao mediana
## <chr> <dbl>
## 1 Baixada Fluminense 470.
## 2 Capital 678
## 3 Grande Niterói 602.
## 4 Interior 112
3° Análise: Região e Homicídio Doloso.
#Construção do gráfico boxplot:
boxplot(BaseDP2018$hom_doloso ~ BaseDP2018$Regiao, main="Boxplot 3 - Homicídio Doloso por Região", col=c("blue"), xlab= "Região", ylab="Homicídio Doloso")Os dados do gráfico evidenciam que todas as regiões apresentam outliers. Além disso, pode-se observar que a Baixada Fluminense possui uma maior dispersão de dados e uma mediana maior dentre os outros, porém, próxima a de Grande Niterói. A Capital possui mediana maior que o Interior e menor que Grande Niterói. Vale destacar também que o Interior possui uma dispersão de dados mais enxutada.
Realizando os testes de hipóteses:
##
## Shapiro-Wilk normality test
##
## data: BaseDP2018$hom_doloso
## W = 0.74499, p-value < 2.2e-16
##
## Kruskal-Wallis rank sum test
##
## data: BaseDP2018$hom_doloso by BaseDP2018$Regiao
## Kruskal-Wallis chi-squared = 288.17, df = 3, p-value < 2.2e-16
##
## Pairwise comparisons using Wilcoxon rank sum test with continuity correction
##
## data: BaseDP2018$hom_doloso and BaseDP2018$Regiao
##
## Baixada Fluminense Capital Grande Niterói
## Capital < 2e-16 - -
## Grande Niterói 6.0e-05 1.1e-05 -
## Interior < 2e-16 7.0e-13 9.5e-16
##
## P value adjustment method: holm
De acordo com este teste, foi observado uma diferença significativa entre as regiões.
Analisaremos a mediana:
## # A tibble: 4 × 2
## Regiao mediana
## <chr> <dbl>
## 1 Baixada Fluminense 5
## 2 Capital 2
## 3 Grande Niterói 4
## 4 Interior 1
4° Análise: Região e Lesão Corporal.
#Construção do gráfico boxplot:
boxplot(BaseDP2018$lesao_corp_dolosa ~ BaseDP2018$Regiao, main="Boxplot 4 - Lesão Corporal Dolosa por Região", col=c("orange"), xlab= "Região", ylab="Lesão Corporal Dolosa")De acordo com o gráfico, observamos que todas as regiões possuem outliers. Além disso, a Baixada possui uma maior dispersão e maior mediana que os demais, porém, apresenta comportamento similar à Capital e Grande Niterói. Já o Interior, se distancia do cenário, possuindo uma mediana abaixo do panorama.
Realizando os testes de hipóteses:
##
## Shapiro-Wilk normality test
##
## data: BaseDP2018$lesao_corp_dolosa
## W = 0.81279, p-value < 2.2e-16
##
## Kruskal-Wallis rank sum test
##
## data: BaseDP2018$lesao_corp_dolosa by BaseDP2018$Regiao
## Kruskal-Wallis chi-squared = 455.91, df = 3, p-value < 2.2e-16
##
## Pairwise comparisons using Wilcoxon rank sum test with continuity correction
##
## data: BaseDP2018$lesao_corp_dolosa and BaseDP2018$Regiao
##
## Baixada Fluminense Capital Grande Niterói
## Capital 1.3e-08 - -
## Grande Niterói 0.0013 0.0441 -
## Interior < 2e-16 < 2e-16 < 2e-16
##
## P value adjustment method: holm
De acordo com este teste, foi observado uma diferença significativa entre as regiões. Porém, a análise prévia do gráfico não se verificou, visto que todas possuem comportamento diferente.
Analisaremos a mediana:
## # A tibble: 4 × 2
## Regiao mediana
## <chr> <dbl>
## 1 Baixada Fluminense 51.5
## 2 Capital 38
## 3 Grande Niterói 42
## 4 Interior 14
5° Análise: Região e Total de Roubos.
#Construção do gráfico boxplot:
boxplot(BaseDP2018$total_roubos ~ BaseDP2018$Regiao, main="Boxplot 5 - Total de Roubos por Região", col=c("darkcyan"), xlab= "Região", ylab="Total de Roubos")O gráfico nos mostra a presença de outliers na Baixada, Capital e Interior. Além disso, podemos observar que a Baixada, Grande Niterói e Capital possuem comportamento parecido. Grande Niterói tem a maior dispersão de dados, e Interior se encontra bem distante do cenário apresentado.
Realizando os testes de hipóteses:
##
## Shapiro-Wilk normality test
##
## data: BaseDP2018$total_roubos
## W = 0.76186, p-value < 2.2e-16
##
## Kruskal-Wallis rank sum test
##
## data: BaseDP2018$total_roubos by BaseDP2018$Regiao
## Kruskal-Wallis chi-squared = 1019.7, df = 3, p-value < 2.2e-16
##
## Pairwise comparisons using Wilcoxon rank sum test with continuity correction
##
## data: BaseDP2018$total_roubos and BaseDP2018$Regiao
##
## Baixada Fluminense Capital Grande Niterói
## Capital 0.266 - -
## Grande Niterói 0.011 0.266 -
## Interior <2e-16 <2e-16 <2e-16
##
## P value adjustment method: holm
De acordo com este teste, verificamos que a Capital tem comportamento similar à Baixada e Grande Niterói. Além disso, observa-se que Grande Niterói é diferente da Baixada e que o Interior é diferente do restante.
Analisaremos a mediana:
## # A tibble: 4 × 2
## Regiao mediana
## <chr> <dbl>
## 1 Baixada Fluminense 201
## 2 Capital 205
## 3 Grande Niterói 210
## 4 Interior 4
Mapas do Geobr:
O pacote Geobr permite a elaboração de mapas. A ferramenta facilita a visualização e interpretação de dados. Nos mapas que serão apresentados abaixo estão representadas os municípios do Estado do Rio de Janeiro de acordo com cada crime analisado em questão, além de proporcionar seus valores. Vale ressaltar que, nos gráficos acima, a Baixada Fluminense apresenta, no geral, uma maior dispersão de dados, porém, nos mapas abaixo, teremos a Capital como destaque. Isto ocorre, pois, quando levamos em consideração a Região da Baixada, nesta está englobada todos os seus municípios, e nos mapas abaixo, para uma visualização mais detalhada, foi considerado cada um separadamente.
O 1° mapa elaborado foi o indicador de letalidade por região, como podemos observar abaixo.
## Loading required namespace: sf
#Carregando o pacote Sf:
#install.packages("sf")
#Gerando mapa:
mapa_RJ <- read_municipality(code_muni=33, year=2018) ## Using year/date 2018
## Downloading: 10 kB Downloading: 10 kB Downloading: 10 kB Downloading: 10 kB Downloading: 26 kB Downloading: 26 kB Downloading: 34 kB Downloading: 34 kB Downloading: 42 kB Downloading: 42 kB Downloading: 67 kB Downloading: 67 kB Downloading: 91 kB Downloading: 91 kB Downloading: 130 kB Downloading: 130 kB Downloading: 160 kB Downloading: 160 kB Downloading: 160 kB Downloading: 160 kB Downloading: 250 kB Downloading: 250 kB Downloading: 250 kB Downloading: 250 kB Downloading: 270 kB Downloading: 270 kB Downloading: 280 kB Downloading: 280 kB Downloading: 280 kB Downloading: 280 kB
# plot(mapa_RJ)
banco_para_mapa = BaseDP2018 %>% group_by(munic,mcirc) %>% summarise(total=sum(indicador_letalidade))## `summarise()` has grouped output by 'munic'. You can override using the
## `.groups` argument.
banco_para_mapa = banco_para_mapa %>% rename(code_muni=mcirc)
mapa_RJ2 = mapa_RJ %>% left_join(banco_para_mapa)## Joining with `by = join_by(code_muni)`
#Carregando o pacote Leaflet:
#install.packages("leaflet")
library(leaflet)
#leaflet(data = mapa_RJ2) %>% addPolygons()
reds = colorNumeric("Purples", domain = mapa_RJ2$total)
mapa <- leaflet(data = mapa_RJ2) %>% addPolygons(weight = 0.1, fillColor = ~reds(total),color = "blue",
,fillOpacity = 0.9,
smoothFactor = 0.5,
popup = paste0("Municipio : ",
mapa_RJ2$name_muni,
" Qtd indicador letal:",
mapa_RJ2$total)) |>
addProviderTiles("Esri.WorldImagery")## Warning: sf layer has inconsistent datum (+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs).
## Need '+proj=longlat +datum=WGS84'
O mapa nos mostra uma cor mais forte no município do Rio de Janeiro, ou seja, a Capital. Isso significa uma maior concentração dos índices de indicador de letalidade. As cores vão ficando mais claras conforme os números dos índices diminuem. Em cinza, temos os municípios que não apresentaram informações (NA). Além de mostrar a concentração em cada município, o mapa nos proporciona os valores desta variável em cada parte do Estado do Rio de Janeiro.
O 2° mapa elaborado foi o registro de ocorrências por região, como podemos observar abaixo.
## Using year/date 2018
# plot(mapa_RJ)
banco_para_mapa = BaseDP2018 %>% group_by(munic,mcirc) %>% summarise(total=sum(registro_ocorrencias))## `summarise()` has grouped output by 'munic'. You can override using the
## `.groups` argument.
banco_para_mapa = banco_para_mapa %>% rename(code_muni=mcirc)
mapa_RJ2 = mapa_RJ %>% left_join(banco_para_mapa)## Joining with `by = join_by(code_muni)`
#Carregando o pacote Leaflet:
#install.packages("leaflet")
library(leaflet)
mapa_RJ <- read_municipality(code_muni=33, year=2018) ## Using year/date 2018
# plot(mapa_RJ)
banco_para_mapa = BaseDP2018 %>% group_by(munic,mcirc) %>% summarise(total=sum(registro_ocorrencias))## `summarise()` has grouped output by 'munic'. You can override using the
## `.groups` argument.
banco_para_mapa = banco_para_mapa %>% rename(code_muni=mcirc)
mapa_RJ2 = mapa_RJ %>% left_join(banco_para_mapa)## Joining with `by = join_by(code_muni)`
# leaflet(data = mapa_RJ2) %>% addPolygons()
reds = colorNumeric("PiYG", domain = mapa_RJ2$total)
mapa <- leaflet(data = mapa_RJ2) %>% addPolygons(weight = 0.1, fillColor = ~reds(total),color = "blue",
,fillOpacity = 0.9,
smoothFactor = 0.5,
popup = paste0("Municipio : ",
mapa_RJ2$name_muni,
" Qtd registro ocor.:",
mapa_RJ2$total)) |>
addProviderTiles("Esri.WorldImagery")## Warning: sf layer has inconsistent datum (+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs).
## Need '+proj=longlat +datum=WGS84'
O mapa nos mostra a cor verde no município do Rio de Janeiro, ou seja, a Capital. Isso significa uma maior concentração dos índices de registro de ocorrências. Os outros tons de rosa vão variando conforme os números dos índices diminuem. Em cinza, temos os municípios que não apresentaram informações (NA). Além de mostrar a concentração em cada município, o mapa nos proporciona os valores desta variável em cada parte do Estado do Rio de Janeiro, tendo a Capital em destaque e com número discrepante de 375.027.
O 3° mapa elaborado foi o de homicídio doloso por região, como podemos observar abaixo.
## Using year/date 2018
#plot(mapa_RJ)
banco_para_mapa = BaseDP2018 %>% group_by(munic,mcirc) %>% summarise(total=sum(hom_doloso))## `summarise()` has grouped output by 'munic'. You can override using the
## `.groups` argument.
banco_para_mapa = banco_para_mapa %>% rename(code_muni=mcirc)
mapa_RJ2 = mapa_RJ %>% left_join(banco_para_mapa)## Joining with `by = join_by(code_muni)`
#Carregando o pacote Leaflet:
#install.packages("leaflet")
library(leaflet)
#leaflet(data = mapa_RJ2) %>% addPolygons()
reds = colorNumeric("GnBu", domain = mapa_RJ2$total)
mapa <- leaflet(data = mapa_RJ2) %>% addPolygons(weight = 0.1, fillColor = ~reds(total),color = "blue",
,fillOpacity = 0.9,
smoothFactor = 0.5,
popup = paste0("Municipio : ",
mapa_RJ2$name_muni,
" Qtd hom doloso.:",
mapa_RJ2$total)) |>
addProviderTiles("Esri.WorldImagery")## Warning: sf layer has inconsistent datum (+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs).
## Need '+proj=longlat +datum=WGS84'
O 4° mapa elaborado foi Lesão Corporal Dolosa por Região.
#Construção do mapa:
#leaflet(data = mapa_RJ2) %>% addPolygons()
reds = colorNumeric("Oranges", domain = mapa_RJ2$total)
mapa <- leaflet(data = mapa_RJ2) %>% addPolygons(weight = 0.1, fillColor = ~reds(total),color = "blue",
,fillOpacity = 0.9,
smoothFactor = 0.5,
popup = paste0("Municipio : ",
mapa_RJ2$name_muni,
" Qtd lesao corp dol.:",
mapa_RJ2$total)) |>
addProviderTiles("Esri.WorldImagery")## Warning: sf layer has inconsistent datum (+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs).
## Need '+proj=longlat +datum=WGS84'
O mapa nos mostra uma maior concentração de lesão corporal dolosa na Capital. As outras cores vão variando conforme os índices diminuem. Em cinza, temos os municípios que não apresentaram informações (NA)
O 5° mapa elaborada foi Total de Roubos por Região.
#Construção do mapa:
#leaflet(data = mapa_RJ2) %>% addPolygons()
reds = colorNumeric("Greens", domain = mapa_RJ2$total)
mapa <- leaflet(data = mapa_RJ2) %>% addPolygons(weight = 0.1, fillColor = ~reds(total),color = "blue",
,fillOpacity = 0.9,
smoothFactor = 0.5,
popup = paste0("Municipio : ",
mapa_RJ2$name_muni,
" Qtd de roubos.:",
mapa_RJ2$total)) |>
addProviderTiles("Esri.WorldImagery")## Warning: sf layer has inconsistent datum (+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs).
## Need '+proj=longlat +datum=WGS84'
O mapa nos mostra uma cor verde forte na Capital, ou seja, maior concentração de roubos. Em cinza, temos os municípios que não apresentaram informações (NA).
Com a análise dos mapas, concluímos que o município do Rio de Janeiro, ou seja, a Capital, acaba se sobressaindo dentre os demais municípios. Como mencionado, para as análises dos gráficos do Boxplot, foi observado um agrupamento de munícipios, como exemplo da Baixada Fluminense. Os mapas nos proporcionam uma análise mais detalhada.
A análise estatística da criminalidade no estado do Rio de Janeiro, com foco no ano de 2018, revelou um cenário complexo e heterogêneo entre as diferentes regiões. A Baixada Fluminense se destacou como a região com os maiores índices de homicídios e lesões corporais dolosas, evidenciando a necessidade de ações urgentes e específicas para enfrentar essa problemática. A Capital, por sua vez, apresentou os maiores registros de ocorrência, refletindo a concentração populacional e a complexidade urbana. Em contrapartida, o interior do estado demonstrou índices de criminalidade significativamente menores.
De acordo com nossa análise, concluímos que, em 2018, teve-se um cenário complexo e heterogêneo entre as diferentes regiões do Estado do Rio de Janeiro. Recomendamos que o Estado busque aumentar o número de policiais nas áreas mais vulneráveis da Baixada Fluminense e na Capital, com foco em policiamento de proximidade e inteligência. Além disso, é fundamental fortalecer a rede de assistência social, com programas de transferência de renda, inclusão social e atendimento a famílias em situação de vulnerabilidade. É importante, também, promover políticas para melhorar o acesso e qualidade do ensino nas áreas mais afetadas.