Na base de dados comorbidades.csv
, são apresentados dados reais de uma amostra obtida do seade-R (Fonte dos dados originais: https://github.com/seade-R/dados-covid-sp). Essa base de dados contém as seguintes informações sobre pacientes que foram internados com diagnóstico de COVID-19 entre fevereiro de 2020 e maio de 2021:
As observações com dados faltantes foram excluídas da base original para esta análise específica, considerando que essa exclusão não afeta a representatividade da amostra.
Descreva por meio de gráficos a associação entre idade e óbito, e repita para sexo e óbito.
Considere então as comorbidades: asma, cardiopatia, diabetes, doença renal e obesidade e investigue a associação de cada uma delas com a variável óbito.
Note que algumas variáveis estão codificadas em 0 e 1 mas são qualitativas. Fique atento à forma de analisar a associação entre duas variáveis qualitativas.
Comente os resultados obtidos, observando que não é possível concluir estatisticamente se existe ou não associação entre as variáveis apenas com análise exploratória.
import numpy as np
import pandas as pd
import plotly.express as px
import plotly.graph_objects as go
import statsmodels.api as sm
from scipy import stats
# Definindo algumas opções do bandas para melhorar a qualidade do pdf exportado
pd.set_option('display.notebook_repr_html', True)
def _repr_latex_(self):
return "\centering{%s}" % self.to_latex()
pd.DataFrame._repr_latex_ = _repr_latex_ # monkey patch pandas DataFrame
# opções do plotly, comuns a todos os gráficos
chart_options = dict(margin=dict(l=0, r=0), legend=dict(title='', y=0.99, x=0.995, xanchor='right'), height=700, font_size=16)
df = pd.read_csv('comorbidades.csv')
# agrupando as idades por faixas etárias, de 5 em 5 anos
faixas_de_idade = np.arange(0, 150, 5, dtype='int')
df['faixa_etaria'] = pd.cut(df['idade'], faixas_de_idade)
# dicionário para renomear as colunas de óbitos na exibição
rotulos_obitos = {0: 'Recuperados', 1: 'Óbitos'}
Ao realizar essa observação, as idades foram agrupadas de 5 em 5 anos, para não poluir demais os gráficos.
# utiliza a crosstab para cruzar as faixas etárias com o número de óbitos
tabela_faixa_etaria = pd.crosstab(index=df['faixa_etaria'], columns=df['obito'])
# algumas alterações para permitir e melhorar a visualização da tabela
tabela_faixa_etaria.index = tabela_faixa_etaria.index.astype(str)
tabela_faixa_etaria.index.name = 'faixa_etaria'
tabela_faixa_etaria = tabela_faixa_etaria.rename(columns=rotulos_obitos)
# plota o gráfico
fig = px.bar(tabela_faixa_etaria, title="Casos por faixa etária")
fig.update_layout(barmode='stack', bargap=0.01, **chart_options)
fig.update_yaxes(title='')
fig.update_xaxes(title='Faixa etária')
fig.show()