3. Tipo de variáveis

Quais os tipos de dados estão presentes em uma análise? Antes de mais nada, vamos falar sobre o conteúdo presente nas variáveis (colunas). Elas podem conter qualquer característica ou atributo coletado no dia a dia da vigilância, como valores referentes à identificação de uma pessoa como o bairro, sexo ou sua idade, tudo isso pode ser chamado de variável.

Observe na Figura 16 o banco de dados exportado do Sivep Gripe com suas variáveis destacadas.


Figura 16: Tabela do Sivep Gripe com suas variáveis (colunas) para análise.


Essas variáveis podem ser classificadas a partir do tipo de dados que armazenam (Figura 17), podendo ser quantitativas quando armazenam dados de medidas como um número, ou qualitativas quando registram as características que não são mensuráveis, como textos. Não se preocupe, ao final deste módulo você estará pronto para analisar qualquer tipo de variável.


Figura 17: Tabela de classificação dos tipos de dados.


3.1 Variáveis quantitativas

Os dados contidos em variáveis quantitativas são aquelas medidas como um número, com caráter objetivo. Podem ser do tipo discreta ou do tipo contínua:

  • Discretas: podem assumir somente valores inteiros obtidos por contagem. São exemplos de variáveis numéricas discretas o número de gestações anteriores constante na Declaração de Nascido Vivo (SINASC), o número de contatos examinados coletado na ficha de Tuberculose e o número de lesões cutâneas dermatológicas apresentadas pelo paciente coletado na ficha de Hanseníase.

  • Contínuas: admitem qualquer valor numérico em determinado intervalo de variação. São exemplos de variáveis numéricas contínuas o peso ao nascer do recém-nascido, coletado na Declaração de Nascido Vivo (SINASC), resultados de exames de glicemia, aferição de pressão.

De modo geral, as variáveis quantitativas no R são numéricas do tipo inteiro (integer) e do tipo decimal (double).


Atenção

Ao realizar a etapa de importação de um banco de dados, não necessariamente o tipo da variável estará definido corretamente. O profissional de vigilância que analisa dados deve sempre avaliar, ou seja, inspecionar o banco de dados que está analisando.


Para inspecionar o tipo de variável do banco, vamos utilizar a função sapply(). Mas para utilizá-la, necessitamos definir os seus principais argumentos da seguinte maneira:

  • argumento X: incluir qual será o banco de dados, no caso {dados_sivep};
  • argumento FUN: permite que a gente configure o que queremos visualizar ou saber de cada variável ou coluna do banco de dados. Aqui, escolheremos argumento FUN = typeof, isso porque nos permitirá visualizar o tipo (type, em inglês) de dado armazenado em cada variável.

Observe e reproduza o script abaixo no seu RStudio e verifique se o output é similar ao que apresentamos:

sapply(X = dados_sivep, FUN = "typeof")
#>  NU_NOTIFIC  DT_NOTIFIC     SEM_NOT  DT_SIN_PRI     SEM_PRI   SG_UF_NOT 
#>    "double" "character" "character" "character" "character"    "double" 
#>  ID_REGIONA  CO_REGIONA  ID_MUNICIP  CO_MUN_NOT  ID_UNIDADE  CO_UNI_NOT 
#>   "logical"   "logical"   "logical"   "logical" "character"    "double" 
#>      NU_CPF  NM_PACIENT     CS_SEXO     DT_NASC  NU_IDADE_N    TP_IDADE 
#> "character" "character" "character" "character" "character" "character" 
#>   COD_IDADE  CS_GESTANT     CS_RACA   CS_ETINIA  CS_ESCOL_N  NM_MAE_PAC 
#> "character" "character" "character"   "logical" "character" "character" 
#>      NU_CEP     ID_PAIS     CO_PAIS       SG_UF  ID_RG_RESI  CO_RG_RESI 
#> "character" "character" "character"   "logical"   "logical" "character" 
#>  ID_MN_RESI  CO_MUN_RES   NM_BAIRRO  NM_LOGRADO   NU_NUMERO  NM_COMPLEM 
#> "character"   "logical" "character" "character" "character"   "logical" 
#>  NU_DDD_TEL  NU_TELEFON     CS_ZONA    SURTO_SG  NOSOCOMIAL   AVE_SUINO 
#>    "double" "character" "character" "character" "character" "character" 
#>       FEBRE       TOSSE    GARGANTA    DISPNEIA   DESC_RESP   SATURACAO 
#> "character" "character" "character" "character" "character" "character" 
#>    DIARREIA      VOMITO   OUTRO_SIN   OUTRO_DES  FATOR_RISC    PUERPERA 
#> "character" "character" "character" "character" "character" "character" 
#>  CARDIOPATI  HEMATOLOGI   SIND_DOWN    HEPATICA        ASMA    DIABETES 
#> "character" "character" "character" "character" "character" "character" 
#>  NEUROLOGIC  PNEUMOPATI  IMUNODEPRE       RENAL   OBESIDADE    OBES_IMC 
#> "character" "character" "character" "character" "character"   "logical" 
#>   OUT_MORBI   MORB_DESC      VACINA  DT_UT_DOSE     MAE_VAC  DT_VAC_MAE 
#> "character" "character" "character" "character"   "logical"   "logical" 
#>  M_AMAMENTA  DT_DOSEUNI   DT_1_DOSE   DT_2_DOSE   ANTIVIRAL  TP_ANTIVIR 
#>   "logical"   "logical"   "logical"   "logical" "character" "character" 
#>   OUT_ANTIV  DT_ANTIVIR    HOSPITAL  DT_INTERNA  SG_UF_INTE  ID_RG_INTE 
#>   "logical" "character" "character"    "double"   "logical"   "logical" 
#>  CO_RG_INTE  ID_MN_INTE  CO_MU_INTE  NM_UN_INTE  CO_UN_INTE         UTI 
#>   "logical"   "logical"   "logical"   "logical"   "logical" "character" 
#>   DT_ENTUTI  DT_SAIDUTI  SUPORT_VEN   RAIOX_RES   RAIOX_OUT    DT_RAIOX 
#> "character" "character" "character" "character" "character" "character" 
#>     AMOSTRA   DT_COLETA  TP_AMOSTRA   OUT_AMOST   REQUI_GAL   PCR_RESUL 
#> "character" "character" "character"   "logical"   "logical" "character" 
#>      DT_PCR  POS_PCRFLU  TP_FLU_PCR  PCR_FLUASU  FLUASU_OUT  PCR_FLUBLI 
#> "character" "character"   "logical"   "logical"   "logical"   "logical" 
#>  FLUBLI_OUT  POS_PCROUT     PCR_VSR   PCR_PARA1   PCR_PARA2   PCR_PARA3 
#>   "logical" "character"   "logical"   "logical"   "logical"   "logical" 
#>   PCR_PARA4   PCR_ADENO   PCR_METAP    PCR_BOCA    PCR_RINO   PCR_OUTRO 
#>   "logical"   "logical"   "logical"   "logical"   "logical"   "logical" 
#>  DS_PCR_OUT     LAB_PCR  CO_LAB_PCR  CLASSI_FIN  CLASSI_OUT    CRITERIO 
#>   "logical" "character"    "double" "character"   "logical" "character" 
#>    EVOLUCAO  DT_EVOLUCA  DT_ENCERRA     OBSERVA   NOME_PROF    REG_PROF 
#> "character" "character" "character" "character"   "logical" "character" 
#>   DT_DIGITA   HISTO_VGM    PAIS_VGM   CO_PS_VGM   LO_PS_VGM      DT_VGM 
#>    "double" "character"   "logical"   "logical"   "logical"   "logical" 
#>   DT_RT_VGM   PCR_SARS2   PAC_COCBO   PAC_DSCBO    OUT_ANIM     DOR_ABD 
#>   "logical" "character"   "logical"   "logical"   "logical" "character" 
#>      FADIGA   PERD_OLFT   PERD_PALA    TOMO_RES    TOMO_OUT     DT_TOMO 
#> "character" "character" "character"    "double" "character" "character" 
#>   TP_TES_AN   DT_RES_AN      RES_AN      LAB_AN   CO_LAB_AN  POS_AN_FLU 
#>    "double"   "logical" "character"   "logical"   "logical"   "logical" 
#>   TP_FLU_AN  POS_AN_OUT    AN_SARS2      AN_VSR    AN_PARA1    AN_PARA2 
#>   "logical"   "logical"   "logical"   "logical"   "logical"   "logical" 
#>    AN_PARA3    AN_ADENO    AN_OUTRO   DS_AN_OUT   TP_AM_SOR     SOR_OUT 
#>   "logical"   "logical"   "logical"   "logical"    "double"   "logical" 
#>   DT_CO_SOR      TP_SOR     OUT_SOR      DT_RES     RES_IGG     RES_IGM 
#> "character"    "double"   "logical" "character" "character" "character" 
#>     RES_IGA       NU_DO      POV_CT   TP_POV_CT     TEM_CPF     ESTRANG 
#>   "logical"    "double" "character"   "logical"   "logical"   "logical" 
#>      NU_CNS  VACINA_COV  DOSE_1_COV  DOSE_2_COV    DOSE_REF   FAB_COV_1 
#>   "logical"   "logical"   "logical"   "logical"   "logical"   "logical" 
#>   FAB_COV_2  FAB_COVREF  LOTE_1_COV  LOTE_2_COV    LOTE_REF  FNT_IN_COV 
#>   "logical"   "logical"   "logical"   "logical"   "logical"   "logical"

Perceba que ao executar a função sapply() no output acima é possível visualizar o nome das variáveis e, logo abaixo de cada uma delas, seu tipo (entre aspas). Observe a variável NU_IDADE_N, que representa a idade do paciente internado. Ela foi classificada pelo R como character (texto), porém sabemos que idade não é um texto, ela apenas está sendo classificada como. As variáveis devem sempre ser classificadas corretamente, pois para rodar as suas análises calculando medidas como frequência, média ou qualquer outro cálculo, será necessário indicar a função adequada vinculando-a ao tipo de variável para que o R execute o código sem erros.


3.2 Variáveis qualitativas

Quanto a variáveis qualitativas, são aquelas que registram as características particulares e que não são mensuráveis como um número e, geralmente, são definidas como categorias. Podem ser classificadas em ordinais e nominais:

  • Ordinais: são aquelas que suas categorias expressam uma ordem ou hierarquia. Exemplos comuns são aquelas variáveis que representam uma resposta de uma avaliação: muito ruim, ruim, regular, bom e excelente. Obviamente a classificação excelente é melhor do que bom e assim sucessivamente. Na Vigilância, temos o exemplo da variável grau de incapacidade física no diagnóstico (notificação de Hanseníase do SINAN), a variável escolaridade categorizada, e outras.

  • Nominais: são as que possuem categorias que não têm nenhuma ordem entre elas. Podem ser dicotômicas (duas categorias) ou ter várias categorias (politômicas). Como exemplos há coluna com dados de sexo (Masculino, Feminino e Ignorado), o resultado de um exame sorológico (Positivo, Negativo, Inconclusivo, Não realizado) ou até mesmo a ocorrência de uma hospitalização (Sim, Não, Ignorado).

É importante que você saiba que as variáveis qualitativas no R podem ser do tipo fator (factor) ou somente do tipo texto (character). Os fatores são um tipo de objeto no qual as categorias das variáveis são chamadas de levels (níveis ou hierarquias) e podem possuir um rótulo para cada categoria, chamado de label (nome ou rótulos). Estas categorias podem ser estruturadas no formato de:

  • números inteiros (integer), ou
  • textos (character).


Atenção

É importante destacar que para a manipulação de uma variável no R é preciso que ela seja transformada em fator. Para isso utiliza-se a função factor().


Pronto, vamos praticar! Imagine que você necessita analisar a classificação final dos casos de SRAG do Estado de Rosas. Para isto necessitaremos transformar todos os dados contidos na variável CLASSI_FIN, do banco de dados {dados_sivep}, e para isso utilizaremos o dicionário do banco de dados disponível no menu lateral “Arquivos”, do módulo.

Observe na Figura 18 abaixo como está estruturada a variável CLASSI_FIN do banco de dados {dados_sivep} :


Figura 18: Variável CLASSI_FIN do Sivep Gripe visualizada pelo Microsoft Excel.


Conforme dicionário de dados, a classificação final do caso (Figura 18) pode ser referida da seguinte forma:

  • 1 = SRAG por influenza;
  • 2 = SRAG por outro vírus respiratório;
  • 3 = SRAG por outro agente etiológico;
  • 4 = SRAG não especificado;
  • 5 = SRAG por COVID-19.

Observe a Figura 19 com o print de parte do dicionário de dados:


Figura 19: Dicionário de dados do Sivep Gripe da variável CLASSI_FIN.


Agora precisaremos criar um fator, utilizando a factor() para recodificar, ou categorizar a variável CLASSI_FIN do Sivep Gripe. Para isso, precisaremos:

  1. Definir um novo objeto para salvar as modificações escrevendo o comando: dados_sivep$CS_CLASSI_FIN_N. Onde criaremos a nova variável CS_CLASSI_FIN_N, selecionada utilizando cifrão ($), do banco de dados {dados_sivep}.
  • Lembre-se de utilizar o sinal de atribuição <-, após a expressão dados_sivep$CS_CLASSI_FIN_N, pois ele garantirá que todos os comandos solicitados após sua escrita estarão salvos, de forma automática, na nova váriavel CS_CLASSI_FIN_N.
  1. E aplicar os três argumentos principais da função factor():
  • x: indicando os dados que serão categorizados;
  • levels: indicando os valores que serão utilizados como categorias (hierarquia);
  • labels: indicando os nomes (rótulos) que vão identificar as categorias.

Observe o script abaixo e replique-o em seu RStudio.


Atenção

O sinal de cifrão $ indica que estamos realizando uma operação de selecionar uma variável no banco de dados escolhido.

Fique atento à escrita do seu script no RStudio, pois qualquer erro ortográfico ou de pontuação pode levar a dificuldades de rodar o seu código, e o R te apresentará um aviso (warning)!


Pronto, vamos praticar! Imagine que você necessita analisar a classificação final dos casos de SRAG do Estado de Rosas. Para isto necessitaremos transformar todos os dados contidos na variável CLASSI_FIN, do banco de dados {dados_sivep}, e para isso utilizaremos o dicionário do banco de dados disponível no menu lateral “Arquivos”, do módulo.

Observe na Figura 18 abaixo como está estruturada a variável CLASSI_FIN do banco de dados {dados_sivep} :


# Recodificando a coluna CLASSI_FIN utilizando a função factor 
# e salvando as modificacoes na nova coluna CS_CLASSI_FIN_N
dados_sivep$CS_CLASSI_FIN_N <- factor(
  x = dados_sivep$CLASSI_FIN,
  levels = c("1", "2", "3", "4", "5"),
  labels = c(
    "SRAG por influenza",
    "SRAG por outro vírus respiratório",
    "SRAG por outro agente etiológico",
    "SRAG não especificado",
    "SRAG por COVID-19"
  )
)

Observe que executamos os seguintes argumentos na função factor ():

  1. x = dados_sivep$CLASSI_FIN indicando o banco de dados {dados_sivep} e selecionando com o símbolo $(cifrão) a coluna (CLASSI_FIN) que será recodificada.

  2. levels = c("1", "2", "3", "4", "5")indicando quais são os dados que precisam ser transformados.

  3. labels = c("SRAG por influenza","SRAG por outro vírus respiratório","SRAG por outro agente etiológico","SRAG não especificado","SRAG por COVID-19") indicando quais são os valores que substituiram os valores citados no levels (item 2).

Observe também que no output visualizamos as categorias recodificadas corretamente.

Quando transformamos uma variável em factor, estamos guardando no R cada uma das suas categorias (“1”,“2”,“3”,“4”,“5”) e associando uma identificação para cada uma delas, assim:

  • Onde está codificado como “1”, receberá o rótulo “SRAG por influenza”;
  • Onde está codificado como “2”, receberá o rótulo “SRAG por outro vírus - respiratório”;
  • Onde está codificado como “3”, receberá o rótulo “SRAG por outro agente etiológico”;
  • Onde está codificado como “4”, receberá o rótulo “SRAG não especificado”;
  • Onde está codificado como “5”, receberá o rótulo “SRAG por COVID-19”.

O número de valores informados no argumento levels deve ser o mesmo do número de valores informados no argumento labels.

Perceba que utilizamos a função c() no argumento levels e labels. A função c() tem o objetivo de concatenar valores em um conjunto. Como estamos criando um conjunto de textos para os argumentos, os colocamos entre aspas duplas, separando-os por vírgulas. Essa é uma estrutura comum nas funções que utilizaremos durante o nosso curso.


Na linguagem de programação R, para ordenar por ordem hierárquica uma variável ordinal precisamos definir as categorias no argumento levels da função factor e adicionar o argumento ordered = TRUE. Veja no código abaixo como ficaria a recategorização da escolaridade, e replique-o em seu RStudio:

dados_sivep$CS_ESCOL_N <- factor(
  x = dados_sivep$CS_ESCOL_N,
  levels = c("0", "1", "2", "3", "4", "5", "9"),
  labels = c(
    "Sem escolaridade",
    "Fundamental 1º ciclo",
    "Fundamental 2º ciclo",
    "Médio",
    "Superior",
    "Não se aplica",
    "Ignorado"
  ),
  ordered = TRUE
)