Ocorrências Estado de São Paulo

Author

Alef & Wallace

Análise das ocorrências do Estado de São Paulo

Introdução

Este trabalho propõe uma análise abrangente das ocorrências policiais no Estado de São Paulo ao longo do período de 2002-2021 , com o objetivo de identificar tendências tendencias de modo superficial. Para tanto, serão utilizados dados oficiais fornecidos pela secretaria de segurança do Estado de São Paulo, como também métodos estatísticos e análises qualitativas.

Pacoctes usados

tidyverse

gt

geobr

readxl

gganimate

Crimes cometidos no Estado de São Paulo

O primeiro gráfico apresenta o numero de ocorrências de crimes em São Paulo, fica evidente que a partir de 2017 depois de atingir o pico, o número de ocorrências começou a diminuir, levando a seu menor patamar em 2021.

#---- população

library(readxl)
library(tidyverse)
  populacao_p_cidade <- read.delim("populacão_p_cidade.csv", sep = ";", skip = 1)
  
#  populacao_p_cidade |> 
 # select( "Cód.", "Populacao")
#  rename(populacao_p_cidade, code_muni = Cód.) 

  

#cidades
  read_excel("cidades atualizadas.xlsx") |>
    janitor::clean_names()|> filter(uf == 35) |> 
      select(nome_municipio, codigo_municipio_completo) |> 
      group_by(nome_municipio) |> 
      rename(id_municipio = codigo_municipio_completo) |> 
      as.data.frame()-> cidades_filtradas
      

##ocorrencias 
  
    ocorrencias <- read.csv("ocorrencias_registradas.csv")
    ocorrencias$id_municipio <- as.character(ocorrencias$id_municipio)
    cidades_filtradas$id_municipio <- as.character(cidades_filtradas$id_municipio)
    tabela_combinada <- cidades_filtradas %>%
    left_join(ocorrencias, by = "id_municipio")
    ocorrencias[is.na(ocorrencias)] <- 0
    ocorrencias[] <- lapply(ocorrencias, as.numeric)
   # ocorrencias |> mutate()
  #  ocorrencias |> transmute()
    ocorrencias$total <- rowSums(ocorrencias[,5:27])
    # ocorrencias |> group_by(ano, id_municipio,total)
    soma_por_ano_cidade <- aggregate(ocorrencias[,28], by = list(ocorrencias$ano), sum) |> 
      filter(Group.1 > 2007) |> 
      as.data.frame() |> 
      rename(oc_ano= x, ano = Group.1)
    
 
  
#------- ocorrencias por ano
  
#Criando o gráfico de linhas com números acima das linhas
  # pontos maximos e mínimos 
    valor_max <- max(soma_por_ano_cidade$oc_ano)
    valor_min <- min(soma_por_ano_cidade$oc_ano)
  
soma_por_ano_cidade |> 
    ggplot(aes(x = ano, y = oc_ano)) +
    geom_line(color = "black") +
    geom_point(color = "blue") +
    geom_text(data = soma_por_ano_cidade[soma_por_ano_cidade$oc_ano %in% c(valor_max, valor_min), ], aes(label = oc_ano), vjust = -0.5)+
    labs(x = "Ano", y = "Ocorrências atendidas",
    title = "Número de ocorrências atendidas pela polícia em São Paulo")

10 municípios com mias ocorrências

esta etapa do estudo damos enfâse as cidades com as dez maiores ocorrências de crimes, fica evidente que as cidades mais populosas são em sua maioria as que mais ocorrem crimes.

  #TABELA CIDADES COM MAIS CRIMES EM 2021

library(gt)
Warning: package 'gt' was built under R version 4.3.3
  ocorrencias$id_municipio <- as.character(ocorrencias$id_municipio)
  cidades_filtradas$id_municipio <- as.character(cidades_filtradas$id_municipio)
  tabela_combinada <- cidades_filtradas %>%
  left_join(ocorrencias, by = "id_municipio") |> filter(ano == 2021)
  
  soma_cidade <- aggregate(tabela_combinada[,29], by = list(tabela_combinada$nome_municipio), sum) |> 
  rename(cidade = Group.1, oc_cidade = x) |>arrange(desc(oc_cidade))
  head(soma_cidade, 10)-> cidades_mais_ocorrências
  
  cidades_mais_ocorrências %>%
    gt() %>%
    tab_header(
      title = md("**Municípios com mais ocorrências**"),
      subtitle = md("no estado de São Paulo em 2021")
    ) %>%
    tab_source_note(md("Fonte: Secretaria de Segurança Pública de São Paulo")) %>%
    cols_label(cidade = "Municípios", oc_cidade = "Ocorrências")
Municípios com mais ocorrências
no estado de São Paulo em 2021
Municípios Ocorrências
São Paulo 341172
Campinas 23106
Guarulhos 21434
Santo André 17963
São Bernardo do Campo 14702
Osasco 14359
Ribeirão Preto 10635
Diadema 10158
Sorocaba 8056
Praia Grande 7958
Fonte: Secretaria de Segurança Pública de São Paulo

Os 10 crimes mais cometidos

library(tidyverse)
select( tabela_combinada, homicidio_doloso:furto_de_veiculo) -> total_crimes2021
nova <- colSums(total_crimes2021, na.rm = TRUE)
head(nova, 10) -> nova

tabela_crimes <- data.frame(
  coluna = names(nova),
  crime = nova
) |> arrange(desc(nova))

#### CORRIGIR GRAMÁTICA

# Formatar o nome das colunas
tabela_crimes$coluna <- str_replace_all(tabela_crimes$coluna, "_", " ")
tabela_crimes$coluna <- str_to_title(tabela_crimes$coluna)




# Carregar pacotes necessários
library(gt)



# Criar a tabela gt com os dados de tabela_crimes
 gt(tabela_crimes) %>%
  tab_header(
    title = "Crimes mais cometidos no estado"
  ) %>%
  cols_label(
    coluna = "Crimes",
    crime = "Número de Crimes"
  ) %>%
  cols_align(
    columns = everything(),
    align = "left"
  ) |> tab_source_note(md("Fonte: Secretaria de Segurança Pública de São Paulo"))
Crimes mais cometidos no estado
Crimes Número de Crimes
Lesao Corporal Dolosa 75036
Lesao Corporal Culposa Por Acidente De Transito 38202
Homicidio Culposo Por Acidente De Transito 2156
Tentativa De Homicidio 2150
Numero De Vitimas Em Homicidio Doloso 1936
Homicidio Doloso 1848
Homicidio Culposo Outros 97
Lesao Corporal Seguida De Morte 51
Numero De Vitimas Em Homicidio Doloso Por Acidente De Transito 5
Homicidio Doloso Por Acidente De Transito 4
Fonte: Secretaria de Segurança Pública de São Paulo

Evolução dos furtos

library(tidyverse)

#| warning: false


oco <- readr::read_csv("oco2.csv")


oco_furtos <- oco |> 
  group_by(
    ano
  ) |> 
  summarise(
    furto = sum(furto_outros, na.rm = T),
    furto_carro = sum(furto_de_veiculo, na.rm = T)
  )


oco_furtos |> 
   mutate(
     furto2 = furto/1000
   ) |> 
  ggplot() +
  geom_point(
    aes(x=ano, y= furto2),color="darkblue", show.legend = F, size = 1.4
  )+
  geom_line(
    aes( y = furto2, x = ano),color  = "darkblue", linewidth = 0.9
  )+
  theme_bw() +
  labs(y= " Furtos ", title = "Evolução dos Furtos no Estado de São paulo")

Podemos notar o impacto da pandemia nos pequenos furtos no estado do São Paulo na variação de 2020/2021 houve queda de -22,36% caindo de 500 mil para 300 mil.

O Estado de São Paulo é responsável pelos números absolutos!

#| warning: false

#5 maiores estados com furtos


oco |> 
  group_by(id_municipio
   ) |> 
  summarise(
     furto = sum(furto_outros, na.rm = T),
      furto_carro = sum(furto_de_veiculo, na.rm = T)
    ) |> 
  arrange(desc(furto)) |> 
  slice(1:5) 
# A tibble: 5 × 3
  id_municipio   furto furto_carro
         <dbl>   <dbl>       <dbl>
1      3550308 3479769      885654
2      3509502  324248       85900
3      3543402  212222       38812
4      3518800  191656       55489
5      3552205  148797       33029
# agrupando por ano 
#| warning: false

oco |> 
  filter(
    id_municipio %in% c(3550308, 3509502,  3543402, 3518800, 3552205)
  ) |> 
  group_by(
    ano, id_municipio, regiao_ssp
  ) |> 
  summarise(
    furto = sum(furto_outros, na.rm = T),
    furto_carro = sum(furto_de_veiculo, na.rm = T)
  ) |> 
  ggplot(
    aes( x = ano, y = furto , group = regiao_ssp, color = factor(regiao_ssp))
  )+
  geom_line(
    aes( x=ano, y= furto), linewidth = 0.9
  ) + 
  theme_bw( )+
  labs(
    title = "Furtos Absolutos",
    color = "Municípios"
  ) 
`summarise()` has grouped output by 'ano', 'id_municipio'. You can override
using the `.groups` argument.

A capital do Estado é responsáavel pelo números absolutos!

Mas com relação aos furtos por mil habitantes?

Furtos por mil habitantes dos 5 municípios com maiores taxas

library(gganimate)

dado3 <- abjData::pnud_min

dado3 <- dado3 |> 
  select(
    muni_id:muni_nm
  )




pop_sp <- readr::read_csv("pop_sp.csv")

oco_ano <- oco |> 
  group_by(
    ano, id_municipio
  ) |> 
  summarise(
    furto = sum(furto_outros)
  )


oco_ano_pop <- pop_sp |> 
  mutate(
    id_municipio = as.double(id_municipio)
  ) |> 
  inner_join( oco_ano, by = c("id_municipio"="id_municipio","ano"))

# conseguindo os 5 municipios com maisores taxa de furto média

oco_ano_pop |> 
  mutate(
    tx_f = (furto/populacao)*1000
  ) |> 
  arrange(
    desc(tx_f)
  ) |> 
  group_by(
    id_municipio
  ) |> 
  summarise(
   tx_f_m = sum(tx_f, na.rm = T)/12
  ) |> 
  arrange(
    desc( tx_f_m)
  ) |> 
  slice(1:5)
# A tibble: 5 × 2
  id_municipio tx_f_m
         <dbl>  <dbl>
1      3520426   98.7
2      3502507   47.0
3      3531100   44.8
4      3522109   40.6
5      3505500   40.3
# gráfico com os municipios com as maiores tx médi de furto 
#  por mil habitantes

#| warning: false

oco_ano_pop |> 
  filter(
    id_municipio %in% c(3520426, 3502507, 3531100, 3522109, 3505500)
  ) |> 
  mutate(
    id_municipio = as.character(id_municipio)
  ) |> 
  inner_join(
    dado3, by = c("id_municipio"="muni_id")
    ) |> 
  mutate(
    tx_f = (furto/populacao)*1000
  ) |> 
  group_by(
    ano, id_municipio
  ) |> 
ggplot(
  aes( x = ano, y = tx_f, group = muni_nm, color =  factor(muni_nm))
)+
  geom_line(
    aes( x=ano, y= tx_f), linewidth = 0.9
  )+
  labs(
    title = "Os 5 Municípios Com as maiores furtos por mil habitantes",
    y = "Taxa de furtos Por Mil",
    color = "Municípios"
  )+
  theme_bw()+
  transition_reveal(ano) 

Podemos notar que nenhum dos municípios que apareceram nos absolutos aparecem aqui A ilha comprida seguem em disparado, com uma taxa de furto média de 98.71, ou seja a cada 1000 habitantes 99 são furtadas! Nem a pandemia conseguiu fazer diminuir o número de furtos

Regressão linear

library(tidyverse)
pnud <- abjData::pnud_min


pnud_sp <- pnud  |> 
  filter(
    uf_sigla == "SP"
  )


oco_f_idhm <- oco_ano_pop |> 
  mutate(
    ano = as.character(ano),
    id_municipio = as.character(id_municipio)
  ) |> 
  inner_join(
    pnud_sp, by = c("id_municipio"="muni_id", "ano")
  )


oco_f_idhm <- oco_f_idhm |> 
  mutate(
    tx_f = (furto/populacao)*1000,
    idhm2 = idhm*100,
    gini2 = gini*100,
    idhm_e2 = idhm_e*100,
    idhm_l2 = idhm_l*100,
    idhm_r2 = idhm_r*100
  ) 

#| warning: false

oco_f_idhm |> 
  ggplot()+
  geom_point(
    aes(y= tx_f , x = gini), color = "darkblue"
  )+
  geom_smooth(
    aes( y= tx_f , x = gini ), color = "orange",
  se = F, method = "lm"
  ) +
  labs( title = "correlação taxa de furtos por mil e índice gini, municípios de SP 2010",
        y = "Taxa de Furtos Por Mil")+
  theme_bw()

#| warning: false

modelo99 <- lm(tx_f ~ idhm_e2 + idhm_r2 + gini2 + idhm_l2 + idhm2, oco_f_idhm)

summary(modelo99)

Call:
lm(formula = tx_f ~ idhm_e2 + idhm_r2 + gini2 + idhm_l2 + idhm2, 
    data = oco_f_idhm)

Residuals:
    Min      1Q  Median      3Q     Max 
-10.428  -3.071  -0.672   2.339  60.982 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept) -27.6483     7.6248  -3.626 0.000311 ***
idhm_e2      -3.5865     1.3814  -2.596 0.009643 ** 
idhm_r2      -3.1149     1.2990  -2.398 0.016777 *  
gini2         0.2106     0.0407   5.175 3.06e-07 ***
idhm_l2      -2.6925     1.1175  -2.409 0.016266 *  
idhm2         9.7139     3.7695   2.577 0.010192 *  
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 4.997 on 634 degrees of freedom
Multiple R-squared:  0.1331,    Adjusted R-squared:  0.1263 
F-statistic: 19.47 on 5 and 634 DF,  p-value: < 2.2e-16

achamos uma correlação positiva entre gini e a taxa de furtos 0.2106 ou seja, uma unidade adcional do gini*100 aumeta a taxa em 0,21 Achamos também uma correlação negativa entre indice educacional -3,5856

Agora vamos analisar a evolução dos homicídios no Estado

# dentre os ano de 2010 a 2015, varias variáveis estavam contenado apenas NA-----

# apos consertar isso, plotamos o dado

oco|> 
  group_by(
    ano) |> 
  summarise(
    homi_total = sum(numero_de_vitimas_em_homicidio_doloso, na.rm=TRUE)+
      sum(numero_de_vitimas_em_homicidio_doloso_por_acidente_de_transito, na.rm = TRUE)+
      sum(  numero_de_vitimas_em_latrocinio, na.rm = TRUE)+
      sum(lesao_corporal_seguida_de_morte, na.rm = TRUE) 
  ) |> 
  ggplot() +
  geom_point(
    aes(x=ano, y=homi_total, size = 0.6),color="red", show.legend = F
  )+geom_line(
   aes( x=ano, y=homi_total),color  = "red", linewidth = 1.5
  )+theme_bw() +
  labs(y= " homicídios ", title = "Evolução dos homicídios no Estado de São paulo")+
  transition_reveal(ano) 

Podemos observar que o número de homicídios caiu muiro no estado de sp a variação de 2002/2021 DE -88,66% de homicídios em 20 anos.Podemos observar também o efeito que a pandemia teve!

Tabela

library(gt)
library(tidyverse)

oco_t_homi <- oco |>
  mutate(
    homi_t =  numero_de_vitimas_em_homicidio_doloso+numero_de_vitimas_em_homicidio_doloso_por_acidente_de_transito+
      numero_de_vitimas_em_latrocinio+lesao_corporal_seguida_de_morte
  ) 


oco_t_homi |> 
  group_by(
  regiao_ssp
  ) |> 
  summarise(
    h_t = sum(homi_t, na.rm = T)
  ) |> arrange(
    desc(h_t)
  ) |> 
  rename(
    Municípios = regiao_ssp,
    Homicídios = h_t
  ) |>  
  slice(1:10)|> 
  gt() |> 
  tab_header(
    title = md("**Os 10 municípios com mais homicídios**"),
    subtitle = md("acumulado desde do ano de 2002")
  ) |> 
  tab_source_note(md("Fonte:[Secretaria De Segurança Pública Do Estado De São Paulo](https://www.ssp.sp.gov.br/estatistica)")) |> 
  opt_table_font(
    font = list(
      google_font(name = "Abel")
    )
  ) |> 
  tab_options(heading.subtitle.font.size = 18,
heading.background.color = "#FFD6BA",
table.border.top.color = "#B15044",
table.border.bottom.color = "#B15044",
source_notes.font.size = 11
    )
Os 10 municípios com mais homicídios
acumulado desde do ano de 2002
Municípios Homicídios
Capital 27831
Grande São Paulo (exclui a Capital) 22576
Campinas 6145
São José dos Campos 5566
Piracicaba 4740
Santos 4535
Sorocaba 4330
Ribeirão Preto 4202
Bauru 1895
São José do Rio Preto 1347
Fonte:Secretaria De Segurança Pública Do Estado De São Paulo

Mapa homicídios por 1000 habitantes

#mapa_sp2 <- oco5 |> 
 # ggplot()+
  #geom_sf(aes(fill = tx_h), color = "white", 
  #        size = .1, show.legend = F) +
  #theme_void() +  
  #scale_fill_gradient2(low = "green", 
   #                    mid = "#F0E68C", 
    #                   high = "red",
     #                  midpoint = median(oco5$tx_h))+
  #labs(title = "                   Taxa de homicídio por cem mil habitantes em São Paulo no ano de 2021")



#b<- oco5 |> 
 # filter(
  #  tx_h != 0
  #) 


# fazenndo com manual de cores


#oco6 <- oco5 |> 
 # mutate(    
  #  concentracao = case_when(
   #   tx_h < 0.037 ~ "baixa",
    #  tx_h >= 0.038 & tx_h <= 0.093643 ~ "média",
     # tx_h >= 0.094  ~ "alta",
    
    #) )


#mapa_sp1 <- oco6 |> 
 # ggplot()+
 # geom_sf(
  #  aes(fill= concentracao), 
   # show.legend = TRUE,
    #color = "white", 
    #lwd =0.001
  #)+ scale_fill_manual(values = c("#8B0000", "#62BEBD","#D9B730" ))+
  #labs(title = "Taxa de homicídio por cem mil habitantes em São Paulo no ano de 2021")+
  #theme_void()


mapa_sp2

mapa_sp1

Nesse mapa foi utilizada uma metodologia diferente para conseguir vizualizar melhor as diferenças