Carregar a base de dados e instalar os pacotes

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

library(ggplot2)
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
library(reactable)

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
head(df)
## # A tibble: 6 × 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
## # ℹ 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>
str(df)
## tibble [718 × 22] (S3: tbl_df/tbl/data.frame)
##  $ id             : num [1:718] 1 2 3 4 5 6 7 8 9 10 ...
##  $ pokemon        : chr [1:718] "bulbasaur" "ivysaur" "venusaur" "charmander" ...
##  $ species_id     : int [1:718] 1 2 3 4 5 6 7 8 9 10 ...
##  $ height         : int [1:718] 7 10 20 6 11 17 5 10 16 3 ...
##  $ weight         : int [1:718] 69 130 1000 85 190 905 90 225 855 29 ...
##  $ base_experience: int [1:718] 64 142 236 62 142 240 63 142 239 39 ...
##  $ type_1         : chr [1:718] "grass" "grass" "grass" "fire" ...
##  $ type_2         : chr [1:718] "poison" "poison" "poison" NA ...
##  $ attack         : int [1:718] 49 62 82 52 64 84 48 63 83 30 ...
##  $ defense        : int [1:718] 49 63 83 43 58 78 65 80 100 35 ...
##  $ hp             : int [1:718] 45 60 80 39 58 78 44 59 79 45 ...
##  $ special_attack : int [1:718] 65 80 100 60 80 109 50 65 85 20 ...
##  $ special_defense: int [1:718] 65 80 100 50 65 85 64 80 105 20 ...
##  $ speed          : int [1:718] 45 60 80 65 80 100 43 58 78 45 ...
##  $ color_1        : chr [1:718] "#78C850" "#78C850" "#78C850" "#F08030" ...
##  $ color_2        : chr [1:718] "#A040A0" "#A040A0" "#A040A0" NA ...
##  $ color_f        : chr [1:718] "#81A763" "#81A763" "#81A763" "#F08030" ...
##  $ egg_group_1    : chr [1:718] "monster" "monster" "monster" "monster" ...
##  $ egg_group_2    : chr [1:718] "plant" "plant" "plant" "dragon" ...
##  $ url_image      : chr [1:718] "1.png" "2.png" "3.png" "4.png" ...
##  $ x              : num [1:718] 32.8 33.3 33.9 -24.4 -24.6 ...
##  $ y              : num [1:718] 17.2 16.7 16.2 30.8 30.6 ...

Análise com duas variáveis (qualitativa x quantitativa)

df %>% group_by(type_1) %>% summarise(mínimo = min(weight),
                                      quartil1 = quantile(weight, probs=0.25),
                                      mediana=median(weight),
                                      quartil3 = quantile(weight, probs=0.75),
                                      máximo=max(weight)) %>% 
  reactable()
df %>% group_by(type_1) %>% summarise(média=mean(weight),
                                      desvio_padrao=sd(weight))
## # A tibble: 18 × 3
##    type_1   média desvio_padrao
##    <chr>    <dbl>         <dbl>
##  1 bug       293.          400.
##  2 dark      398.          449.
##  3 dragon   1149.         1131.
##  4 electric  374.          459.
##  5 fairy     249.          513.
##  6 fighting  549.          534.
##  7 fire      611.          773.
##  8 flying    520           397.
##  9 ghost     570.         1547.
## 10 grass     381.          542.
## 11 ground   1047.         1813.
## 12 ice      1033.         1238.
## 13 normal    432.          732.
## 14 poison    366.          288.
## 15 psychic   301.          392.
## 16 rock     1031.          955.
## 17 steel    1569          1881.
## 18 water     536.          725.

Durante a análise dados foi encontratado a média aritimética, divisão entre a soma dos números de uma lista e a quantidade de números somados, a mediana, valor que está exatamente no meio de um conjunto de dados, o desvio padrão, medida que expressa o grau de dispersão de um conjunto de dados, e por fim os valores mínimos e máximos da varíável weight para cada tipo de pokemon.

Por meio dos dados, foi possível determinar de que maneira cada pokemon se diferencia, quanto ao seu peso, entre os demais tipos ,como foi o caso dos tipo inseto(bug) que apresentam um peso mínimo de 6, enquanto os tipo fantasma(ghost) e fada(fairy) possuem membros como o peso mínimo de 1.

Dessa maneira, muitas análises podem ser feitas comparando os diferentes tipos de pokemon para determinar dados significativos que estimulem ainda mais essa disparidadde física, entre cada tipagem dos monstrinhos, não apenas quanto ao peso mínimo e máximo mas tambem estabelecer diferenças através do peso médio de cada um dos grupos e encontrar em média os mais ou menos pesados entre os 18 tipos de pokemon, como é o caso dos tipo metal(steel) e fada(fairy) respectivamente.

A título de curiosidade, os tipos metal(steel) apresentam o maior desvio padrão dentre todos os tipos, o que quer dizer que a disparidade de peso entre seus membros é a mais acentuada entre todos os pokemon. Contudo, isso não impede que ocupem o patamar de pokemons mais pesados.

Criar um gráfico boxplot

boxplot(hp ~ type_1, data = df,col="violet",
        main="Quantidade de vida para cada tipo de pokemon")

O gráfico boxplot permite a vizualização dos dados da mediana, dos quartis e dos valores mínimos e máximos das variáveis quantitativas sobre as qualitativas. Por essa ótica, ao analisar o gráfico podemos encontrar importantes informações sobre a quantidade de vida(hp) base da cada tipo de pokemon e assim determinar qual possui em um todo os indivíduos com mais ou menos vida, de maneira individual ou coletiva.

Analogamente ao parágrafo anterior, o gráfico permite a descoberta que o grupo “dragon” é o que possui mais membros com maior quantidade de vida, proxima a 100, em comparação aos demais tipos de pokemon. Vale observar também que os grupos, “ground”, “ice” e “water” possuem muitos elementos com grandes quantidades de vida muito proximas, em números, aos indivíduos do tipo dragão(dragon).

Alem disso, o grupo dos pokemons do tipo “normal” merece certo destaque, já que possui individualmente alguns membros com quantidades colossais de vida, cerca de 250. Logo, ainda que de uma maneira geral os indivíduos deste grupo não possuam uma qunatidade vida elevada, nada impede a existência de “anomalias”, como esses espécimes que ocupam o pódio dos monstrinhos com mais vida dentre todos os tipos.

Criar um diagrama de dipersão

plot(df$speed,df$attack, col = "lightgreen", pch = 21,
     main = "Gráfico 1 - Diagrama de dispersão",
     xlab = "Speed",
     ylab = "Attack")
abline(lsfit(df$speed,df$attack), 
       col = "red", lwd = 3)

O gráfico de dispersão é utilizado para analisar a relação entre duas variáveis quantitativas. Sendo muito utilizada para fazer correlações, tendências e padrões de dados. No gráfico em questão as variáveis utlizadas foram “Attack” e “Speed”.

A análise do gráfico permite entender que existe uma correlação positiva, ainda que fraca, das duas variáveis escolhidas a medida que os elementos do gráfico se acumulam de maneira próxima e pouco espaçada da linha central, reafirmando a ideia de uma correlação entres os elementos.

Além disso, o gráfico permite a descoberta que a maior parte dos pokemon possui uma velocidade(speed) entre 50 a 100, e também um ataque(attack) de 50 a 100. Vale ressaltar que as variáveis pelo gráfico caminham de maneira próxima, contudo não podem ser completamente associadas uma a outra, já que sua taxa de dispersão não está tão proxima da reta, o que pressupõe que o aumento de um desses status não inluencia totalmente o crescimento do outro.

Fazer uma correlação

cor(df$speed,df$attack)
## [1] 0.3356615

A correlação entre as variáveis “attack” e “speed” é de aproximadamente 0,335. Este valor por sua vez está entre -1 (correlação perfeitamente negativa) e +1 (correlação perfeitamente positiva). Dessa maneira, valores próximos a 0, como o caso do 0,335 de corrrelação (ataque/velocidade), há a tendência de que haja um aumento gradual ou nulo dos valores de ataque conforme a velocidade aumente.

Por essa ótica, a existência de uma correlação positiva ainda que com valores baixos, sugere o quão fraca é a relação entre o ataque e o aumento da velocidade do pokemon. Por isso, mesmo que um pokemon apresente um alto nível de volocidade não há garantias que o poder de ataque tambem seja elevado e vice-versa.

Dessa maneira, ao observar os dados, é aconselhado que caso um treinador pokemon esteja procurando por um monstrinho mais veloz e com atque elavado ele opte por um com uma combianação balanceada entre os dois status, já que a velocidade do pokemon não está necessáriamente atrelada ao quanto de dano ele consegue proporcionar e vice versa.