load("C:/Users/pedro/Base_de_dados-master/df_pokemon.RData")
head(df)
## id pokemon species_id height weight base_experience type_1 type_2 attack
## 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
## defense hp special_attack special_defense speed color_1 color_2 color_f
## 1 49 45 65 65 45 #78C850 #A040A0 #81A763
## 2 63 60 80 80 60 #78C850 #A040A0 #81A763
## 3 83 80 100 100 80 #78C850 #A040A0 #81A763
## 4 43 39 60 50 65 #F08030 <NA> #F08030
## 5 58 58 80 65 80 #F08030 <NA> #F08030
## 6 78 78 109 85 100 #F08030 #A890F0 #DE835E
## egg_group_1 egg_group_2 url_image x y
## 1 monster plant 1.png 32.82239 17.21614
## 2 monster plant 2.png 33.32643 16.71226
## 3 monster plant 3.png 33.93778 16.17232
## 4 monster dragon 4.png -24.36338 30.78973
## 5 monster dragon 5.png -24.57820 30.60161
## 6 monster dragon 6.png -25.50657 29.77037
str(df)
## Classes 'tbl_df', 'tbl' and 'data.frame': 718 obs. of 22 variables:
## $ id : num 1 2 3 4 5 6 7 8 9 10 ...
## $ pokemon : chr "bulbasaur" "ivysaur" "venusaur" "charmander" ...
## $ species_id : int 1 2 3 4 5 6 7 8 9 10 ...
## $ height : int 7 10 20 6 11 17 5 10 16 3 ...
## $ weight : int 69 130 1000 85 190 905 90 225 855 29 ...
## $ base_experience: int 64 142 236 62 142 240 63 142 239 39 ...
## $ type_1 : chr "grass" "grass" "grass" "fire" ...
## $ type_2 : chr "poison" "poison" "poison" NA ...
## $ attack : int 49 62 82 52 64 84 48 63 83 30 ...
## $ defense : int 49 63 83 43 58 78 65 80 100 35 ...
## $ hp : int 45 60 80 39 58 78 44 59 79 45 ...
## $ special_attack : int 65 80 100 60 80 109 50 65 85 20 ...
## $ special_defense: int 65 80 100 50 65 85 64 80 105 20 ...
## $ speed : int 45 60 80 65 80 100 43 58 78 45 ...
## $ color_1 : chr "#78C850" "#78C850" "#78C850" "#F08030" ...
## $ color_2 : chr "#A040A0" "#A040A0" "#A040A0" NA ...
## $ color_f : chr "#81A763" "#81A763" "#81A763" "#F08030" ...
## $ egg_group_1 : chr "monster" "monster" "monster" "monster" ...
## $ egg_group_2 : chr "plant" "plant" "plant" "dragon" ...
## $ url_image : chr "1.png" "2.png" "3.png" "4.png" ...
## $ x : num 32.8 33.3 33.9 -24.4 -24.6 ...
## $ y : num 17.2 16.7 16.2 30.8 30.6 ...
summary(df)
## id pokemon species_id height
## Min. : 1.0 Length:718 Min. : 1.0 Min. : 1.00
## 1st Qu.:180.2 Class :character 1st Qu.:180.2 1st Qu.: 6.00
## Median :359.5 Mode :character Median :359.5 Median : 10.00
## Mean :359.5 Mean :359.5 Mean : 11.41
## 3rd Qu.:538.8 3rd Qu.:538.8 3rd Qu.: 14.00
## Max. :718.0 Max. :718.0 Max. :145.00
## weight base_experience type_1 type_2
## Min. : 1.0 Min. : 36.00 Length:718 Length:718
## 1st Qu.: 95.0 1st Qu.: 65.25 Class :character Class :character
## Median : 280.0 Median :147.00 Mode :character Mode :character
## Mean : 568.2 Mean :141.55
## 3rd Qu.: 609.5 3rd Qu.:177.00
## Max. :9500.0 Max. :608.00
## attack defense hp special_attack
## Min. : 5.00 Min. : 5.00 Min. : 1.00 Min. : 10.00
## 1st Qu.: 53.00 1st Qu.: 50.00 1st Qu.: 50.00 1st Qu.: 45.00
## Median : 73.00 Median : 65.00 Median : 65.00 Median : 65.00
## Mean : 74.85 Mean : 70.67 Mean : 68.37 Mean : 68.47
## 3rd Qu.: 95.00 3rd Qu.: 85.00 3rd Qu.: 80.00 3rd Qu.: 90.00
## Max. :165.00 Max. :230.00 Max. :255.00 Max. :154.00
## special_defense speed color_1 color_2
## Min. : 20.00 Min. : 5.00 Length:718 Length:718
## 1st Qu.: 50.00 1st Qu.: 45.00 Class :character Class :character
## Median : 65.00 Median : 65.00 Mode :character Mode :character
## Mean : 69.09 Mean : 65.72
## 3rd Qu.: 85.00 3rd Qu.: 85.00
## Max. :230.00 Max. :160.00
## color_f egg_group_1 egg_group_2 url_image
## Length:718 Length:718 Length:718 Length:718
## Class :character Class :character Class :character Class :character
## Mode :character Mode :character Mode :character Mode :character
##
##
##
## x y
## Min. :-49.152 Min. :-45.793
## 1st Qu.:-17.695 1st Qu.:-17.293
## Median : 0.705 Median : -0.628
## Mean : 0.000 Mean : 0.000
## 3rd Qu.: 15.905 3rd Qu.: 18.155
## Max. : 53.142 Max. : 46.593
A média, também chamada “média aritmética” na linguagem corrente, corresponde à soma dos valores de um grupo de valores, divida pelo número de valores do grupo.
O desvio-padrão é uma medida de dispersão do conjunto, ou seja, uma medida que indica quão uniformes são os dados do conjunto. O desvio-padrão demonstra a distância dos valores em relação à média do conjunto, quanto mais próximo de 0 for o desvio-padrão, menos dispersos são os dados daquele conjunto.
Através das tabelas apresentadas, conseguimos entender os valores mínimos e máximos, médias, medianas e desvios padrão da variável “type_1” pela variável “attack”.
library(dplyr)
library(reactable)
df %>% group_by(type_1) %>% summarise(média=mean(attack),
desvio_padrao=sd(attack))
## # A tibble: 18 × 3
## type_1 média desvio_padrao
## <chr> <dbl> <dbl>
## 1 bug 65.2 30.7
## 2 dark 86.2 24.3
## 3 dragon 103. 29.6
## 4 electric 67.8 25.2
## 5 fairy 61.5 29.8
## 6 fighting 94.7 27.7
## 7 fire 81.6 25.3
## 8 flying 71.7 42.5
## 9 ghost 66.7 25.3
## 10 grass 70.9 24.1
## 11 ground 91.3 28.6
## 12 ice 70.7 25.9
## 13 normal 71.7 29.3
## 14 poison 74.7 19.6
## 15 psychic 60.2 30.8
## 16 rock 88.2 32.6
## 17 steel 83.5 24.6
## 18 water 71.0 25.0
df %>% group_by(type_1) %>% summarise(mínimo = min(attack),
quartil1 = quantile(attack, probs=0.25),
mediana=median(attack),
quartil3 = quantile(attack, probs=0.75),
máximo=max(attack)) %>%
reactable()
O gráfico apresentado é um boxplot que analisa a variável “attack” de diferentes categorias de “type_1”. Cada boxplot representa a distribuição dos valores de ataque (attack) para os diferentes tipos de personagens, como “bug”, “dragon”, “fairy”, “fire”, entre outros. No eixo x, temos as categorias do tipo, enquanto no eixo y observamos os valores de ataque, que variam de 0 a 150. O boxplot permite uma análise visual da mediana, dos quartis, e de possíveis valores discrepantes (outliers) para cada categoria.
Ao analisar o gráfico, notamos que o tipo “dragon” possui um valor de ataque mais elevado em comparação com a maioria dos outros tipos, com uma mediana próxima a 100 e alguns valores extremos que chegam a mais de 150. Por outro lado, tipos como “fairy” e “poison” tendem a ter ataques mais baixos, com medianas abaixo de 75. Outro destaque é que o tipo “ground” apresenta uma variação mais ampla em seus valores de ataque, sugerindo que dentro desse tipo há uma maior diversidade em termos de potencial ofensivo.
Além disso, é possível observar a presença de outliers em algumas categorias, como “ghost” e “water”, indicando que existem personagens dentro dessas categorias com valores de ataque significativamente mais altos ou mais baixos do que o restante do grupo. A dispersão dos valores entre os tipos reflete a diversidade nas capacidades ofensivas, o que pode ser importante para estratégias em um contexto de batalhas, onde tipos com ataques mais fortes ou com maior variabilidade podem ser mais vantajosos.
boxplot(attack ~ type_1, data = df)
boxplot(attack ~ type_1, data = df,col="skyblue",
main="Gráfico 1 - Boxplot do type_1 por attack")
Os gráficos de dispersão são utilizados para determinar a força de um relacionamento entre duas variáveis numéricas. O eixo-x representa a variável independente e o eixo-y representa a variável dependente.Para este gráfico usaremos as variáveis “defense” e “hp”.
O gráfico apresenta a relação entre os atributos de Defesa (no eixo x) e HP (Health Points) (no eixo y) para um conjunto de Pokémon. Observamos que a linha de tendência sugere uma correlação positiva muito leve entre esses dois atributos, indicando que, à medida que a Defesa aumenta, o HP tende a aumentar ligeiramente. No entanto, essa correlação é fraca, uma vez que os pontos estão bastante dispersos em torno da linha.
A maior parte dos pontos está concentrada na faixa de Defesa entre 0 e 100 e de HP entre 0 e 150, sugerindo que a maioria dos Pokémon possui atributos moderados tanto em Defesa quanto em HP. Existem alguns pontos mais afastados que representam Pokémon com valores de Defesa e HP significativamente maiores. Esses outliers podem corresponder a Pokémon defensivos com alta resistência ou tanques que possuem altos valores de HP.
Para treinadores ou jogadores, entender essa relação é crucial na escolha de Pokémon durante batalhas. A leve correlação indica que aumentar um atributo (como Defesa) não necessariamente resultará em um aumento significativo no HP. Portanto, se um jogador deseja um Pokémon com alta durabilidade, será necessário considerar ambos os atributos separadamente ao montar suas estratégias. Além disso, os pontos mais altos no gráfico representam Pokémon que poderiam ser priorizados para funções de tanque em equipes devido à sua maior durabilidade.
library(ggplot2)
library(ggthemes)
plot(df$defense,df$hp, col = "skyblue", xlab = "Defesa", ylab = "HP", main = "Gráfico Defesa/HP")
abline(lm(df$defense~df$hp), col = "black")
A correlação calculada entre Defense e HP foi de aproximadamente 0,235. Esse valor indica uma correlação positiva fraca entre essas duas variáveis. A correlação pode variar de -1 (correlação perfeitamente negativa) a +1 (correlação perfeitamente positiva), sendo que um valor próximo de zero indica pouca ou nenhuma correlação. Com o valor obtido (0,235), podemos dizer que existe uma tendência de que, à medida que a defesa aumenta, o HP também tende a aumentar, mas essa relação é bastante fraca.
Embora exista uma correlação positiva, o valor é baixo, o que sugere que aumentar o valor de Defesa de um Pokémon não está fortemente associado a um aumento significativo no seu HP. Em outras palavras, esses dois atributos não são tão interdependentes, o que significa que um Pokémon pode ter alta Defesa sem necessariamente ter um HP elevado, e vice-versa.
Para treinadores de Pokémon, esse resultado significa que não é suficiente focar em aumentar apenas um dos atributos (Defesa ou HP) para melhorar a durabilidade de um Pokémon. Para maximizar a resistência em batalhas, seria mais eficaz selecionar Pokémon que possuam uma combinação equilibrada de ambos os atributos, em vez de confiar apenas em um deles. Esse insight pode ser útil ao planejar estratégias, especialmente em batalhas que envolvem o uso de Pokémon defensivos ou “tanques”.
a1 <- cor(df$defense, df$hp)
a1
## [1] 0.2352107