Departamento de Estatística
Profª. Thais Carvalho
Computação em Estatística 1 - 1º/2024
Beatriz Carlos Mendes - Matrícula: 241035010

Lista 2 - Gráficos

O banco de dados heart.csv apresenta as variáveis listadas abaixo que serão utlizadas para a análise desse relatório.

1.1 Banco de dados heart

A seguir estão expressas as seis primeiras linhas do banco de dados com a utilização da função head().

setwd("C:/Users/Samsung-PC/Documents/Estatística/CE1/LISTAS")
head (read.csv("heart.csv"))
##   age sex cp trestbps chol fbs restecg thalach exang oldpeak slope ca thal
## 1  63   1  3      145  233   1       0     150     0     2.3     0  0    1
## 2  37   1  2      130  250   0       1     187     0     3.5     0  0    2
## 3  41   0  1      130  204   0       0     172     0     1.4     2  0    2
## 4  56   1  1      120  236   0       1     178     0     0.8     2  0    2
## 5  57   0  0      120  354   0       1     163     1     0.6     2  0    2
## 6  57   1  0      140  192   0       1     148     0     0.4     1  0    1
##   target
## 1      1
## 2      1
## 3      1
## 4      1
## 5      1
## 6      1
dados <- read.csv("heart.csv")

1.2 Alterando os níveis da variável sex

Para facilitar a compreensão das informações, as letras F e M foram atribuídas na coluna sex, para indicar os gêneros masculino e feminino, substituindo os dados 0 e 1.

  • 0 = F
  • 1 = M
dados$sex <- as.factor(dados$sex)
levels(dados$sex) <- c("F", "M")
head(dados$sex)
## [1] M M F M F M
## Levels: F M

1.3 Gráfico Idade x Colesterol

O gráfico a seguir relaciona os dados da idade e do colesterol. Para a construção do gráfico foi utilizada a biblioteca ggplo2disponível no RStudio.

library(ggplot2)
ggplot(dados) + geom_point(aes(x = dados$age, y = dados$chol, color = dados$sex)) 
## Warning: Use of `dados$age` is discouraged.
## ℹ Use `age` instead.
## Warning: Use of `dados$chol` is discouraged.
## ℹ Use `chol` instead.
## Warning: Use of `dados$sex` is discouraged.
## ℹ Use `sex` instead.

Após a análise do gráfico percebe-se que há uma grande quantidade de homens com idade entre 40 e 60 anos com a taxa de colesterol entre 200 e 300.

1.4 Aperfeiçoando o gráfico Colesterol x Idade

Para uma melhor visualização dos dados é necessário que algumas modificações sejam feitas na estética do gráfico.

clplot <- ggplot(dados) + geom_point(aes(x = dados$age, y = dados$chol, color = dados$sex))
clplot + ggtitle("Colesterol x Idade") + xlab("Idade") + ylab("Colesterol") + scale_color_discrete(name = "Gênero") + theme_bw()
## Warning: Use of `dados$age` is discouraged.
## ℹ Use `age` instead.
## Warning: Use of `dados$chol` is discouraged.
## ℹ Use `chol` instead.
## Warning: Use of `dados$sex` is discouraged.
## ℹ Use `sex` instead.

1.5 Relação entre os dados de Colesterol e Gênero

Para determinar a média e o desvio padrão do colesterol por sexo foi utilizada a biblioteca dplyr.

library(dplyr)
## 
## Anexando pacote: 'dplyr'
## Os seguintes objetos são mascarados por 'package:stats':
## 
##     filter, lag
## Os seguintes objetos são mascarados por 'package:base':
## 
##     intersect, setdiff, setequal, union
dados2 <- data.frame( sex = c(dados$sex), chol  = c(dados$chol))
media_por_categoria <- dados2%>% group_by(sex) %>% summarise(media_chol  =mean(chol))
print(media_por_categoria)
## # A tibble: 2 × 2
##   sex   media_chol
##   <fct>      <dbl>
## 1 F           261.
## 2 M           239.
desvio_padrao_por_categoria <- dados2%>% group_by(sex) %>% summarise(sd_chol  =sd(chol))
print(desvio_padrao_por_categoria)
## # A tibble: 2 × 2
##   sex   sd_chol
##   <fct>   <dbl>
## 1 F        65.1
## 2 M        42.8

A partir da média obtida percebe-se um valor que destoa da análise inicial realizada no tópico 1.4, de forma que a média obtida no gênero feminino (F) é superior a obtida no gênero masculino (M).

1.6 Gráfico Boxplot - Colesterol x Gênero

ggplot(dados, aes (x = reorder(dados$sex, dados$chol), y = dados$chol)) + geom_boxplot() + 
  ggtitle("Colesterol x Gênero") +xlab("Gênero") + ylab("Colesterol") + theme_bw()
## Warning: Use of `dados$sex` is discouraged.
## ℹ Use `sex` instead.
## Warning: Use of `dados$chol` is discouraged.
## ℹ Use `chol` instead.
## Use of `dados$chol` is discouraged.
## ℹ Use `chol` instead.

Com base no boxplot comparativo é possível inferir que o valor do colesterol do gênero feminino apresenta maior variabalidade do que o masculino, além de uma mediana maior.

1.7 Criação do novo banco de dados hear_less_50

O banco de dados heart_less_50 apresentado a seguir contém os dados apenas de indíviduos com menos de 50 anos de idades.

heart_less_50 <- dados[dados$age < 50,]
head(heart_less_50)
##    age sex cp trestbps chol fbs restecg thalach exang oldpeak slope ca thal
## 2   37   M  2      130  250   0       1     187     0     3.5     0  0    2
## 3   41   F  1      130  204   0       0     172     0     1.4     2  0    2
## 8   44   M  1      120  263   0       1     173     0     0.0     2  0    3
## 12  48   F  2      130  275   0       1     139     0     0.2     2  0    2
## 13  49   M  1      130  266   0       1     171     0     0.6     2  0    2
## 19  43   M  0      150  247   0       1     171     0     1.5     2  0    2
##    target
## 2       1
## 3       1
## 8       1
## 12      1
## 13      1
## 19      1

Um gráfico boxplot foi criado para o novo banco de dados.

ggplot(heart_less_50, aes (x = reorder(heart_less_50$sex, heart_less_50$chol), y = heart_less_50$chol)) + geom_boxplot() + 
  ggtitle("Colesterol x Gênero") +xlab("Gênero") + ylab("Colesterol") + theme_bw()
## Warning: Use of `heart_less_50$sex` is discouraged.
## ℹ Use `sex` instead.
## Warning: Use of `heart_less_50$chol` is discouraged.
## ℹ Use `chol` instead.
## Use of `heart_less_50$chol` is discouraged.
## ℹ Use `chol` instead.

Observa-se que os indivíduos do gênero masculino abaixo dos 50 anos de idade apresentam maior mediana quando comparado com os indivíduos do gênero feminino.

1.8 Gráfico Dor no peito x Gênero

dados$cp <- as.factor(dados$cp)
ggplot(dados, aes(x = dados$sex))+geom_bar(aes(fill = dados$cp), position = "stack") +
  ggtitle("Dor no peito x Gênero") + xlab("Gênero")  + ylab("Quantidade") +
  labs(fill = "Tipos de dor") +  scale_fill_brewer(palette = "OrRd", labels = c("Typical", "Asymptotic", "Nonanginal", "Nontypical")) + theme_bw()
## Warning: Use of `dados$cp` is discouraged.
## ℹ Use `cp` instead.
## Warning: Use of `dados$sex` is discouraged.
## ℹ Use `sex` instead.

A partir do gráfico percebe-se que os indivíduos do sexo masculino são mais afetados pela dor no peito do que os indivíduos do gênero feminino.

1.9 Gráfico Dor no peito X Gênero por frequência relativa

ggplot(dados, aes(x = dados$sex))+geom_bar(aes(fill = dados$cp), position = "fill") +
  ggtitle("Dor no peito x Gênero") + xlab("Gênero")  + ylab("Quantidade") +
  labs(fill = "Tipos de dor") +
  scale_fill_brewer(palette = "OrRd", labels = c("Typical", "Asymptotic", "Nonanginal", "Nontypical")) + theme_bw()
## Warning: Use of `dados$cp` is discouraged.
## ℹ Use `cp` instead.
## Warning: Use of `dados$sex` is discouraged.
## ℹ Use `sex` instead.

Com base no gráfico de frequência relativa percebe-se que o tipo de dor Typical é mais recorrente nos indivíduos do gênero masculino. Já o tipo de dor que é mais recorrente entre os indivíduos do gênero feminino é o Nonanginal.

1.10 Histograma Taxa máxima de batimentos cardíacos x Gênero

ggplot(dados, aes(x = dados$thalach)) + geom_histogram(aes(fill = dados$sex))+facet_wrap(~ dados$sex) + 
  ggtitle("Taxa de batimentos cardíacos") + xlab("Taxa de batimentos cardíacos") + ylab("Quantidade") + labs(fill = "Gênero") + theme_bw()
## Warning: Use of `dados$sex` is discouraged.
## ℹ Use `sex` instead.
## Warning: Use of `dados$thalach` is discouraged.
## ℹ Use `thalach` instead.
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

Com base na análise do gráfico infere-se que os indivíduos do gênero masculino apresentam uma quantidade maior na taxa de batimentos cardíacos quando comparado com os indivíduos do gênero feminino.

1.11 Histograma tipo densidade

ggplot(dados, aes(x = dados$thalach)) + geom_histogram(aes( y = after_stat(density),  fill = dados$sex))+facet_wrap(~ dados$sex) + 
  ggtitle("Taxa de batimentos cardíacos x Gênero") + xlab("Taxa de batimentos cardíacos") + ylab("Quantidade") + labs(fill = "Gênero") +geom_density( color = "gray" ) + theme_bw()
## Warning: Use of `dados$sex` is discouraged.
## ℹ Use `sex` instead.
## Warning: Use of `dados$thalach` is discouraged.
## ℹ Use `thalach` instead.
## Use of `dados$thalach` is discouraged.
## ℹ Use `thalach` instead.
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

Comparando o histograma com a linha da densidade com o histograma sem a linha da densidade, percebe-se que há uma diminuição nas alturas das colunas. Isso ocorre , pois a linha é obtida a partir da estmativa suavizada da distribuição de dados.