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 ...
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.
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.
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.
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.