O banco de dados é sobre um conjunto de dados de doenças cardiovasculares, com as seguintes variáveis:

Fonte do Banco de dados: Cardiovascular Disease dataset

Disponível em: https://www.kaggle.com/datasets/sulianova/cardiovascular-disease-dataset

  1. Qualitativas

    Nominais ( não existe ordenação dentre as categorias)

    • Gênero
    • Doença Cardíaca
  2. Quantitativas Cotínuas (características mensuráveis que assumem valores em uma escala contínua )

    • mcolesterol (nível de colesterol mg/dl)
    • Pressão Arterial Sistólica (mmHg)

Bibliotecas Utilizadas na Análise

# Bibliotecas utilizadas 

library(dplyr)      # para quadros e tabelas                              
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(rstatix)    # para análises estatísticas                             
## Warning: package 'rstatix' was built under R version 4.3.3
## 
## Attaching package: 'rstatix'
## The following object is masked from 'package:stats':
## 
##     filter
library(emmeans)    # para análises estatísticas
library(ggplot2)    # plotagem de gráficos
library(knitr)      # para personalizar os estilos
## Warning: package 'knitr' was built under R version 4.3.3
library(kableExtra) # para as tabelas  
## Warning: package 'kableExtra' was built under R version 4.3.3
## 
## Attaching package: 'kableExtra'
## The following object is masked from 'package:dplyr':
## 
##     group_rows
library(htmltools)  # para o relatório em html
library(readxl)     # para ler tabelas em xls
library(rmarkdown)  # usado no relatório

Lendo os dados

# Lendo os dados

dados <- read_xlsx("cardio_exploratoria_inf_est_2021c.xlsx") 

Tabela 1: Banco de Dados Utilizados

paged_table(dados)  # coloca a tabela em uma caixa interativa para visualização dos dados
 #DT::datatable(dados)

Análise Univariada

Variáveis Qualitativas

Variável: Gênero

# Variável : Gênero

genero      <- dados$Gênero

# frequência absoluta

tab1 <- table(genero) 
#tab1

# frequência percen
tab2 <- prop.table(table(genero))
#tab2

# tab com frequencia relativa
tab3 <- prop.table(table(genero))*100
#tab3


# Criando a tabela de frequências

tabfreq1 <- matrix(c(tab1,tab2,tab3), nrow = 2, ncol = 3)
#tabfreq1


# acrescentar cabeçalho e coluna indicadora

colnames(tabfreq1) <-c("frequência absoluta   ", "frequência relativa   ", "frequência percentual   ")
rownames(tabfreq1) <-c("Feminino", "Masculino")

tabfreq1
##           frequência absoluta    frequência relativa   
## Feminino                     326              0.3614191
## Masculino                    576              0.6385809
##           frequência percentual   
## Feminino                  36.14191
## Masculino                 63.85809
# Construindo Grá

# Construindo Gráfico de Barras Verticais
genero <-dados$Gênero
tab1 <- table(genero)
barplot(tab1, ylab = "Pessoas", xlab = "Gênero", ylim = c(0,700),main = "Gênero", col=rgb(0.2,0.4,0.6,0.4))

`

# Construindo Gráfico de Pizza Personalizado 

percent = round(tab3,2) # ajustanto a tab3 com 2 casas decimais
rotulo=paste(c("Feminino","Masculino")," (",percent,"%",")",sep="")   # criando um rótulo que expresse as %
pie(tab3,labels = rotulo  ,main = "Gênero", col = c("#B0E2FF", "#FF6347"))

Variável: Doença Cardíaca

cardiaca     <- dados$`Possui Doença Cardíaca`



# Criando as primeiras tabelas :)

# frequência absoluta

tab4 <- table(cardiaca) 
#tab4

# frequência percen
tab5 <- prop.table(table(cardiaca))
#tab5

# tab com frequencia relativa
tab6 <- prop.table(table(cardiaca))*100
#tab6


# Criando a tabela de frequências

tabfreq2 <- matrix(c(tab4,tab5,tab6), nrow = 2, ncol = 3)
#tabfreq2


# acrescentar cabeçalho e coluna indicadora

colnames(tabfreq2) <-c("frequência absoluta   ", "frequência relativa   ", "frequência percentual   ")
rownames(tabfreq2) <-c("Sim", "Não")

tabfreq2
##     frequência absoluta    frequência relativa    frequência percentual   
## Sim                    247              0.2738359                 27.38359
## Não                    655              0.7261641                 72.61641
# Construindo Gráfico de Barras Verticais

tab7 <- table(cardiaca)
barplot(tab4, ylab = "Pessoas", xlab = " Doença Cardíaca",main = "Doença Cardíaca", ylim = c(0,700), col=rgb(0.2,0.4,0.6,0.4))

# Construindo Gráfico de Pizza Personalizado 



percent23 = round(tab6,2) # ajustanto  com 2 casas decimais
rotulo2=paste(dados$`Possui Doença Cardíaca`," (",percent23,"%",")",sep="")   # criando um rótulo que expresse as %
pie(tab6,labels = rotulo2  ,main = "Doença Cardíaca", col = c("#B0E2FF", "#FF6347"))

Variáveis Quantitativas

Variável: Pressão Arterial Sistólica PAS (mmHg)

A pressão arterial sistólica (PAS), também conhecida como “pressão máxima”, se refere à pressão do sangue no momento que o coração se contrai para impulsionar o sangue para as artérias. Quanto mais o coração se contrai, maior é a pressão sistólica.

Segundo estudos, a hipertensão sistólica apresenta uma relação mais direta com problemas cardiovasculares. No entanto, a pressão diastólica não deve ser subestimada, pois também é capaz de identificar resultados negativos. A pesquisa analisou mais de 1,3 milhão de pacientes ambulatoriais.

A pressão arterial é medida em milímetros de mercúrio (mm Hg) porque o primeiro instrumento usado para medir pressão foi uma coluna de mercúrio.

Fonte: CARNEIRO, Gláucia et al. Influência da distribuição da gordura corporal sobre a prevalência de hipertensão arterial e outros fatores de risco cardiovascular em indivíduos obesos. Revista da associação médica brasileira, v. 49, p. 306-311, 2003.

Resumos

PAS       <- dados$` Pressão Arterial Sistólica (mmHg)`


summary(PAS)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   114.0   132.0   149.0   148.2   162.0   202.0

Como medidas de resumos obtemos o menor valor de 114.0 indo até 202.0, com uma média de 148.2 e mediana 149.0.

Desvio Padrão

#
#variavel quantitativa
#medidas descritivas

PAS       <- dados$` Pressão Arterial Sistólica (mmHg)`

sd(PAS)
## [1] 20.41203

Um baixo desvio indica que os dados estão próximos da média ou do valor esperado. Já um alto desvio padrão, indica que os dados estão espalhados por uma ampla gama de valores.

\[s=(√s2)=20.41203\]

O desvio padrão serve para medir a dispersão dos dados, ou seja, mede o quanto os dados se afastam da média. Nesse contexto, obteve-se “s=6.95791”.

Assimetria

PAS       <- dados$` Pressão Arterial Sistólica (mmHg)`
library(e1071)
## Warning: package 'e1071' was built under R version 4.3.3
skewness(PAS)
## [1] 0.233912

A assimetria mede a assimetria das caudas da distribuição. Distribuições assimétricas que tem uma cauda mais “pesada” que a outra apresentam obliquidade. Distribuições simétricas tem obliquidade zero.

knitr::include_graphics("assimetris.png")

Tipos de Assimetria

Se v>0, então a distribuição tem uma cauda direita (valores acima da média) mais pesada Se v<0, então a distribuição tem uma cauda esquerda (valores abaixo da média) mais pesada Se v=0, então a distribuição é aproximadamente simétrica (na terceira potência do desvio em relação à média).

No caso da variável “Pressão Arterial Sistólica” obtemos v = 0.233912 ou seja a cauda direita mais pesada, uma assimetria positiva.

Curtose A curtose é uma medida de forma que caracteriza o achatamento da curva da função de distribuição de probabilidade.

Se o valor da curtose for = 0 (ou 3, pela segunda definição), então tem o mesmo achatamento que a distribuição normal. Chama-se a estas funções de mesocúrticas. Se o valor é > 0 (ou > 3), então a distribuição em questão é mais alta (afunilada) e concentrada que a distribuição normal. Diz-se que esta função probabilidade é leptocúrtica, ou que a distribuição tem caudas pesadas (o significado é que é relativamente fácil obter valores que não se aproximam da média a vários múltiplos do desvio padrão). Se o valor é < 0 (ou < 3), então a função de distribuição é mais “achatada” que a distribuição normal. Chama-se-lhe platicúrtica.

knitr::include_graphics("baixados.png")

PAS<- dados$` Pressão Arterial Sistólica (mmHg)`

library(e1071)
kurtosis(PAS)
## [1] -0.6582228

Nesta análise obteve-se o valor de -0.6582228, ou seja platicúrtica.

Histograma

Conforme os valores econtrados acima, o histograma obtido é o seguinte:

#histograma


PAS       <- dados$` Pressão Arterial Sistólica (mmHg)`
hist(PAS,main="Histograma da Pressão Arterial Sistólica",xlab="Pressão arterial sistólica | PAS (mmHg)",ylab="Frequência",col=rgb(0.2,0.4,0.6,0.4))

Se observa uma assimetria positiva com uma curtose negativa.

Boxplot

PAS       <- dados$` Pressão Arterial Sistólica (mmHg)`
boxplot(PAS,main="Boxplot da Pressão Arterial Sistólica",ylab="Pressão arterial sistólica | PAS (mmHg)",col=rgb(0.2,0.4,0.6,0.4))

No Boxplot se observa a variabilidade de valores entre 114 e 202 , com uma concentração maior entre 130 e 163.

Variável: Colesterol

As gorduras trans são frequentemente encontradas em alimentos industrializados. De acordo com o Instituto Brasileiro de Defesa do Consumidor (Idec), a gordura trans pode ocorrer naturalmente ou ser produzida por meio de processos tecnológicos. Ainda de acordo com o Instituto, “para a sua produção, o óleo líquido é transformado em gordura sólida, conferindo, por um baixo custo, maior crocância, sabor e prazo de validade aos produtos”. As gorduras trans podem causar danos à nossa saúde, estando relacionadas, principalmente, com o desenvolvimento de doenças cardiovasculares, como aterosclerose, infarto e derrame. Essas gorduras são responsáveis por elevar o nível de LDL, uma lipoproteína conhecida também como “colesterol ruim”, e abaixar os níveis de HDL, o “colesterol bom”.

Resumos

mColesterol <- dados$mColesterol


summary(mColesterol)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   139.0   218.0   246.0   250.5   282.0   417.0

Como medidas de resumos obtemos o menor valor de139.0 indo até 417.0, com uma média de 250.5 e mediana 246.0.

Desvio Padrão

#
#variavel quantitativa
#medidas descritivas



sd(mColesterol)
## [1] 48.32541

\[s=(√s2)=48.32541\] O desvio padrão serve para medir a dispersão dos dados, ou seja, mede o quanto os dados se afastam da média. Nesse contexto, obteve-se “s=48.32541”, teve um maior desvio entre os valore que a variável anterior.

Assimetria

skewness(mColesterol)
## [1] 0.5377508

No caso da variável “colesterol” obtemos v = 0.5377508 ou seja a cauda direita mais pesada, uma assimetria positiva.

Curtose

kurtosis(mColesterol)
## [1] 0.4461423

Nesta análise obteve-se o valor de 0.4461423, ou seja mesocúrticas.

Histograma

Conforme os valores econtrados acima, o histograma obtido é o seguinte:

#histograma


mColesterol <- dados$mColesterol
hist(mColesterol,main="Histograma do Colesterol ",xlab="Colesterol (mg/dl)",ylab="Frequência",col=rgb(0.2,0.4,0.6,0.4))

Se observa uma distribuição mais próxima da normal.

BoxPlot

#boxplot

boxplot(mColesterol,main="Boxplot de Colesterol",ylab="Colesterol (mg/dl)",col=rgb(0.2,0.4,0.6,0.4))

No Boxplot se observa a variabilidade de valores entre 139 e 350 , com uma concentração maior entre 220 e 290 com a presença de outliers.

Análise Bivariada

Análise Bivariada Quantitativa

O colesterol alto é um fator de risco para doenças cardiovasculares. O LDL elevado pode acarretar a aterosclerose, um acúmulo de gordura nas paredes das artérias que dificulta a passagem do sangue e a irrigação do coração.

O colesterol é uma das principais causas das doenças coronárias. Cerca de 40% dos brasileiros têm colesterol alto. Entre os jovens, de 12 a 17 anos, a taxa é de 20%*.

knitr::include_graphics("baixados (1).png")

## Correlação

Como nossas variáveis não apresentam distribuição normal concomitantemente, o que é preciso para o coeficiente de Pearson nós podemos averiguar a correlação pelo coeficiente de Spearman.

O coeficiente de correlação de Spearman é uma medida não paramétrica da correlação de postos (dependência estatística do ranking entre duas variáveis).

cor(PAS, mColesterol, method = "spearman")
## [1] 0.8345889

\[ρ=0.8345889\]

Nesta análise obetmos um coeficiente igual a 0.8345889, o que indica umaforte relação entre as variáveis PAS e cOlesterol, esse comportamento pode ser observado no seguinte gráfico.

plot(PAS,mColesterol,col=c("#000080"),main="Relação Colesterol e PAS",xlab =" Pressão arterial sistólica | PAS (mmHg)", ylab="Colesterol (mg/dl)")

Como pode ser averiguado, existe uma forte relação entre as variáveis bem como uma tendência de aumento.

Análise Bivariada Qualitativa

Gênero e Doenças Cardíacas

Teste Qui Quadrado

É um teste de hipóteses que se destina a encontrar um valor da dispersão para duas variáveis e avaliar a associação existente entre variáveis qualitativas. É um TESTE NÃO PARAMÉTRICO: não depende de parâmetros populacionais (média e variância). O princípio básico deste teste é comparar proporções, ou seja, possíveis divergências entre as frequências observadas e esperadas para um certo evento

# tabela de contingência

genero <- dados$Gênero
cardiaca <- dados$`Possui Doença Cardíaca`

tabcontf <- table(genero, cardiaca)
tabcontf
##            cardiaca
## genero      Não Sim
##   Femino    190 136
##   Masculino  57 519
tabcontporcf <- prop.table(table(genero, cardiaca))*100

tabcontporcf
##            cardiaca
## genero           Não      Sim
##   Femino    21.06430 15.07761
##   Masculino  6.31929 57.53880
colSums(tabcontf)
## Não Sim 
## 247 655
rowSums(tabcontf)
##    Femino Masculino 
##       326       576

Teste Qui-quadrado

X-Square=24.68 df=1 <2.e-16 O valor de p é bem menor do que 0.05, ou seja, isso indica que existe uma associação significativa entre as variáveis analisadas (gênero e doença cardíaca). Para a interpretar esse resultados pode-se ver as tabelas criadas.

cardiaca     <- dados$`Possui Doença Cardíaca`
exerfis     <- dados$Gênero


tabcont4 <- table(exerfis, cardiaca)
tabcont4
##            cardiaca
## exerfis     Não Sim
##   Femino    190 136
##   Masculino  57 519
tabcontporc4 <- prop.table(table(exerfis, cardiaca))*100
colSums(tabcont4)
## Não Sim 
## 247 655
rowSums(tabcont4)
##    Femino Masculino 
##       326       576
dt3 <- tabcont4[1:2,1:2]
kbl(dt3, booktabs = T, caption = "Tabela de Contingência") %>%
  kable_styling(latex_options = c("striped", "hold_position"),
                full_width = F) %>%
  add_header_above(c(" ", "Doença Cardíaca" = 2)) %>%
  pack_rows("Gênero", 1, 2) %>%
  footnote(c("tabela de contingência"))
Tabela de Contingência
Doença Cardíaca
Não Sim
Gênero
Femino 190 136
Masculino 57 519
Note:
tabela de contingência

Com a visualização das tabelas se percebe que 57.54% pessoas do sexo masculino possuem doença cardíaca enquanto que apenas 15.08 % das pessoas do sexo feminino.

Analise Bivariada Quanti-qualitativa

quantile(PAS)
##   0%  25%  50%  75% 100% 
##  114  132  149  162  202
PAS.cl <- cut(PAS,quantile(PAS))
gen.PAS <- table(genero,PAS.cl)
prop.table(gen.PAS,margin = 1)
##            PAS.cl
## genero      (114,132] (132,149] (149,162] (162,202]
##   Femino    0.2546584 0.2453416 0.2795031 0.2204969
##   Masculino 0.2425308 0.2583480 0.2583480 0.2407733

Na tabela acima se observa uma leve concentração de pessoas do sexo feminio com Pressão Arterial Sistólica entre 149 a 162 mmHg e do sexo masculino entre 132 a 162 mmHg.

boxplot(PAS ~ genero,main="Boxplot de relação entre Gênero e PAS",ylab="Pressão arterial sistólica | PAS (mmHg)",xlab = "Gênero", col=rgb(0.2,0.4,0.6,0.4))

#table(PAS,genero)

grafico <- ggplot(dados, aes(x = PAS, fill=genero))
grafico + geom_bar(position='dodge')