Aqui vou carregar as bibliotecas e a base de dados escolhida para a realização da atividade:
# PASSO 00 - Carregar bibliotecas
library(dplyr) # operador pipe e tratamento de dados
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(flextable) # para fazer tabela RMarkdown
library(reactable) # para fazer tabela RMarkdown
library(RColorBrewer) # para colocar cor
# PASSO 01 - Carregar base de dados
load("C:/Users/Samsung/Desktop/01_ Pedro Henrique Miceli/01_ Escolaridade/07_ UNIRIO/02_ UNIRIO 2021.1/05_ TME0018_ Estatistica ACS/00 - Base de dados/df_pokemon.RData")
head(df)# A tibble: 6 x 22
id pokemon species_id height weight base_experience type_1 type_2 attack
<dbl> <chr> <int> <int> <int> <int> <chr> <chr> <int>
1 1 bulbasaur 1 7 69 64 grass poison 49
2 2 ivysaur 2 10 130 142 grass poison 62
3 3 venusaur 3 20 1000 236 grass poison 82
4 4 charmander 4 6 85 62 fire <NA> 52
5 5 charmeleon 5 11 190 142 fire <NA> 64
6 6 charizard 6 17 905 240 fire flying 84
# ... with 13 more variables: defense <int>, hp <int>, special_attack <int>,
# special_defense <int>, speed <int>, color_1 <chr>, color_2 <chr>,
# color_f <chr>, egg_group_1 <chr>, egg_group_2 <chr>, url_image <chr>,
# x <dbl>, y <dbl>
Nesse segundo passo, vou realizar o cruzamento entre as variáveis escolhidas, realizando a média e o desvio-padrão solicitados:
# PASSO 02 - Cruzamento entre duas variáveis
# (Qualitativa e Quantitativa)
df %>% select(type_1,attack) %>% group_by(type_1) %>% summarise(media.ataque=mean(attack), desvio.padrao.ataque=sd(attack), quantidade=n()) %>% data.frame() %>% flextable()type_1 | media.ataque | desvio.padrao.ataque | quantidade |
bug | 65.22222 | 30.74161 | 63 |
dark | 86.25000 | 24.33657 | 28 |
dragon | 102.62500 | 29.64253 | 24 |
electric | 67.77778 | 25.15223 | 36 |
fairy | 61.52941 | 29.75130 | 17 |
fighting | 94.72000 | 27.66394 | 25 |
fire | 81.60870 | 25.29776 | 46 |
flying | 71.66667 | 42.52450 | 3 |
ghost | 66.65217 | 25.28674 | 23 |
grass | 70.90909 | 24.07790 | 66 |
ground | 91.30000 | 28.62498 | 30 |
ice | 70.69565 | 25.93600 | 23 |
normal | 71.73118 | 29.30096 | 93 |
poison | 74.67857 | 19.63001 | 28 |
psychic | 60.21739 | 30.76933 | 46 |
rock | 88.17500 | 32.57566 | 40 |
steel | 83.54545 | 24.60687 | 22 |
water | 71.04762 | 25.03013 | 105 |
FT1 <- df %>% select(type_1,attack) %>% group_by(type_1) %>% summarise(media.ataque=mean(attack), desvio.padrao.ataque=sd(attack), quantidade=n()) %>% data.frame() %>% flextable()
FT1 <- bg(FT1, bg = "#b01c1c", part = "header")
FT1 <- bg(FT1, i = ~ media.ataque < 80, bg = "#00b594", part = "body")
FT1 <- bg(FT1, i = ~ media.ataque > 80, bg = "darkgreen", part = "body")
FT1type_1 | media.ataque | desvio.padrao.ataque | quantidade |
bug | 65.22222 | 30.74161 | 63 |
dark | 86.25000 | 24.33657 | 28 |
dragon | 102.62500 | 29.64253 | 24 |
electric | 67.77778 | 25.15223 | 36 |
fairy | 61.52941 | 29.75130 | 17 |
fighting | 94.72000 | 27.66394 | 25 |
fire | 81.60870 | 25.29776 | 46 |
flying | 71.66667 | 42.52450 | 3 |
ghost | 66.65217 | 25.28674 | 23 |
grass | 70.90909 | 24.07790 | 66 |
ground | 91.30000 | 28.62498 | 30 |
ice | 70.69565 | 25.93600 | 23 |
normal | 71.73118 | 29.30096 | 93 |
poison | 74.67857 | 19.63001 | 28 |
psychic | 60.21739 | 30.76933 | 46 |
rock | 88.17500 | 32.57566 | 40 |
steel | 83.54545 | 24.60687 | 22 |
water | 71.04762 | 25.03013 | 105 |
No terceiro passo, vamos realizar a visualização das variáveis escolhidas através do Box-plot:
par(bg="#b01c1c")
boxplot(attack~type_1,data=df, main="Gráfico 1 - Média de ataque por tipo de Pokémon", col = c("darkgreen", "#3b3a3a", "tomato", "yellow", "pink", "#ffbe5c", "#ff4824", "gray", "#4a1f4a", "green", "#802f00", "#00b5b8", "white", "#8c00b3", "#a6005e", "#969696", "#4a6375", "royalblue"), vertical = TRUE)Nesse quarto e último passo, vamos fazer a interpretação/análise dos Boxplots dos ataques de cada tipo de pokémon.
Na Flextable, que mostra a média dos ataques, e o desvio-padrão delas, foram usadas cores para representar o pokédex (cor do cabeçalho), tipos de pokémons com médias abaixo de 80 (oitenta) com uma cor e os que tinham a média maior que 80 (oitenta) com uma outra cor.
No gráfico com os Boxplots, a cor de fundo também foi utilizada para representar o pokédex, e cada cor, de cada tipo de pokémon foi escolhida para representar da melhor forma cada tipo deles.
Com esses Boxplots podemos observar que as três maiores médias de ataque, são dos pokémons do tipo rock (pedra), ground (terra), e dragon (dragão). E que as três menores médias de ataque, mas que também possuem pokémons com ataques poderosos, são os do tipo bug (inseto), normal (com dois autiliers) e water (água).
Sobre os Outiliers, podemos observar que os pokémons dos tipos bug (inseto), dark (sombrio), dragon (dragão), electric (elétrico), fighting (lutador), fire (fogo), flying (voador), ghost (fantasma), grass (grama), ground (terra), ice (gelo), poision (venenoso), rock (pedra) e water (água), não possuem outliers, ao contrário dos tipos fairy (fada), normal, psychic (psíquico) e steel (aço) que possuem. Interessante observar que o tipo normal possui tanto um outlier de baixo poder de ataque, quanto um outro outlier de alto poder de ataque.
Nesses Boxplots podemos observar também que nenhum dos tipos de pokémons são simétricos, são todos assímétricos, uns levemente, como por exemplo o tipo normal, e outros dratiscamente, como por exemplo o tipo rock (pedra).
Dessa forma, podemos concluir a maior parte do que foi ensinado em aula.
. . .