Análise Descritiva dos casos de Dengue em Sergipe

Author

João F. Quentino

A seguir, apresentarei uma análise descritiva dos casos de Dengue em Sergipe, a partir dos dados do Ministério da Saúde.

Tratamento dos dados

O dataset possui muitas linhas com valores em nulos (NA), mas como é um conjunto de dados relativamente pequeno (pouco mais de 1000 linhas), excluir as linhas com valores NA não é tão benéfico (são mais de 300 linhas). As linhas sem dados pertencem a duas colunas: EVOLUCAO e CS_ESCOL_N. Como a coluna EVOLUCAO, a grande maioria dos dados são 1 (932 pacientes se curaram), decidi preencher as linhas nulas com o valor 1. Já na coluna CS_ESCOL_N, apliquei uma interpolação para preencher os valores nulos, já que os dados desta coluna se diversificam bastante.

Code
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
from scipy.stats import chi2_contingency

df = pd.read_csv("../dados_teste.csv")
df["EVOLUCAO"] = df["EVOLUCAO"].fillna(1)
df["CS_ESCOL_N"] = df["CS_ESCOL_N"].interpolate(method="linear", limit_direction="forward").round().astype(int)
disease_columns = ['FEBRE', 'MIALGIA', 'CEFALEIA', 'EXANTEMA', 'VOMITO', 'NAUSEA', 'DOR_COSTAS', 'CONJUNTVIT', 'ARTRITE', 'ARTRALGIA', 'PETEQUIA_N', 'LEUCOPENIA', 'LACO', 'DOR_RETRO', 'DIABETES', 'HEMATOLOG', 'HEPATOPAT', 'RENAL', 'HIPERTENSA', 'ACIDO_PEPT', 'AUTO_IMUNE']
df.CS_SEXO = df.CS_SEXO.apply(lambda x: 0 if x == 'M' else 1)

Há uma relação entre os sintomas que o paciente sente?

Sim, há uma tendência positiva de que os pacientes revelem sentir:

  • Vômito e Náusea
  • Dor nas Costas e Conjuntivite
  • Dor nas Costas e Artrite
  • Dor nas Costas e Artralgia
  • Dor nas Costas e Dor Retroorbital
  • Conjuntivite e Artrite
  • Conjuntivite e Dor Retroorbital

Há uma relação entre as doenças que o paciente possui?

Sim, há uma tendência positiva de que os pacientes tenham:

  • Diabetes e Hipertensão
  • Hepatopatias e Doença Renal Crônica
Code
# Matriz de correlação
disease_correlation = df[disease_columns].corr()
threshold = 0.25
plt.figure(figsize=(15, 12))
sns.heatmap(disease_correlation, annot=True, cmap='coolwarm', fmt='.2f')
plt.show()

Existe uma diferença significativa na incidência de doenças entre homens e mulheres?

Sim, existe!

  • O sintoma cefaleia (dor de cabeça) é mais presente em mulheres do que em homens, com uma diferença de 3.97% (Valor-p = 0.3379);
  • O sintoma de náusea é mais presente nas mulheres do que nos homens, com uma diferença de 4.17% (Valor-p = 0.1668);
  • O sintoma de dor nas costas é mais presente nas mulheres do que nos homens, com uma diferença de 5.34% (Valor-p = 0.0038);
  • O sintoma de artrite também é mais presente nas mulheres do que nos homens, com uma diferença de 3.86% (Valor-p = 0.1090).

A análise revela que a diferença na incidência de dor nas costas entre homens e mulheres é significativa, com um valor-p < 0.05, indicando que as mulheres são mais propensas a relatar esses sintomas do que os homens.

Gênero 0 = Masculino
Gênero 1 = Feminino
O valor 1 dos sintomas significam que o paciente teve o sintoma, o valor 2 indica que o paciente não teve o sintoma.

Code
prop_data = df.groupby('CS_SEXO')["FEBRE"].value_counts(normalize=True).unstack()
prop_data.plot(kind='bar', stacked=True)
plt.title(f'Proporção de FEBRE por Gênero')
plt.xlabel('Gênero')
plt.ylabel('Proporção')

prop_data = df.groupby('CS_SEXO')["NAUSEA"].value_counts(normalize=True).unstack()
prop_data.plot(kind='bar', stacked=True)
plt.title(f'Proporção de NÁUSEA por Gênero')
plt.xlabel('Gênero')
plt.ylabel('Proporção')

prop_data = df.groupby('CS_SEXO')["DOR_COSTAS"].value_counts(normalize=True).unstack()
prop_data.plot(kind='bar', stacked=True)
plt.title(f'Proporção de DOR NAS COSTAS por Gênero')
plt.xlabel('Gênero')
plt.ylabel('Proporção')

prop_data = df.groupby('CS_SEXO')["ARTRITE"].value_counts(normalize=True).unstack()
prop_data.plot(kind='bar', stacked=True)
plt.title(f'Proporção de ARTRITE por Gênero')
plt.xlabel('Gênero')
plt.ylabel('Proporção')

plt.show()

Há alguma relação com a idade?

Sim, as crianças e adolescentes são as pessoas que mais tem casos de dengue, seguidos pelos adultos.

Code
bins = [2000, 4003, 4015, 4025, 4040, 4060, 4080, 9999]
labels = ['Bebê (2000-4003)', '4-15 anos (4004-4015)', '16-25 anos (4016-4025)', '26-40 anos (4026-4040)', '41-60 anos (4041-4060)', '61-80 anos (4061-4080)', '81+ anos (4081+)']

df['Faixa_Etaria'] = pd.cut(df['NU_IDADE_N'], bins=bins, labels=labels, right=True)

# contagem de incidências por faixa etária
faixa_etaria_count = df['Faixa_Etaria'].value_counts().sort_index()
Code
sns.barplot(x=faixa_etaria_count.index, y=faixa_etaria_count.values)
plt.title('Distribuição de Casos de Dengue por Faixa Etária')
plt.xlabel('Faixa Etária')
plt.ylabel('Número de Casos')
plt.xticks(rotation=45) 
plt.show()

Existe uma diferença na taxa de gestantes e seus diferentes níveis de escolaridade?

Não é possível concluir, devido a baixa quantidade de dados das gestantes.