SINAN: 2020

Grupo 07

2023-06-18


Packages

if(!require(pacman)) install.packages('pacman')
library(pacman)

pacman::p_load(tidyverse, prettydoc, gtsummary, Amelia, naniar, gt)

Load data

sinan_raw <- read_csv('../data/myturn_sinan.csv', col_select = c(-"...1"))

Cleaning and wrangling

Para fazer a recodificação dos valores de algumas variáveis, vamos adaptar uma função do pacote {microdatasus}.

recode_sinan_chagas <- function(data){
  # Colunas
  variables_names <- names(data)

  # Declara objetos
  ano <- NULL
  unidade <- NULL
  
  # DT_NOTIFIC
  if ("DT_NOTIFIC" %in% variables_names) {
    data$DT_NOTIFIC <- as.Date(data$DT_NOTIFIC)
  }
  
  # SG_UF_NOT
  if ("SG_UF_NOT" %in% variables_names) {
    data$SG_UF_NOT[data$SG_UF_NOT == "0"] <- "Ignorado"
    data$SG_UF_NOT[data$SG_UF_NOT == "99"] <- "Ignorado"
    data$SG_UF_NOT[data$SG_UF_NOT == "11"] <- "Rond\u00f4nia"
    data$SG_UF_NOT[data$SG_UF_NOT == "12"] <- "Acre"
    data$SG_UF_NOT[data$SG_UF_NOT == "13"] <- "Amazonas"
    data$SG_UF_NOT[data$SG_UF_NOT == "14"] <- "Roraima"
    data$SG_UF_NOT[data$SG_UF_NOT == "15"] <- "Par\u00e1"
    data$SG_UF_NOT[data$SG_UF_NOT == "16"] <- "Amap\u00e1"
    data$SG_UF_NOT[data$SG_UF_NOT == "17"] <- "Tocantins"
    data$SG_UF_NOT[data$SG_UF_NOT == "21"] <- "Maranh\u00e3o"
    data$SG_UF_NOT[data$SG_UF_NOT == "22"] <- "Piau\u00ed"
    data$SG_UF_NOT[data$SG_UF_NOT == "23"] <- "Cear\u00e1"
    data$SG_UF_NOT[data$SG_UF_NOT == "24"] <- "Rio Grande do Norte"
    data$SG_UF_NOT[data$SG_UF_NOT == "25"] <- "Para\u00edba"
    data$SG_UF_NOT[data$SG_UF_NOT == "26"] <- "Pernambuco"
    data$SG_UF_NOT[data$SG_UF_NOT == "27"] <- "Alagoas"
    data$SG_UF_NOT[data$SG_UF_NOT == "28"] <- "Sergipe"
    data$SG_UF_NOT[data$SG_UF_NOT == "29"] <- "Bahia"
    data$SG_UF_NOT[data$SG_UF_NOT == "31"] <- "Minas Gerais"
    data$SG_UF_NOT[data$SG_UF_NOT == "32"] <- "Esp\u00edrito Santo"
    data$SG_UF_NOT[data$SG_UF_NOT == "33"] <- "Rio de Janeiro"
    data$SG_UF_NOT[data$SG_UF_NOT == "35"] <- "S\u00e3o Paulo"
    data$SG_UF_NOT[data$SG_UF_NOT == "41"] <- "Paran\u00e1"
    data$SG_UF_NOT[data$SG_UF_NOT == "42"] <- "Santa Catarina"
    data$SG_UF_NOT[data$SG_UF_NOT == "43"] <- "Rio Grande do Sul"
    data$SG_UF_NOT[data$SG_UF_NOT == "50"] <- "Mato Grosso do Sul"
    data$SG_UF_NOT[data$SG_UF_NOT == "51"] <- "Mato Grosso"
    data$SG_UF_NOT[data$SG_UF_NOT == "52"] <- "Goi\u00e1s"
    data$SG_UF_NOT[data$SG_UF_NOT == "53"] <- "Distrito Federal"
  }
  
  # NU_IDADE_N
  if ("NU_IDADE_N" %in% variables_names) {
    data$NU_IDADE_N <- as.character(data$NU_IDADE_N)
    data$NU_IDADE_N[data$NU_IDADE_N == "000" | data$NU_IDADE_N == "999"] <- NA
    unidade <- substr(data$NU_IDADE_N, 1, 1)
    # Idade em anos
    data$IDADEanos <-
      as.numeric(ifelse(
        unidade == 4,
        substr(data$NU_IDADE_N, 2, 3),
        ifelse(unidade == 5, 100 + as.numeric(substr(data$NU_IDADE_N, 2, 3)), NA)
      ))
    # Apaga campo original
    data$NU_IDADE_N <- NULL
  }
  
  # CS_SEXO
  if ("CS_SEXO" %in% variables_names) {
    data$CS_SEXO[data$CS_SEXO == "M"] <- "Masculino"
    data$CS_SEXO[data$CS_SEXO == "F"] <- "Feminino"
    data$CS_SEXO[data$CS_SEXO == "I"] <- "Ignorado"
  }
  
  # CS_RACA
  if ("CS_RACA" %in% variables_names) {
    data$CS_RACA[data$CS_RACA == "1"] <- "Branca"
    data$CS_RACA[data$CS_RACA == "2"] <- "Preta"
    data$CS_RACA[data$CS_RACA == "3"] <- "Amarela"
    data$CS_RACA[data$CS_RACA == "4"] <- "Parda"
    data$CS_RACA[data$CS_RACA == "5"] <- "Ind\u00edgena"
    data$CS_RACA[data$CS_RACA == "9"] <- "Ignorado"
  }
  
  # CS_ESCOL_N
  if ("CS_ESCOL_N" %in% variables_names) {
    data$CS_ESCOL_N[data$CS_ESCOL_N == "00"] <- "Ignorado"
    data$CS_ESCOL_N[data$CS_ESCOL_N == "01"] <- "1a a 4a s\u00e9rie incompleta do EF"
    data$CS_ESCOL_N[data$CS_ESCOL_N == "02"] <- "4a s\u00e9rie completa do EF (antigo 1o grau)"
    data$CS_ESCOL_N[data$CS_ESCOL_N == "03"] <- "5a \u00e0 8a s\u00e9rie incompleta do EF (antigo gin\u00e1sio ou 1o grau)"
    data$CS_ESCOL_N[data$CS_ESCOL_N == "04"] <- "Ensino fundamental completo (antigo gin\u00e1sio ou 1o grau)"
    data$CS_ESCOL_N[data$CS_ESCOL_N == "05"] <- "Ensino m\u00e9dio incompleto (antigo colegial ou 2o grau)"
    data$CS_ESCOL_N[data$CS_ESCOL_N == "06"] <- "Ensino m\u00e9dio completo (antigo colegial ou 2o grau)"
    data$CS_ESCOL_N[data$CS_ESCOL_N == "07"] <- "Educa\u00e7\u00e3o superior incompleta"
    data$CS_ESCOL_N[data$CS_ESCOL_N == "08"] <- "Educa\u00e7\u00e3o superior completa"
    data$CS_ESCOL_N[data$CS_ESCOL_N == "09"] <- "Ignorado"
    data$CS_ESCOL_N[data$CS_ESCOL_N == "10"] <- "N\u00e3o se aplica"
  }
  
  # CLASSI_FIN
  if ("CLASSI_FIN" %in% variables_names) {
    data$CLASSI_FIN[data$CLASSI_FIN == "1"] <- "Confirmado"
    data$CLASSI_FIN[data$CLASSI_FIN == "2"] <- "Descartado"
    data$CLASSI_FIN[data$CLASSI_FIN == "8"] <- "Inconclusivo"
  }

  # EVOLUCAO
  if ("EVOLUCAO" %in% variables_names) {
    data$EVOLUCAO[data$EVOLUCAO == "1"] <- "vivo"
    data$EVOLUCAO[data$EVOLUCAO == "2"] <- "\u00d3bito por doenca de Chagas aguda"
    data$EVOLUCAO[data$EVOLUCAO == "3"] <- "\u00d3bito por outras causas"
    data$EVOLUCAO[data$EVOLUCAO == "9"] <- "Ignorado"
  }
  
  # Return
  return(data)
}

Seleciona variáveis de interesse.

sinan <- sinan_raw %>% 
  select(DT_NOTIFIC, SG_UF_NOT, ID_MUNICIP, NU_IDADE_N, CS_SEXO, CS_RACA, CS_ESCOL_N,
         CLASSI_FIN, EVOLUCAO)
sinan <- recode_sinan_chagas(sinan)

Renomeia as variáveis.

sinan <- sinan %>% 
  rename(data = DT_NOTIFIC,
         uf = SG_UF_NOT,
         cod_municipio = ID_MUNICIP,
         sexo = CS_SEXO,
         raca = CS_RACA,
         escolaridade = CS_ESCOL_N,
         classificacao = CLASSI_FIN,
         evolucao = EVOLUCAO,
         idade = IDADEanos)

Explore

# Primeiras 6 linhas da base de dados
sinan %>%
  head() %>% 
  gt()
data uf cod_municipio sexo raca escolaridade classificacao evolucao idade
2020-03-10 Pará 150010 Masculino Parda Não se aplica Descartado vivo 0
2020-02-07 Minas Gerais 313690 Masculino Branca 5a à 8a série incompleta do EF (antigo ginásio ou 1o grau) Descartado vivo 5
2020-02-19 Pará 150140 Masculino Parda 4a série completa do EF (antigo 1o grau) Descartado vivo 6
2020-11-11 Distrito Federal 530010 Feminino Branca Ignorado Descartado NA 4
2020-01-08 Pará 150010 Masculino Parda 5a à 8a série incompleta do EF (antigo ginásio ou 1o grau) Confirmado vivo 3
2020-03-11 Pará 150770 Masculino Parda 1a a 4a série incompleta do EF Descartado vivo 5

Variáveis categóricas nominais

sinan %>% 
  tbl_summary(include = c(uf, raca, sexo), 
              by = classificacao,
              sort = all_categorical() ~ "frequency") %>% 
  add_n() %>% 
  modify_header(label = "**Variável**") %>% 
  bold_labels()
Variável N Confirmado, N = 1801 Descartado, N = 2,4221
uf 2,602
    Pará 159 (88%) 1,249 (52%)
    Bahia 0 (0%) 175 (7.2%)
    Minas Gerais 1 (0.6%) 173 (7.1%)
    Amapá 5 (2.8%) 129 (5.3%)
    Ceará 0 (0%) 94 (3.9%)
    Tocantins 0 (0%) 93 (3.8%)
    Paraíba 0 (0%) 62 (2.6%)
    Rio Grande do Sul 0 (0%) 49 (2.0%)
    Rondônia 1 (0.6%) 40 (1.7%)
    Rio de Janeiro 3 (1.7%) 37 (1.5%)
    Distrito Federal 1 (0.6%) 36 (1.5%)
    Acre 1 (0.6%) 34 (1.4%)
    Amazonas 8 (4.4%) 23 (0.9%)
    Piauí 0 (0%) 31 (1.3%)
    São Paulo 0 (0%) 30 (1.2%)
    Rio Grande do Norte 0 (0%) 27 (1.1%)
    Paraná 0 (0%) 24 (1.0%)
    Pernambuco 0 (0%) 20 (0.8%)
    Alagoas 0 (0%) 18 (0.7%)
    Sergipe 0 (0%) 15 (0.6%)
    Maranhão 0 (0%) 14 (0.6%)
    Mato Grosso 1 (0.6%) 11 (0.5%)
    Mato Grosso do Sul 0 (0%) 12 (0.5%)
    Santa Catarina 0 (0%) 10 (0.4%)
    Roraima 0 (0%) 7 (0.3%)
    Goiás 0 (0%) 6 (0.2%)
    Espírito Santo 0 (0%) 3 (0.1%)
raca 2,578
    Parda 153 (85%) 1,775 (74%)
    Branca 16 (8.9%) 402 (17%)
    Preta 3 (1.7%) 120 (5.0%)
    Ignorado 1 (0.6%) 81 (3.4%)
    Indígena 7 (3.9%) 12 (0.5%)
    Amarela 0 (0%) 8 (0.3%)
    Unknown 0 24
sexo 2,602
    Masculino 109 (61%) 1,283 (53%)
    Feminino 71 (39%) 1,139 (47%)
1 n (%)

Qualidade

Dados ausentes

sinan %>%  
  miss_var_summary() %>% 
  gt()
variable n_miss pct_miss
evolucao 568 21.8293620
escolaridade 291 11.1837048
idade 38 1.4604151
raca 24 0.9223674
data 0 0.0000000
uf 0 0.0000000
cod_municipio 0 0.0000000
sexo 0 0.0000000
classificacao 0 0.0000000