1. Carregando pacotes

library(dplyr)
library(rstatix)
library(ggplot2)
library(geobr)
library(knitr)
library(kableExtra)
library(htmltools)
library(scales)
library(readr)
library(rio)
library(sf)
library(readxl)
cores <- rcartocolor::carto_pal(12, "Bold")
cores2 <- rcartocolor::carto_pal(6, "SunsetDark")

2. Carregando base de dados

dados_covid_sp <- read.csv('D:/Mestrado/1Sem_23/Ferramentas computacionais/projeto_final/Estudo/dados/dados_covid_sp.csv', sep = ";")
base_sp <- read.csv('D:/Mestrado/1Sem_23/Ferramentas computacionais/projeto_final/Estudo/dados/sp.csv', sep = ";")

3. Tratamento dos dados

dados_covid_sp$datahora <- as.Date(dados_covid_sp$datahora,
                                  format = '%Y-%m-%d') #convertendo datahora para data
glimpse(dados_covid_sp)
## Rows: 779,722
## Columns: 11
## $ nome_munic    <chr> "Adamantina", "Adolfo", "Aguaí", "Águas da Prata", "Água…
## $ codigo_ibge   <int> 3500105, 3500204, 3500303, 3500402, 3500501, 3500550, 35…
## $ datahora      <date> 2020-02-25, 2020-02-25, 2020-02-25, 2020-02-25, 2020-02…
## $ casos         <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,…
## $ casos_novos   <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,…
## $ casos_mm7d    <chr> "0,000000000000000", "0,000000000000000", "0,00000000000…
## $ obitos        <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,…
## $ obitos_novos  <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,…
## $ obitos_mm7d   <chr> "0,000000000000000", "0,000000000000000", "0,00000000000…
## $ pop           <int> 33894, 3447, 35608, 7797, 18374, 5931, 3122, 36134, 5779…
## $ semana_epidem <int> 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,…
# excluindo colunas que não iremos usar
dados_covid_sp_tratado <- select(dados_covid_sp, -c(2,6,9))

# verificando valores vazios
dados_covid_sp_tratado %>% 
  sapply(function(x) sum(is.na(x))) # valores NA
##    nome_munic      datahora         casos   casos_novos        obitos 
##             0             0             0             0             0 
##  obitos_novos           pop semana_epidem 
##             0             0             0
dados_covid_sp_tratado %>% 
  sapply(function(x) sum(is.nan(x))) # valores NAN
##    nome_munic      datahora         casos   casos_novos        obitos 
##             0             0             0             0             0 
##  obitos_novos           pop semana_epidem 
##             0             0             0
dados_covid_sp_tratado %>%
  head(10) %>%
  knitr::kable() %>%
  kable_styling(full_width = FALSE, bootstrap_options = c("striped", "hover","condesed","responsive"))
nome_munic datahora casos casos_novos obitos obitos_novos pop semana_epidem
Adamantina 2020-02-25 0 0 0 0 33894 9
Adolfo 2020-02-25 0 0 0 0 3447 9
Aguaí 2020-02-25 0 0 0 0 35608 9
Águas da Prata 2020-02-25 0 0 0 0 7797 9
Águas de Lindóia 2020-02-25 0 0 0 0 18374 9
Águas de Santa Bárbara 2020-02-25 0 0 0 0 5931 9
Águas de São Pedro 2020-02-25 0 0 0 0 3122 9
Agudos 2020-02-25 0 0 0 0 36134 9
Alambari 2020-02-25 0 0 0 0 5779 9
Alfredo Marcondes 2020-02-25 0 0 0 0 3927 9

4. Total de casos acumulados

# Total de casos por ano/mes acumulado
dados_covid_sp_tratado$ano_mes <- format(dados_covid_sp_tratado$datahora, "%Y-%m")

casos_mes_ano <- dados_covid_sp_tratado %>% 
  group_by(datahora) %>% 
  summarise(total_casos = sum(casos))

casos_mes_ano %>%
  head(10) %>%
  knitr::kable() %>%
  kable_styling(full_width = FALSE, bootstrap_options = c("striped", "hover","condesed","responsive"))
datahora total_casos
2020-02-25 0
2020-02-26 1
2020-02-27 1
2020-02-28 1
2020-02-29 2
2020-03-01 2
2020-03-02 2
2020-03-03 2
2020-03-04 3
2020-03-05 6

5. Plot do gráfico do total de casos acumulados

# plot do gráfico: total de casos acumulados
casos_mes_ano %>% 
  ggplot(aes(x = datahora, y = total_casos * 1e-6)) +
  geom_density(fill = cores[8], stat = "identity", alpha = 0.3) +
  scale_color_manual(values = cores) +
  theme(panel.grid = element_blank(),
        panel.background = element_rect(fill = "white"),
        plot.title = element_text(hjust = 0.5)) +
  labs(x = "Ano",
       y = expression(paste("Total de Casos (", 10^6, ")")),
       title = "Evolução dos Casos no Estado de São Paulo") +
  scale_y_continuous(labels = scales::comma, breaks = scales::pretty_breaks(5))

6. Total de novos casos por dia

novos_casos_mes_ano <- dados_covid_sp_tratado %>% 
  group_by(datahora) %>% 
  summarise(novos_casos = sum(casos_novos))

novos_casos_mes_ano %>%
  head(10) %>%
  knitr::kable() %>%
  kable_styling(full_width = FALSE, bootstrap_options = c("striped", "hover","condesed","responsive"))
datahora novos_casos
2020-02-25 0
2020-02-26 1
2020-02-27 0
2020-02-28 0
2020-02-29 1
2020-03-01 0
2020-03-02 0
2020-03-03 0
2020-03-04 1
2020-03-05 3

7. Plot do gráfico do total de novos casos por dia

novos_casos_mes_ano %>%
  mutate(datahora = as.POSIXct(datahora)) %>%
  ggplot(aes(x = datahora, y = novos_casos *1e-3)) +
  geom_line(aes(color = "Média móvel"), show.legend = TRUE) +
  geom_smooth(method = "loess", se = FALSE, color = "red", aes(color = "Curva de Suavização"), show.legend = TRUE) +
  theme_minimal() +
  theme(plot.title = element_text(hjust = 0.5)) +
  labs(x = "Ano/Mês", y = "Novos Casos (x 10³)", title = "Novos Casos por Dia no Estado de São Paulo",
       color = "Legenda") +
  scale_x_datetime(date_labels = "%Y-%m", date_breaks = "6 month") +
  scale_color_manual(values = c("blue", "red"))

8. Análise SRAG Covid-19

8.1 Carregando Pacotes

# importação e instalação, caso seja a primeira vez no pc
remotes::install_github("rpradosiqueira/brazilmaps")

library(dplyr)
library(rstatix)
library(ggplot2)
library(geobr)
library(sf)
library(dplyr)
library(rio)
library(readr)
library(scales)
library(data.table)

8.2 Carregando base de dados da Sivep-Gripe

#base online, atualizada
# 2020
BR20 <- fread("https://s3.sa-east-1.amazonaws.com/ckan.saude.gov.br/SRAG/2020/INFLUD20-29-08-2022.csv")

# 2021
BR21 <- fread("https://s3.sa-east-1.amazonaws.com/ckan.saude.gov.br/SRAG/2021/INFLUD21-29-08-2022.csv")

# 2022
BR22 <- fread("https://s3.sa-east-1.amazonaws.com/ckan.saude.gov.br/SRAG/2022/INFLUD22-29-08-2022.csv")

8.3 Tratamento da base de dados

## 2020
# filtro para as variáveis de interesse da pesquisa

var.20 <- BR20[,c("DT_NOTIFIC", "SEM_NOT", "ID_MUNICIP", "CO_MUN_NOT", "SG_UF_NOT", 
                  "ID_REGIONA", "ID_UNIDADE", "NU_IDADE_N", "CS_SEXO", "CS_RACA",
                  "ID_MN_RESI", "CO_MUN_RES", "CS_ZONA", "HOSPITAL", "EVOLUCAO",
                  "FATOR_RISC", "UTI", "SUPORT_VEN", "CLASSI_FIN")]
# filtro para as notificações do estado de São Paulo
SP20 <- filter(var.20, SG_UF_NOT == 'SP')

## 2021
# filtro para variáveis de interesse da pesquisa
var.21 <- BR21[,c("DT_NOTIFIC", "SEM_NOT", "ID_MUNICIP", "CO_MUN_NOT", "SG_UF_NOT",
                    "ID_REGIONA", "ID_UNIDADE", "NU_IDADE_N", "CS_SEXO", "CS_RACA", 
                    "ID_MN_RESI", "CO_MUN_RES", "CS_ZONA", "HOSPITAL", "EVOLUCAO",
                    "FATOR_RISC", "UTI", "SUPORT_VEN", "CLASSI_FIN")]
# filtro para as notificações do estado de São Paulo
SP21 <- filter(var.21, SG_UF_NOT == 'SP')

## 2022
# filtro para variáveis de interesse da pesquisa
var.22 <- BR22[,c("DT_NOTIFIC", "SEM_NOT", "ID_MUNICIP", "CO_MUN_NOT", "SG_UF_NOT",
                    "ID_REGIONA", "ID_UNIDADE", "NU_IDADE_N", "CS_SEXO", "CS_RACA",
                    "ID_MN_RESI", "CO_MUN_RES", "CS_ZONA", "HOSPITAL", "EVOLUCAO",
                    "FATOR_RISC", "UTI", "SUPORT_VEN", "CLASSI_FIN")]
# filtro para as notificações do estado de São Paulo
SP22 <- filter(var.22, SG_UF_NOT == 'SP')

8.4 Criando um Backup local dos dados

## arquivo excel com os dados da covid-19 para o SP
write.table(SP22, file= "siveSP22.csv", sep=";", dec=",")
write.table(SP21, file= "siveSP21.csv", sep=";", dec=",")
write.table(SP20, file= "siveSP20.csv", sep=";", dec=",")

9. Análise descritiva, início para análise

9.1 Carregando base de dados local

# dados gerais para sivesp/gripe
siveSP20 <- read.csv("siveSP20.csv", header = TRUE, sep = ";", dec = ",")
siveSP21 <- read.csv("siveSP21.csv", header = TRUE, sep = ";", dec = ",")
siveSP22 <- read.csv("siveSP22.csv", header = TRUE, sep = ";", dec = ",")

9.2 Total de pessoas por sexo

9.2.1 2020

table(siveSP20$CS_SEXO)
## 
##      F      I      M 
## 164953     20 194308

9.2.2 2021

table(siveSP21$CS_SEXO)
## 
##      F      I      M 
## 221656     19 272020

9.2.3 2022

table(siveSP22$CS_SEXO)
## 
##     F     I     M 
## 59840     5 61885

9.3 Análise das idades

9.3.1 Média 2020

mean(siveSP20$NU_IDADE_N)
## [1] 56.41053

9.3.2 Média 2021

mean(siveSP21$NU_IDADE_N)
## [1] 52.74389

9.3.3 Média 2022

mean(siveSP22$NU_IDADE_N)
## [1] 50.46575

9.3.4 Mediana 2020

median(siveSP20$NU_IDADE_N)
## [1] 59

9.3.5 Mediana 2021

median(siveSP21$NU_IDADE_N)
## [1] 55

9.3.6 Mediana 2022

median(siveSP22$NU_IDADE_N)
## [1] 61

9.3.7 Boxplot 2020

boxplot(siveSP20$NU_IDADE_N)

### 9.3.8 Boxplot 2021

boxplot(siveSP21$NU_IDADE_N)

### 9.3.9 Boxplot 2022

boxplot(siveSP22$NU_IDADE_N)

9.4 Tratamento dos outliers

9.4.1 Verificando 2020

siveSP20 %>% 
  identify_outliers(NU_IDADE_N)
##        DT_NOTIFIC SEM_NOT          ID_MUNICIP CO_MUN_NOT SG_UF_NOT
## 19143  29/03/2020      14 SAO JOSE DOS CAMPOS     354990        SP
## 350778 30/09/2020      40           GUARULHOS     351880        SP
##                           ID_REGIONA
## 19143  GVE XXVII SAO JOSE DOS CAMPOS
## 350778      GVE VIII MOGI DAS CRUZES
##                                                 ID_UNIDADE NU_IDADE_N CS_SEXO
## 19143                                    HOSPITAL POLICLIN        136       M
## 350778 HOSPITAL MUNICIPAL DA CRIANCA E DO ADOLESCENTE HMCA         -3       M
##        CS_RACA ID_MN_RESI CO_MUN_RES CS_ZONA HOSPITAL EVOLUCAO FATOR_RISC UTI
## 19143        1    TAUBATE     355410       1        1        1          N  NA
## 350778       4  GUARULHOS     351880       1        1        1          N   2
##        SUPORT_VEN CLASSI_FIN is.outlier is.extreme
## 19143          NA          5       TRUE      FALSE
## 350778          3          4       TRUE      FALSE

9.4.2 Verificando 2021

siveSP21 %>% 
  identify_outliers(NU_IDADE_N)
##        DT_NOTIFIC SEM_NOT  ID_MUNICIP CO_MUN_NOT SG_UF_NOT
## 71839  15/04/2021      15 SAO VICENTE     355100        SP
## 81622  15/01/2021       2     UBATUBA     355540        SP
## 175637 27/03/2021      12   GUARULHOS     351880        SP
## 408014 04/01/2022       1     TAUBATE     355410        SP
## 416403 26/03/2021      12   CRAVINHOS     351310        SP
## 463500 16/03/2021      11   GUARULHOS     351880        SP
##                      ID_REGIONA
## 71839            GVE XXV SANTOS
## 81622  GVE XXVIII CARAGUATATUBA
## 175637 GVE VIII MOGI DAS CRUZES
## 408014       GVE XXXIII TAUBATE
## 416403  GVE XXIV RIBEIRAO PRETO
## 463500 GVE VIII MOGI DAS CRUZES
##                                                 ID_UNIDADE NU_IDADE_N CS_SEXO
## 71839                                HOSPITAL DO VICENTINO        114       F
## 81622                SANTA CASA DE MISERICORDIA DE UBATUBA        114       F
## 175637 HOSPITAL MUNICIPAL DA CRIANCA E DO ADOLESCENTE HMCA         -5       F
## 408014         HOSPITAL MUNICIPAL UNIVERSITARIO DE TAUBATE         -6       F
## 416403                             SANTA CASA DE CRAVINHOS        136       F
## 463500 HOSPITAL MUNICIPAL DA CRIANCA E DO ADOLESCENTE HMCA         -9       M
##        CS_RACA  ID_MN_RESI CO_MUN_RES CS_ZONA HOSPITAL EVOLUCAO FATOR_RISC UTI
## 71839        1 SAO VICENTE     355100      NA        1        2          1  NA
## 81622        4     UBATUBA     355540      NA        1        2          2  NA
## 175637       4   GUARULHOS     351880       1        1        1          1   2
## 408014       1     TAUBATE     355410       1        1        1          1   1
## 416403       1   CRAVINHOS     351310       1        1        1          2   2
## 463500       4   GUARULHOS     351880       1        1        1          2   2
##        SUPORT_VEN CLASSI_FIN is.outlier is.extreme
## 71839          NA          5       TRUE      FALSE
## 81622           2          5       TRUE      FALSE
## 175637          2          5       TRUE      FALSE
## 408014          2          4       TRUE      FALSE
## 416403         NA          5       TRUE      FALSE
## 463500          3          2       TRUE      FALSE

9.4.3 Verificando 2022

siveSP22 %>% 
  identify_outliers(NU_IDADE_N)
##  [1] DT_NOTIFIC SEM_NOT    ID_MUNICIP CO_MUN_NOT SG_UF_NOT  ID_REGIONA
##  [7] ID_UNIDADE NU_IDADE_N CS_SEXO    CS_RACA    ID_MN_RESI CO_MUN_RES
## [13] CS_ZONA    HOSPITAL   EVOLUCAO   FATOR_RISC UTI        SUPORT_VEN
## [19] CLASSI_FIN is.outlier is.extreme
## <0 linhas> (ou row.names de comprimento 0)

9.4.4 Retirando outliers

## tratando outliers
outliers20 <- c(boxplot.stats(siveSP20$NU_IDADE_N)$out)
outliers21 <- c(boxplot.stats(siveSP21$NU_IDADE_N)$out)
  
## atualizando as tabelas sem os outliers
siveSP20 <- siveSP20[-c(which(siveSP20$NU_IDADE_N %in% outliers20)),]
siveSP21 <- siveSP21[-c(which(siveSP21$NU_IDADE_N %in% outliers21)),]

9.4.5 Novo boxplot 2020

siveSP20$NU_IDADE_N %>% boxplot()

9.4.6 Novo boxplot 2021

siveSP21$NU_IDADE_N %>% boxplot()

9.5 Filtrando notificações de Covid-19

9.5.1 Tratamento dos dados

## filtro para notificaÇões para covid-19

covidSP20 <- filter(siveSP20, CLASSI_FIN =='5')
covidSP21 <- filter(siveSP21, CLASSI_FIN =='5')
covidSP22 <- filter(siveSP22, CLASSI_FIN =='5')

## filtro para obitos totais de covid, evolucao = 2

obitoSP20 <- filter(covidSP20, EVOLUCAO == '2')
obitoSP21 <- filter(covidSP21, EVOLUCAO == '2')
obitoSP22 <- filter(covidSP22, EVOLUCAO == '2')

## filto para internação de covid, hospital = 1

hospSP20 <- filter(covidSP20, HOSPITAL == '1')
hospSP21 <- filter(covidSP21, HOSPITAL == '1')
hospSP22 <- filter(covidSP22, HOSPITAL == '1')

## filtro para letalidade, óbitos em hospitalizaçao, evolucao = 2

obitosSP20 <- filter(hospSP20, EVOLUCAO == '2')
obitosSP21 <- filter(hospSP21, EVOLUCAO == '2')
obitosSP22 <- filter(hospSP22, EVOLUCAO == '2')

9.5.2 Filtro de casos totais por município

t1 <- as.data.frame(table(obitosSP20$CO_MUN_NOT)) # 2020
t2 <- as.data.frame(table(obitosSP21$CO_MUN_NOT)) # 2021
t3 <- as.data.frame(table(obitosSP22$CO_MUN_NOT)) # 2022

9.5.3 Carregando códigos dos munícpios IBGE

codigos <- read_excel("D:/Mestrado/1Sem_23/Ferramentas computacionais/projeto_final/SRAG/RELATORIO_DTB_BRASIL_MUNICIPIO.xls")

9.5.4 União das bases “t” com codigos

## uniao das bases de acordo com as chaves do municipio
j1 <- merge(codigos, t1, by.x = "ibge6", by.y = "Var1", all.x = TRUE) # 2020
j2 <- merge(codigos, t2, by.x = "ibge6", by.y = "Var1", all.x = TRUE) # 2021
j3 <- merge(codigos, t3, by.x = "ibge6", by.y = "Var1", all.x = TRUE) # 2022

9.5.5 Tratando frequencias NA

## colocar zero nas frequencias vazias
j1$Freq[is.na(j1$Freq)] <- 0
j2$Freq[is.na(j2$Freq)] <- 0
j3$Freq[is.na(j3$Freq)] <- 0

mapa20 <- j1
mapa21 <- j2
mapa22 <- j3

9.6 Taxa de mortalidade hospitalar por munícpio de internação

9.6.1 Proporção em 2020

total_hosp_20 <- nrow(hospSP20)
mapa20$tx_mor_local20 <- (mapa20$Freq/total_hosp_20)*100

9.6.2 Proporção em 2021

total_hosp_21 <- nrow(hospSP21)
mapa21$tx_mor_local21 <- (mapa21$Freq/total_hosp_21)*100

9.6.3 Proporção em 2022

total_hosp_22 <- nrow(hospSP22)
mapa22$tx_mor_local22 <- (mapa22$Freq/total_hosp_22)*100

9.7 Plotagem do gráfico

9.7.1 Dados do território de São Paulo

mapa_muni <- read_municipality(code_muni = "all", year=2010) %>% 
  filter(code_state == 35)   

9.7.2 Convertendo dados para mesmo tipo

mapa20$code_muni <- as.double(mapa20$code_muni)
mapa21$code_muni <- as.double(mapa21$code_muni)
mapa22$code_muni <- as.double(mapa22$code_muni)

9.7.3 Join das bases

juntos2020 <- full_join(mapa_muni, mapa20, by="code_muni")  #função join, união de variáveis
juntos2021 <- full_join(mapa_muni, mapa21, by="code_muni")  #função join, união de variáveis
juntos2022 <- full_join(mapa_muni, mapa22, by="code_muni")  #função join, união de variáveis

9.7.4 Tratando municípios sem registros

#retirando os NA, para municípios sem registros
juntos2020[is.na(juntos2020)] <- 0
juntos2021[is.na(juntos2021)] <- 0
juntos2022[is.na(juntos2022)] <- 0

9.8 Mapa de calor para taxa de mortalidade hospitalar

9.8.1 Taxa em 2020

# 2020
ggplot()+ ## plotagem
  geom_sf(data = juntos2020, aes(fill = tx_mor_local20), color = NA, size = 0.15)+ ## geometria dos municípios
  geom_sf(data = juntos2020, color = "gray", fill = NA, size = 0.1) +  ## adição da linha cinza
  labs(title = "Taxa de mortalidade hospitalar por SRAG por COVID-19 em 2020",
       caption = "Fonte: Elaboração própria")+ ## titulo e legenda
  scale_fill_gradientn(colours = cores2, limits = c(0.00, 15.00),
                       name="Taxa mortalidade", labels = label_number(big.mark="."))+ ## cores
  theme(plot.title = element_text(hjust = 0.5),
        axis.text = element_blank(),
        axis.ticks = element_blank(),
        panel.background = element_rect(fill = "white")) ## configuração do tema 

9.8.2 Taxa em 2021

# 2021
ggplot()+ ## plotagem
  geom_sf(data = juntos2021, aes(fill = tx_mor_local21), color = NA, size = 0.15)+ ## geometria dos municípios
  geom_sf(data = juntos2021, color = "gray", fill = NA, size = 0.1) +  ## adição da linha cinza
  labs(title = "Taxa de mortalidade hospitalar por SRAG por COVID-19 em 2021",
       caption = "Fonte: Elaboração própria")+ ## titulo e legenda
  scale_fill_gradientn(colours = cores2, limits = c(0.00, 15.00),
                       name="Taxa mortalidade", labels = label_number(big.mark="."))+ ## cores
  theme(plot.title = element_text(hjust = 0.5),
        axis.text = element_blank(),
        axis.ticks = element_blank(),
        panel.background = element_rect(fill = "white")) ## configuração do tema 

9.8.3 Taxa em 2022

# 2022
ggplot()+ ## plotagem
  geom_sf(data = juntos2022, aes(fill = tx_mor_local22), color = NA, size = 0.15)+ ## geometria dos municípios
  geom_sf(data = juntos2022, color = "gray", fill = NA, size = 0.1) +  ## adição da linha cinza
  labs(title = "Taxa de mortalidade hospitalar por SRAG por COVID-19 em 2022",
       caption = "Fonte: Elaboração própria")+ ## titulo e legenda
  scale_fill_gradientn(colours = cores2, limits = c(0.00, 15.00),
                       name="Taxa mortalidade", labels = label_number(big.mark="."))+ ## cores
  theme(plot.title = element_text(hjust = 0.5),
        axis.text = element_blank(),
        axis.ticks = element_blank(),
        panel.background = element_rect(fill = "white")) ## configuração do tema