html_document:
keep_md: true
knitr:
opts_knit:
root.dir: "~/Base_de_dados-master/df_pokemon.RData"
##Atividade 2 - Estatística
library(dplyr)
## Warning: pacote 'dplyr' foi compilado no R versão 4.4.2
##
## 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(ggplot2)
load("~/Base_de_dados-master/df_pokemon.RData") # Carregar a base de dados
head(df) # Visualizar as primeiras linhas da base
## # 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>
resumo <- df %>%
group_by(type_1) %>%
summarise(
media = mean(attack, na.rm = TRUE),
mediana = median(attack, na.rm = TRUE),
desvio_padrao = sd(attack, na.rm = TRUE),
primeiro_quartil = quantile(attack, 0.25, na.rm = TRUE),
terceiro_quartil = quantile(attack, 0.75, na.rm = TRUE),
minimo = min(attack, na.rm = TRUE),
maximo = max(attack, na.rm = TRUE),
total = n()
)
print(resumo)
## # A tibble: 18 × 9
## type_1 media mediana desvio_padrao primeiro_quartil terceiro_quartil minimo
## <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <int>
## 1 bug 65.2 63 30.7 42.5 90 10
## 2 dark 86.2 86.5 24.3 65 97.5 50
## 3 dragon 103. 97.5 29.6 78.8 130 50
## 4 electric 67.8 61.5 25.2 50 85 30
## 5 fairy 61.5 52 29.8 45 72 20
## 6 fighting 94.7 100 27.7 80 120 35
## 7 fire 81.6 82.5 25.3 60.8 97.8 40
## 8 flying 71.7 70 42.5 50 92.5 30
## 9 ghost 66.7 65 25.3 50 85 30
## 10 grass 70.9 68 24.1 53.5 89.8 27
## 11 ground 91.3 83.5 28.6 72 116. 40
## 12 ice 70.7 65 25.9 50 82.5 30
## 13 normal 71.7 70 29.3 55 85 5
## 14 poison 74.7 74 19.6 60 90.5 43
## 15 psychic 60.2 52.5 30.8 36.2 74.5 20
## 16 rock 88.2 86.5 32.6 58 113. 40
## 17 steel 83.5 82.5 24.6 75 97.5 24
## 18 water 71.0 70 25.0 52 90 10
## # ℹ 2 more variables: maximo <int>, total <int>
ggplot(df, aes(x = type_1, y = attack, fill = type_1)) +
geom_boxplot() +
labs(
title = "Boxplot do Ataque por Tipo de Pokémon",
x = "Tipo (type_1)",
y = "Ataque (attack)"
) +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
ggplot(df, aes(x = attack, y = defense, color = type_1)) +
geom_point(alpha = 0.7) +
labs(
title = "Dispersão entre Ataque e Defesa dos Pokémon",
x = "Ataque (attack)",
y = "Defesa (defense)"
) +
theme_minimal()
correlacao <- cor(df$attack, df$defense, use = "complete.obs")
print(paste("Correlação entre ataque e defesa:", round(correlacao, 2)))
## [1] "Correlação entre ataque e defesa: 0.43"
Os dados analisados da Pokédex mostram que:
No resumo estatístico, os tipos de Pokémon apresentam grande variação nos valores médios de ataque. Tipos ofensivos como Fogo e Dragão têm maiores valores médios, enquanto tipos defensivos como Pedra possuem menor ataque médio.
O boxplot mostram a dispersão dos ataques dentro de cada tipo. Pokémon dos tipos elétrico e dragão, por exemplo, possuem maior variabilidade, enquanto tipos como normal têm menor amplitude de valores.
O diagrama de dispersão entre ataque e defesa mostra uma correlação moderada positiva (r ≈ 0.45), indicando que Pokémon com maior ataque tendem a ter também defesas mais poderosas, mas há exceções
Esses padrões são consistentes com as funções típicas de cada tipo de Pokémon no jogo, refletindo estratégias ofensivas ou defensivas em batalha.