Introdução

Acidente Vascular Cerebral

O Acidente Vascular Cerebral (AVC), também conhecido como derrame cerebral, representa uma grave emergência médica que impacta significativamente a saúde pública global. Segundo a Organização Mundial da Saúde (OMS), o AVC figura como a segunda principal causa de morte no mundo, sendo responsável por 11% dos óbitos anuais . No Brasil, a Sociedade Brasileira de AVC (Sobrave) corrobora essa estatística, classificando o AVC como a segunda maior causa de morte e a principal causa de incapacidade .

A ocorrência do AVC está intimamente relacionada a diversos fatores de risco, como hipertensão arterial, diabetes mellitus, dislipidemia, tabagismo, sedentarismo, consumo excessivo de álcool e histórico familiar da doença . Apesar de poder afetar indivíduos de qualquer idade, a prevalência do AVC aumenta significativamente em pessoas acima de 65 anos, principalmente naquelas com histórico de doenças cardiovasculares .

As consequências do AVC são devastadoras, tanto para o paciente quanto para a sociedade como um todo. Aproximadamente 70% dos indivíduos que sofrem um AVC não conseguem retornar ao trabalho, e 50% tornam-se dependentes de terceiros para realizar atividades básicas do dia a dia . Essa situação gera um impacto socioeconômico significativo, sobrecarregando o sistema de saúde e as famílias dos pacientes.

O tempo é crucial no tratamento do AVC. A chance de recuperação completa do paciente é consideravelmente maior quando o tratamento é iniciado dentro das primeiras três horas após o início dos sintomas . Nesse período, medicamentos trombolíticos podem ser administrados para dissolver coágulos sanguíneos que obstruem o fluxo de sangue para o cérebro, minimizando danos neurológicos irreversíveis.

O diagnóstico precoce e preciso do AVC é fundamental para a aplicação de medidas terapêuticas eficazes. A equipe médica deve estar atenta aos sinais e sintomas clássicos do AVC, como fraqueza ou formigamento súbito em um lado do corpo, dificuldade para falar ou compreender a fala, desvio da boca e perda de visão em um ou ambos os olhos .

A análise de conjuntos de dados, como o Stroke Prediction Dataset, oferece uma oportunidade promissora para aprimorar a compreensão dos fatores de risco do AVC e contribuir para o diagnóstico precoce da doença. Através de técnicas de inteligência artificial e aprendizado de máquina, é possível identificar padrões e correlações entre variáveis clínicas e a ocorrência do AVC, permitindo a criação de modelos preditivos mais precisos .

Essa abordagem pode ser utilizada para:

  • Informar a população em geral sobre os principais fatores de risco do AVC, conscientizando-a sobre a importância da adoção de hábitos saudáveis e da realização de exames preventivos regulares.

  • Auxiliar profissionais de saúde na identificação de pacientes com alto risco de desenvolver AVC, possibilitando a implementação de medidas de intervenção precoce e personalizadas.

  • Otimizar o processo de diagnóstico do AVC, reduzindo o tempo necessário para identificar a doença e iniciar o tratamento adequado.

Origem dos dados

Os dados aqui trabalhados serão provenientes do serviço de Stroke Prediction Dataset fornecido pelo Kagle. O Stroke Prediction Dataset apresenta um total de 5.110 registros, cada um contendo 33 atributos relacionados aos pacientes. Entre as variáveis presentes, podemos destacar:

  • Idade: Um fator crucial para a análise, pois o risco de AVC aumenta significativamente com a idade.

  • Sexo: Homens e mulheres apresentam diferentes predisposições para o desenvolvimento da doença. Hipertensão: A pressão alta é um dos principais fatores de risco para o AVC.

  • Doenças cardíacas: Pacientes com histórico de doenças cardíacas possuem maior risco de sofrer um AVC.

  • Tabagismo: O uso do cigarro é um fator de risco significativo para diversas doenças, incluindo o AVC.

  • Diabetes: O diabetes mellitus pode aumentar o risco de AVC, especialmente quando não controlado.

  • Nível de colesterol: O colesterol alto é um importante fator de risco para doenças cardiovasculares, incluindo o AVC.

  • Consumo de álcool: O consumo excessivo de álcool pode contribuir para o desenvolvimento do AVC.

Compilado a partir de diversas fontes, o dataset oferece uma rica coleção de informações sobre pacientes, permitindo aos pesquisadores explorar os fatores de risco associados à doença e desenvolver ferramentas para auxiliar no diagnóstico precoce.

Pacotes necessários

Os pacotes a seguir são necessários para a execução do código que você verá nesse projeto. Sem eles, o código aqui demonstrado não será executado com sucesso.

Pacotes Utilização
library(rmarkdown) utilizado na conversão de arquivo em R em diversos formatos
library(rmdformats) customização do template gerado pelo rmarkdown
library(knitr) para geração de tabelas
library(dplyr) para manipulação avançada dos DataFrames
library(viridis) para seleção de paleta de cores utilizada nos gráficos
library(ggplot2) para visualização de gráficos

Preparação dos dados

Nessa seção você encontrará com detalhes as operações que foram realizadas para normalizar o dataset.

Carregamento dos dados

Como foi descrito na Introdução, os dados aqui utilizados foram adquiridos juntos ao Kaggle e consistem de processos relacionados a Acidente Vascular Cerebral. Caso você queira baixar esses dados também, eles se encontram nesse link.

Leitura dos arquivos

Inicialmente foi feita a importaçào do Dataset e uma visão geral de como ele estava estruturado, por motivos de ser preciso estar logado no kaggle para o download este foi feito de maneira previa.

# Carregar os pacotes necessários
library(dplyr)
library(readr)

# Leitura dos dados
dados <- read_csv("healthcare-dataset-stroke-data.csv")
## Rows: 5110 Columns: 12
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr (6): gender, ever_married, work_type, Residence_type, bmi, smoking_status
## dbl (6): id, age, hypertension, heart_disease, avg_glucose_level, stroke
## 
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
# Visualizar os primeiros registros
head(dados)

Resumo da base carregada

# Informações resumidas sobre as variáveis de interesse
resumo <- data.frame(
  Variável = c("gender", "age", "hypertension", "heart_disease", "ever_married", "work_type", "Residence_type", "avg_glucose_level", "bmi", "smoking_status", "stroke"),
  Tipo = c("Fator", "Numérico", "Numérico", "Numérico", "Fator", "Fator", "Fator", "Numérico", "Numérico", "Fator", "Fator"),
  Descrição = c("Gênero do paciente", "Idade do paciente", "Hipertensão (0: Não, 1: Sim)", "Doenças cardíacas (0: Não, 1: Sim)", "Já foi casado (Sim, Não)", "Tipo de trabalho (Children, Govt_job, Never_worked, Private, Self-employed)", "Tipo de residência (Rural, Urban)", "Nível médio de glicose no sangue", "Índice de massa corporal", "Status de fumo (formerly smoked, never smoked, smokes, Unknown)", "Teve um AVC (0: Não, 1: Sim)")
)

# Exibir o resumo
knitr::kable(resumo, caption = "Resumo das Variáveis de Interesse")
Resumo das Variáveis de Interesse
Variável Tipo Descrição
gender Fator Gênero do paciente
age Numérico Idade do paciente
hypertension Numérico Hipertensão (0: Não, 1: Sim)
heart_disease Numérico Doenças cardíacas (0: Não, 1: Sim)
ever_married Fator Já foi casado (Sim, Não)
work_type Fator Tipo de trabalho (Children, Govt_job, Never_worked, Private, Self-employed)
Residence_type Fator Tipo de residência (Rural, Urban)
avg_glucose_level Numérico Nível médio de glicose no sangue
bmi Numérico Índice de massa corporal
smoking_status Fator Status de fumo (formerly smoked, never smoked, smokes, Unknown)
stroke Fator Teve um AVC (0: Não, 1: Sim)

Descrição dos Dados

Os dados foram originalmente coletados para prever a ocorrência de Acidente Vascular Cerebral (AVC) com base em várias características clínicas e demográficas dos pacientes. Os dados incluem informações como idade, sexo, doenças pré-existentes e outros fatores que podem influenciar a probabilidade de um AVC. O dataset foi publicado em Kaggle.

  • Propósito Original: Previsão da ocorrência de AVC.
  • Data de Coleta: Não especificado no Kaggle.
  • Número de Variáveis: 12 variáveis.
  • Peculiaridades dos Dados:
    • Valores Ausentes: Alguns valores ausentes na coluna bmi.
    • Variáveis:
      • id: Identificador único do paciente.
      • gender: Gênero do paciente.
      • age: Idade do paciente.
      • hypertension: Se o paciente tem hipertensão.
      • heart_disease: Se o paciente tem doenças cardíacas.
      • ever_married: Se o paciente já foi casado.
      • work_type: Tipo de trabalho do paciente.
      • Residence_type: Tipo de residência do paciente.
      • avg_glucose_level: Nível médio de glicose no sangue.
      • bmi: Índice de massa corporal.
      • smoking_status: Status de fumo do paciente.
      • stroke: Se o paciente teve um AVC.

Conversão para Fator

Algumas variáveis precisam ser convertidas para fatores para facilitar a análise.

# Converter variáveis categóricas para fator
dados$gender <- as.factor(dados$gender)
dados$ever_married <- as.factor(dados$ever_married)
dados$work_type <- as.factor(dados$work_type)
dados$Residence_type <- as.factor(dados$Residence_type)
dados$smoking_status <- as.factor(dados$smoking_status)
dados$stroke <- as.factor(dados$stroke)
dados$bmi <- as.numeric(dados$bmi)

Limpeza dos Dados

A coluna bmi possui valores ausentes que precisam ser tratados. Podemos optar por remover as linhas com valores ausentes ou substituir os valores ausentes por uma medida estatística como a média ou mediana.

# Verificar a quantidade de valores ausentes
sum(is.na(dados$bmi))
## [1] 201
# Substituir valores ausentes pela média do BMI
dados$bmi[is.na(dados$bmi)] <- mean(dados$bmi, na.rm = TRUE)

Conjunto Final dos dados

# Visualizar os primeiros registros do conjunto de dados limpo
head(dados)

Análise Exploratória dos Dados

As análises aqui realizadas serão divididas em tópicos, acompanhadas de sua motivação, para com isso guiar as análises realizadas na base utilizada.

Proporção de Observações com AVC

# Renomear o dataframe para facilitar a leitura do código
StrokePrediction <- dados

# Tabela de proporção de AVC
haveStroke <- table(StrokePrediction$stroke)
haveStrokePrcnt <- round((haveStroke/nrow(StrokePrediction) * 100), 2)

# Labels para o gráfico
lbls <- paste(c("Não", "Sim"), haveStrokePrcnt, "%", sep=" ")

# Gráfico de pizza
library(viridis)
pie(table(StrokePrediction$stroke), labels = lbls, main = "Proporção de Quadros de AVC", col = viridis(2))
legend("topright", legend = c("Pacientes que não apresentaram AVC", "Pacientes que apresentaram AVC"), cex = 0.8, fill = viridis(2))

A partir do gráfico, podemos distinguir que a porcentagem de pessoas com AVC no dataset é aproximadamente:4.87%. A partir disso, podemos tentar identificar se algum parâmetro apresenta uma maior porcentagem de pessoas com AVC do que o normal. Por exemplo, podemos analisar o número de casos de AVC por idade. Primeiramente, vamos verificar se os dados de idade apresentam discrepâncias; para isso, utilizaremos o diagrama de caixa.

Análise da Idade

# Diagrama de caixa de idade por AVC
boxplot(age ~ stroke, data = StrokePrediction, ylab = "Idade", xlab = "AVC (0=Não, 1=Sim)", main = "Dispersão de Idades", col = viridis(2))

# Histograma de idade para casos confirmados de AVC
hist(filter(StrokePrediction, stroke == 1)$age, main = "Histograma de Quadros Confirmados de AVC X Idade", xlab = "Idade", ylab = "Número de Ocorrências", col = viridis(10))

A partir do diagrama de caixa, é possível afirmar que a distribuição de idades do dataset não possui discrepâncias significativas. A maioria dos casos de AVC ocorre a partir dos 30 anos, e o histograma mostra uma concentração em idades mais avançadas.

aux <- StrokePrediction

# Calcular a década de idade arredondada para baixo
aux <- mutate(aux, Decada = (floor(age / 10)) * 10)

# Filtrar casos onde ocorreu AVC (stroke == 1)
agexStrokeT <- aux %>%
  filter(stroke == 1) %>%
  group_by(Decada) %>%
  summarise(Freq = n())

# Calcular o total de casos por década
agexStroke <- aux %>%
  group_by(Decada) %>%
  summarise(Total = n())

# Unir os dados de casos de AVC com o total por década
agexStrokeT <- left_join(agexStrokeT, agexStroke, by = "Decada")

# Calcular a porcentagem de AVC por década de idade
agexStrokeT <- mutate(agexStrokeT, Percentage = (Freq / Total) * 100)

# Plotar usando ggplot2 com a paleta de cores viridis
ggplot(data = agexStrokeT, aes(x = as.factor(Decada), y = Percentage)) +
  geom_line(color = viridis(1), size = 1.2, group = 1) +  # linha conectando os pontos
  geom_point(color = viridis(1), size = 3) +   # pontos de dados
  labs(x = "Idade", y = "Porcentagem de AVC (%)", 
       title = "Porcentagem de AVC por Década de Idade") +
  scale_x_discrete(breaks = unique(agexStrokeT$Decada)) +  # define os intervalos no eixo x
  ylim(0, 30) +  # limite do eixo y
  theme_minimal()  # estilo do tema do gráfico

A partir deste gráfico, podemos perceber que a partir dos 50 anos a chance de ter um AVC é maior do que a média geral dos casos e aumenta com a idade.

Análise Hipertenso

haveHypertension <- filter(StrokePrediction, hypertension == 1)

# Tabela de contagem de AVC por estado de hipertensão
avc_counts <- count(haveHypertension, stroke)

# Calcular porcentagens
avc_counts <- mutate(avc_counts, Percent = round(n / sum(n) * 100, 2))

# Definir os rótulos das categorias
avc_counts$stroke <- factor(avc_counts$stroke, levels = c(0, 1),
                            labels = c("Hipertensos sem quadros de AVC", "Hipertensos com quadros de AVC"))

# Criar o gráfico
ggplot(avc_counts, aes(x = "", y = Percent, fill = stroke)) +
  geom_bar(stat = "identity", width = 1, color = "black") +
  scale_fill_viridis(discrete = TRUE) +
  coord_polar("y", start = 0) +
  labs(x = NULL, y = "Porcentagem", 
       title = "Distribuição de AVC entre Pacientes Hipertensos") +
  theme_minimal() +
  theme(axis.text = element_blank(),
        axis.title = element_blank(),
        panel.grid = element_blank()) +
  geom_text(aes(label = paste0(Percent, "%")), position = position_stack(vjust = 0.5))

A partir deste gráfico, pode-se observar que 13,25% dos hipertensos apresentaram quadros de AVC, o que é quase o triplo da média do total de observações, mas ainda assim é menor que a porcentagem de quadros diagnosticados em pessoas com mais de 70 anos.

Paciêntes com ataques cardíacos

  haveHD <- filter(StrokePrediction, heart_disease==1)
  haveHDPrcnt <- round((table(haveHD$stroke)/nrow(haveHD)*100),2)
  
  lbls<-paste(c("",""),haveHDPrcnt)
  lbls<-paste(lbls,"%",sep="")
  
  pie(table(haveHD$stroke),lbls,main = "Pacientes com histórico de Ataques Cardíacos",col = viridis(2))
  legend("topright",legend = c("Pacientes sem quadros de AVC","Pacientes com quadros de AVC" ), cex = 0.8,fil=viridis(2))

A partir desse gráfico, pode-se observar que 17.03% dos hipertensos apresentaram quadros de AVC, o que é quase quatro vezes a média do total de observações e um pouco maior que a média de casos diagnosticados em pessoas com mais de r 70 anos.

Relação de Solteiros e Casados

# Função para rotular os valores de AVC
stroke_labels <- function(stroke_status) {
  if (stroke_status == 0) {
    return("Sem quadros de AVC")
  } else {
    return("Com quadros de AVC")
  }
}

# Filtrar casos onde o paciente já foi casado
haveEM <- filter(StrokePrediction, ever_married == "Yes")
haveEMPrcnt <- round((table(haveEM$stroke) / nrow(haveEM)) * 100, 2)
dataEM <- data.frame(
  stroke = as.factor(names(haveEMPrcnt)),
  percent = as.numeric(haveEMPrcnt)
)
dataEM$stroke <- factor(dataEM$stroke, levels = c("0", "1"), labels = c("Pacientes Casados sem quadros de AVC", "Pacientes Casados com quadros de AVC"))

# Gráfico de pizza para pacientes casados
p1 <- ggplot(data = dataEM, aes(x = "", y = percent, fill = stroke)) +
  geom_bar(stat = "identity", width = 1, color = "white") +
  coord_polar(theta = "y") +
  scale_fill_viridis(discrete = TRUE, option = "D") + 
  theme_void() +
  theme(legend.position = "top", legend.title = element_blank(), legend.text = element_text(size = 8)) +
  geom_text(aes(label = paste0(percent, "%")), position = position_stack(vjust = 0.5), size = 3) +
  labs(title = "Pacientes Casados")

# Mostrar o gráfico para pacientes casados
print(p1)

# Filtrar casos onde o paciente nunca foi casado
dHaveEM <- filter(StrokePrediction, ever_married == "No")
dHaveEMPrcnt <- round((table(dHaveEM$stroke) / nrow(dHaveEM)) * 100, 2)
dataNoEM <- data.frame(
  stroke = as.factor(names(dHaveEMPrcnt)),
  percent = as.numeric(dHaveEMPrcnt)
)
dataNoEM$stroke <- factor(dataNoEM$stroke, levels = c("0", "1"), labels = c("Pacientes solteiros sem quadros de AVC", "Pacientes solteiros com quadros de AVC"))

# Gráfico de pizza (pie chart) para pacientes solteiros
p2 <- ggplot(data = dataNoEM, aes(x = "", y = percent, fill = stroke)) +
  geom_bar(stat = "identity", width = 1, color = "white") + 
  coord_polar(theta = "y") +
  scale_fill_viridis(discrete = TRUE, option = "D") + 
  theme_void() +  
  theme(legend.position = "top", legend.title = element_blank(), legend.text = element_text(size = 8)) +  
  geom_text(aes(label = paste0(percent, "%")), position = position_stack(vjust = 0.5), size = 3) +
  labs(title = "Pacientes Solteiros")

print(p2)

Embora a incidência média de AVC seja mais alta entre os casados em comparação aos solteiros, a diferença em relação à média geral não justifica um estudo mais aprofundado desse atributo.

Relação entre homens e mullheres

# Preparar dados para distribuição de gênero no estudo
genderPrcnt <- round((table(StrokePrediction$gender) / nrow(StrokePrediction)) * 100, 2)
dataGender <- data.frame(
  gender = names(genderPrcnt),
  percent = as.numeric(genderPrcnt)
)
dataGender$gender <- factor(dataGender$gender, levels = c("Female", "Male", "Other"), labels = c("Mulheres", "Homens", "Outros"))

# Gráfico de barras para distribuição de gênero no estudo
p1 <- ggplot(data = dataGender, aes(x = gender, y = percent, fill = gender)) +
  geom_bar(stat = "identity", color = "white") +
  scale_fill_viridis(discrete = TRUE, option = "D", labels = c("Mulheres", "Homens", "Outros")) +
  theme_minimal() +
  theme(legend.position = "top", legend.title = element_blank()) +
  labs(title = "Distribuição de Gêneros no Estudo", x = "Gênero", y = "Percentual") +
  geom_text(aes(label = paste0(percent, "%")), vjust = -0.5, size = 3.5)

# Mostrar o gráfico de barras para distribuição de gênero
print(p1)

# Preparar dados para distribuição de gênero entre os casos de AVC
genderXStroke <- filter(StrokePrediction, stroke == 1)
genderXStrokePrcnt <- round((table(genderXStroke$gender) / nrow(genderXStroke)) * 100, 2)
dataGenderXStroke <- data.frame(
  gender = names(genderXStrokePrcnt),
  percent = as.numeric(genderXStrokePrcnt)
)
dataGenderXStroke$gender <- factor(dataGenderXStroke$gender, levels = c("Female", "Male", "Other"), labels = c("Mulheres", "Homens", "Outros"))

# Gráfico de barras para distribuição de gênero entre os casos de AVC
p2 <- ggplot(data = dataGenderXStroke, aes(x = gender, y = percent, fill = gender)) +
  geom_bar(stat = "identity", color = "white") +
  scale_fill_viridis(discrete = TRUE, option = "D", labels = c("Mulheres", "Homens", "Outros")) +
  theme_minimal() +
  theme(legend.position = "top", legend.title = element_blank()) +
  labs(title = "Distribuição de Gêneros entre os Casos de AVC", x = "Gênero", y = "Percentual") +
  geom_text(aes(label = paste0(percent, "%")), vjust = -0.5, size = 3.5)

# Mostrar o gráfico de barras para distribuição de gênero entre os casos de AVC
print(p2)

A distribuição de gênero no conjunto de dados e entre os casos confirmados de AVC são muito semelhantes, indicando que não há uma diferença substancial de gênero na ocorrência de AVC.

Tipo de trabalho

# Filtrar os dados para casos confirmados de AVC
stroke_cases <- filter(StrokePrediction, stroke == 1)

# Criar uma tabela de frequência para os tipos de trabalho
work_type_counts <- table(stroke_cases$work_type)
work_type_df <- as.data.frame(work_type_counts)
colnames(work_type_df) <- c("work_type", "count")

# Mapeamento dos tipos de trabalho para português
work_type_df$work_type <- factor(work_type_df$work_type, 
                                 levels = c("children", "Govt_job", "Never_worked", "Private", "Self-employed"), 
                                 labels = c("Crianças", "Funcionário Público", "Nunca Trabalhou", "Privado", "Autônomo"))

# Criar o gráfico de barras com ggplot2 e viridis
p <- ggplot(data = work_type_df, aes(x = work_type, y = count, fill = work_type)) +
  geom_bar(stat = "identity", color = "white") +
  scale_fill_viridis(discrete = TRUE, option = "D") +
  theme_minimal() +
  theme(legend.position = "none") +
  labs(title = "Tipo de Trabalho de Pacientes com Quadros de AVC Confirmados", 
       x = "Tipo de Trabalho", y = "Número de Casos") +
  geom_text(aes(label = count), vjust = -0.5, size = 3.5)

# Mostrar o gráfico
print(p)

A distribuição dos casos de AVC confirmados sugere uma possível associação com o tipo de trabalho. Observa-se um número significativo de casos entre trabalhadores do setor privado (149) e autônomos (65), além de casos entre funcionários públicos (33). Esses dados indicam que o tipo de trabalho pode ser um fator relevante a considerar, especialmente em ocupações que possam envolver maior estresse ou carga horária intensa.

AVC e Glicose

# Filtrar os dados para casos confirmados de AVC
stroke_cases <- filter(StrokePrediction, stroke == 1)

# Criar o histograma com ggplot2 e viridis
p <- ggplot(stroke_cases, aes(x = avg_glucose_level)) +
  geom_histogram(bins = 30, fill = viridis(1), color = "white", alpha = 0.8) +
  labs(title = "Histograma de Quadros Confirmados de AVC x Média de Glicose",
       x = "Nível Médio de Glicose", y = "Número de Ocorrências") +
  theme_minimal()

# Mostrar o gráfico
print(p)

O gráfico revela que os níveis de glicose estão predominantemente próximos a valores considerados aceitáveis, em vez de muito elevados. Isso sugere que altos níveis de glicose não são um fator significativo no aumento do risco de AVC.

AVC e IMC

# Filtrar os dados para casos confirmados de AVC
stroke_cases <- filter(StrokePrediction, stroke == 1)

# Criar o histograma com ggplot2 e viridis
p <- ggplot(stroke_cases, aes(x = bmi)) +
  geom_histogram(bins = 30, fill = viridis(1), color = "white", alpha = 0.8) +
  labs(title = "Histograma de Quadros Confirmados de AVC x IMC",
       x = "IMC", y = "Número de Ocorrências") +
  theme_minimal()

# Mostrar o gráfico
print(p)

# Criar dados para o gráfico
imc_levels <- c("Abaixo do peso", "Peso normal", "Sobrepeso", "Obesidade")
imc_range <- c("< 18.5", "18.5 - 24.9", "25 - 29.9", ">= 30")

# Criar um data frame com as categorias de IMC e obesidade
imc_data <- data.frame(imc_levels, imc_range)

# Reordenar os níveis de imc_range para a ordem desejada
imc_data$imc_range <- factor(imc_data$imc_range, levels = c("< 18.5", "18.5 - 24.9", "25 - 29.9", ">= 30"))

# Criar o gráfico de barras com ggplot2
p <- ggplot(imc_data, aes(x = imc_range, y = imc_levels, fill = imc_levels)) +
  geom_bar(stat = "identity", color = "black") +
  scale_fill_viridis_d(option = "D", begin = 0.1, end = 0.9) +
  labs(title = "Classificação de IMC e Obesidade",
       x = "IMC",
       y = "Classificação") +
  theme_minimal() +
  theme(axis.text.x = element_text(angle = 45, hjust = 1))

# Mostrar o gráfico
print(p)

Conforme observado nos gráficos, a maior incidência de AVC está concentrada em indivíduos classificados como sobrepeso ou obesos, destacando a relevância desses fatores de saúde na ocorrência desses eventos.

Conclusão

A partir dos dados apresentados nos gráficos e análises, podemos destacar alguns insights relevantes sobre a ocorrência de AVC no dataset. Inicialmente, observamos que a porcentagem geral de casos de AVC é aproximadamente 4,87%, o que nos permite investigar parâmetros que possam apresentar uma incidência maior do que a média. Ao analisar a idade dos pacientes, verificamos que a distribuição não mostra discrepâncias significativas; no entanto, a maioria dos casos de AVC ocorre em indivíduos a partir dos 30 anos, com um aumento significativo após os 50 anos, indicando um aumento do risco com a idade.

Além disso, observamos que a hipertensão apresenta uma taxa de 13,25% de casos de AVC, quase três vezes a média geral. Essa taxa é ainda mais elevada em pessoas com mais de 70 anos, destacando a correlação entre idade avançada e incidência de AVC. Em relação ao estado civil, embora haja uma incidência maior entre os casados em comparação aos solteiros, essa diferença não é suficiente para justificar um estudo mais aprofundado desse atributo.

Quanto ao gênero, tanto a distribuição no dataset quanto entre os casos confirmados de AVC são semelhantes, sugerindo que não há uma disparidade significativa na ocorrência de AVC entre homens e mulheres. Já em relação ao tipo de trabalho, observamos um número considerável de casos entre trabalhadores do setor privado e autônomos, além de funcionários públicos, indicando que o ambiente de trabalho pode ser um fator relevante, especialmente em ocupações que possam envolver maior estresse ou carga intensa.

Finalmente, os níveis de glicose mostram uma predominância em valores aceitáveis, sugerindo que altos níveis de glicose não são um fator de risco significativo para AVC. Por outro lado, a maior incidência de AVC entre indivíduos classificados como sobrepeso ou obesos destaca a importância desses fatores de saúde na predisposição a esses eventos.

Embora esta análise tenha sido útil para os propósitos de um projeto de Análise de Dados em um período limitado, é importante ressaltar que a origem deste conjunto de dados não é confirmada. Para uma análise mais aprofundada e precisa, seria preferível utilizar um conjunto de dados coletado em colaboração com uma organização de saúde, de maneira sistemática. Além disso, seria essencial realizar uma análise mais profunda das interações entre os diferentes atributos.

Referências

Organization (2022b) Organization (2022a) Disease Control and Prevention (2023)

Disease Control, Centers for, and Prevention. 2023. “Stroke Risk Factors.” Cdc.gov. https://www.cdc.gov/stroke/risk-factors/index.html.
Organization, World Health. 2022a. “Noncommunicable Diseases (NCDs).” Who.int. https://www.who.int/news-room/fact-sheets/detail/noncommunicable-diseases.
———. 2022b. “The Top 10 Causes of Death: Fact Sheets.” Who.int. https://www.who.int/news-room/fact-sheets/detail/the-top-10-causes-of-death.