library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr 1.1.2 ✔ readr 2.1.4
## ✔ forcats 1.0.0 ✔ stringr 1.5.0
## ✔ ggplot2 3.4.3 ✔ tibble 3.2.1
## ✔ lubridate 1.9.2 ✔ tidyr 1.3.0
## ✔ purrr 1.0.2
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(ggplot2)
library(dbplyr)
##
## Attaching package: 'dbplyr'
##
## The following objects are masked from 'package:dplyr':
##
## ident, sql
library(ggthemes)
library(ggrepel)
week3_dataset <- read.csv("baseball.csv",header = TRUE)
net_scoring <- week3_dataset %>%
mutate(net_scoring = RS - RA)%>%
mutate(ranking = rank(desc(net_scoring)))%>%
arrange(ranking, RS, RA)%>%
select(Team, League, Year, RS, RA, net_scoring, ranking, W)
percentiles <- c(quantile(net_scoring$net_scoring, 0.01),
quantile(net_scoring$net_scoring, 0.99))
net_scoring %>%
ggplot()+
geom_jitter(mapping = aes(x = net_scoring, y = ""),
width = 0, height = 0.3)+
geom_vline(mapping = aes(xintercept = percentiles["1%"],
color = "2% percentile"))+
geom_vline(mapping = aes(xintercept = percentiles["99%"],
color = "98% percentiles"))+
theme_hc()
OBP_SLG_ratio <- week3_dataset %>%
mutate(ratio = OBP/SLG)%>%
group_by(Year)%>%
mutate(ranking = rank(desc(ratio)))%>%
arrange(Year, ranking)%>%
select(Team, League, Year, OBP, SLG, ratio, ranking, RS)
OBP_SLG_ratio %>%
ggplot()+
geom_point(mapping = aes(x=RS, y=ratio))+
geom_smooth(mapping = aes(x=RS, y=ratio))+
theme_minimal()
## `geom_smooth()` using method = 'gam' and formula = 'y ~ s(x, bs = "cs")'
label = c("Bad", "Below AVG", "AVG", "Above AVG", "Good")
winning_percentage <- week3_dataset %>%
mutate(win_percentage = W/G)%>%
mutate(Grade = cut_number(win_percentage, n=length(label),
labels = label))%>%
select(Team, League, Year, W, win_percentage, Grade, OBP)
percentiles <- c(quantile(winning_percentage$win_percentage, 0.01),
quantile(winning_percentage$win_percentage, 0.99))
winning_percentage %>%
ggplot()+
geom_jitter(mapping = aes(x = win_percentage, y = ""),
width = 0, height = 0.3)+
geom_vline(mapping = aes(xintercept = percentiles["1%"],
color = "2% percentile"))+
geom_vline(mapping = aes(xintercept = percentiles["99%"],
color = "98% percentiles"))+
geom_text_repel(data = filter(winning_percentage, win_percentage< 0.3),
mapping = aes(x = win_percentage, y = "", label = Team),
color = "darkred")+
geom_text_repel(data = filter(winning_percentage, win_percentage> 0.7),
mapping = aes(x = win_percentage, y = "", label = Team),
color = "darkred")+
theme_hc()
Correlation
correlation_scoring <- round(cor(net_scoring$net_scoring, net_scoring$W), 2)
correlation_ratio <- round(cor(OBP_SLG_ratio$RS, OBP_SLG_ratio$ratio), 2)
correlation_percentage <- round(cor(winning_percentage$win_percentage, winning_percentage$OBP), 2)
correlation_scoring
## [1] 0.94
correlation_ratio
## [1] -0.64
correlation_percentage
## [1] 0.48
Confidence Interval#1 95%
mean = mean(net_scoring$net_scoring)
sd = sd(net_scoring$net_scoring)
sameple = length(net_scoring$net_scoring)
error = qnorm(0.975) * sd/sqrt(sameple)
confidence_interval_minus <- mean-error
confidence_interval_plus <- mean+error
confidence_interval_minus
## [1] -5.7395
confidence_interval_plus
## [1] 5.7395
Confidence Interval#2 95%
mean = mean(OBP_SLG_ratio$ratio)
sd = sd(OBP_SLG_ratio$ratio)
sameple = length(OBP_SLG_ratio$ratio)
error = qnorm(0.975) * sd/sqrt(sameple)
confidence_interval_minus <- mean-error
confidence_interval_plus <- mean+error
confidence_interval_minus
## [1] 0.8220174
confidence_interval_plus
## [1] 0.8271362
Confidence Interval#3 95%
mean = mean(winning_percentage$win_percentage)
sd = sd(winning_percentage$win_percentage)
sameple = length(winning_percentage$win_percentage)
error = qnorm(0.975) * sd/sqrt(sameple)
confidence_interval_minus <- mean-error
confidence_interval_plus <- mean+error
confidence_interval_minus
## [1] 0.4956953
confidence_interval_plus
## [1] 0.5035806