5. Cálculo de medidas de dispersão (variância e desvio padrão)

Algumas vezes, nas análises epidemiológicas, necessitamos avaliar se os valores apresentados em um conjunto de dados estão dispersos ou não e o quão distantes um do outro eles podem estar, ou seja, estamos falando da variância e do desvio padrão que são medidas estratégias para esta avaliação.

Estes cálculos nos apoiam a responder, por exemplo, se a maior parte dos casos de notificações de Rosas tem idade maior ou menor que a média das idades. Afinal, podem ter médias aritméticas idênticas e, ao mesmo tempo, possuir valores distribuídos de forma diferentes em relação à média. Para isso calculamos estas medidas:

  • Variância: leva em conta todos os valores de uma distribuição para seu cálculo. Ela é estimada a partir do somatório do quadrado da distância de cada valor em relação à média, dividido pelo total de observações menos um.
  • Desvio Padrão: é estimativa do quanto, em média, cada valor se distancia da própria média aritmética de uma distribuição. Para calculá-lo, basta extrair a raiz quadrada da fórmula da variância.

No R, essas medidas de dispersão podem ser calculadas facilmente utilizando as seguintes funções: var() e sd(), respectivamente. Observe o script abaixo com atenção e faça você também:

# criando uma nova tabela (dataframe) chamada {`dados_var`} a partir da tabela 
# {`dados`}
dados_var <- dados |>
  
  # filtrando os agravos de dengue (código "A90") e hepatite viral
  # (código "B19") com a função filter()
  filter(ID_AGRAVO %in% c("A90", "B19")) |>
  
  # utilizando a função mutate() para modificar a coluna ID_AGRAVO, removendo as
  # categorias (levels) em branco após o filtro usando a função droplevels()
  mutate(ID_AGRAVO = droplevels(ID_AGRAVO)) |>
  
  # criando uma nova coluna chamada IDADE_ANOS com a função mutate() e, nela,
  # calculando a idade em anos. Primeiro, fazendo a diferença em dias entre
  # data de primeiros  sintomas e data de notificação e transformando em
  # número inteiro com a função as.integer(), seguido da divisão por 365.25,
  # e, no final, arredondamento para o menor número inteiro com uso da função 
  # floor()
  mutate(IDADE_ANOS = floor(as.integer(DT_SIN_PRI - DT_NASC) / 365.25)) |>
  
  # agrupando com a função group_by() os agravos (coluna ID_AGRAVO)
  group_by(ID_AGRAVO) |>
  
  # calculando novos dados a partir das colunas agrupadas com o uso da função
  # summarise()
  summarise(
    
    # calculando a variância da idade com a função var() na coluna IDADE_ANOS
    variancia_idade = var(IDADE_ANOS, na.rm = TRUE),
    
    # calculando o desvio padrão da idade com a função sd() na coluna IDADE_ANOS
    desvio_padrao_idade = sd(IDADE_ANOS, na.rm = TRUE)
  )

Agora, vamos visualizar a tabela criada digitando o nome da tabela e clicando no botão “Run”.

# visualizando a tabela {`dados_var`}
dados_var
#> # A tibble: 2 × 3
#>   ID_AGRAVO variancia_idade desvio_padrao_idade
#>   <fct>               <dbl>               <dbl>
#> 1 A90                  344.                18.6
#> 2 B19                  323.                18.0

Observe que ao estudar a dengue e as hepatites de origem desconhecidas, o agravo A90 possui uma variância de 344 casos com idades acima da média (26,9 anos) e 18,6 é o desvio padrão da idade, enquanto o B19 possui 323 casos com idades acima da média (42,9 anos) e podendo variar +ou- 18 anos nesta amostra (desvio padrão encontrado).


Lembre-se que o desvio padrão, é a raiz quadrada da variância.