Carregar a base de dados

load("C:/Users/pedro/Base_de_dados-master/df_pokemon.RData")

Análise dos dados

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

Resumo da variável quantitativa “Attack” por grupos da variável qualitativa “type_1”

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()

Gráfico Boxplot

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")

Gráfico de Dispersão

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")

Correlação

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