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