This is an R Markdown Notebook. When you execute code within the notebook, the results appear beneath the code.

#Running functions everytime before work

library(dplyr)
library(ggplot2)
library(tidyr)
library(car)
library(corrplot)
library(arm)
library(MASS)
library(cowplot)
setwd("C:/Users/amern/OneDrive/Binghamton/DIda 380/Data")
footdata <- read.csv("Data_Proj_1.csv")
datasmall <- footdata %>% dplyr::select(GP, REC, TGTS, YDS, AVG, TD, LNG, YDS.G, YAC)
head(datasmall)

#Yards will be my dependent variable and I will observe if the other statistics affect that variable. IE the other variables will #be my independent variables.

#below is going to be a summary of my smaller dataset

summary <- datasmall %>% 
  group_by(GP) %>% 
  summarise(avg_rec = mean(REC, na.rm=T),
            avg_tgts = mean(TGTS, na.rm=T),
            avg_yds.g = mean(YDS.G, na.rm=T),
            avg_avg = mean(AVG, na.rm=T),
            avg_td = mean(TD, na.rm=T),
            avg_lng = mean(LNG, na.rm=T),
            avg_yds = mean(YDS, na.rm=T),
            avg_yac = mean(YAC, na.rm=T))
histdata <- datasmall %>% dplyr::select(2:9)
ggplot(gather(histdata), aes(value)) + 
    geom_histogram(bins = 30, fill = "tomato") + 
    facet_wrap(~key, scales = 'free_x')+
    theme_dark()

corrdata <- cor(histdata, use = "complete.obs")
#Then we can plot the data like so using the corrplot function
corrplot::corrplot(corrdata, method = "circle")

#lets use gg plot
ggplot(datasmall, aes(x = REC, y = YDS)) +
  geom_point() +
  geom_smooth(method = "lm")

#Regression Model is below with graphs

#Cell 75 is a summary model of the dependent variable (Yards) and the independed variables

model <- lm(YDS ~ GP + REC + TGTS + AVG + TD + LNG + YDS.G + YAC, data = datasmall)
summary(model)

Call:
lm(formula = YDS ~ GP + REC + TGTS + AVG + TD + LNG + YDS.G + 
    YAC, data = datasmall)

Residuals:
     Min       1Q   Median       3Q      Max 
-113.317  -14.484   -0.312   14.128   64.001 

Coefficients:
              Estimate Std. Error t value Pr(>|t|)    
(Intercept) -8.704e+02  3.470e+01 -25.083  < 2e-16 ***
GP           4.031e+01  3.282e+00  12.282  < 2e-16 ***
REC          3.239e+00  7.914e-01   4.093  9.2e-05 ***
TGTS         6.030e-01  3.566e-01   1.691   0.0943 .  
AVG          1.626e+01  2.692e+00   6.041  3.3e-08 ***
TD           1.154e+00  1.314e+00   0.879   0.3820    
LNG          1.441e-01  2.494e-01   0.578   0.5648    
YDS.G        1.066e+01  7.263e-01  14.674  < 2e-16 ***
YAC          1.061e-03  3.237e-02   0.033   0.9739    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 29.45 on 91 degrees of freedom
Multiple R-squared:  0.9886,    Adjusted R-squared:  0.9876 
F-statistic:   988 on 8 and 91 DF,  p-value: < 2.2e-16
plot(model)

#Steps are right just look for models that veer off and see if you can make transformations of them

residualPlots(model)
           Test stat Pr(>|Test stat|)    
GP           -3.9992        0.0001301 ***
REC          -0.6510        0.5167104    
TGTS         -0.0169        0.9865870    
AVG          -3.6997        0.0003712 ***
TD            2.7448        0.0073086 ** 
LNG           1.9345        0.0561973 .  
YDS.G        -1.4337        0.1551258    
YAC           0.4314        0.6672202    
Tukey test    4.6013        4.198e-06 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

vif(model)
       GP       REC      TGTS       AVG        TD       LNG     YDS.G       YAC 
 5.419003 32.686844 12.995664  5.863733  1.768398  1.813364 18.206146  2.770292 
#This is a function to view all histograms together

a <- ggplot(datasmall, aes(log(AVG))) + 
    geom_histogram(bins = 30, fill = "skyblue") + 
    theme_dark()

b <- ggplot(datasmall, aes(log(LNG))) + 
    geom_histogram(bins = 30, fill = "skyblue") + 
    theme_dark()

c <- ggplot(datasmall, aes(1/sqrt(AVG))) + 
    geom_histogram(bins = 30, fill = "magenta") + 
    theme_dark()

d <- ggplot(datasmall, aes(sqrt(LNG))) + 
    geom_histogram(bins = 30, fill = "magenta") + 
    theme_dark()

plot_grid(a, b, c, d,
          nrow = 2,
          labels = c("A", "B", "C", "D"))

# I am going to create a log model to see if that helps the resdiuals vs fitted model
log_model <- lm(log(YDS) ~ GP + REC + TGTS + AVG + TD + LNG + YDS.G + YAC, data = datasmall)
plot(log_model, which = 1)

``` Works Cited “NFL Conference Receiving Stat Leaders, 2024 Regular Season - ESPN.” ESPN, 2024,

LS0tDQp0aXRsZTogIkxpbmVhciBSZWdyZXNzaW9uIE9uIE5GTCBSZWNjaXZlcnMiDQpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sNCi0tLQ0KDQpUaGlzIGlzIGFuIFtSIE1hcmtkb3duXShodHRwOi8vcm1hcmtkb3duLnJzdHVkaW8uY29tKSBOb3RlYm9vay4gV2hlbiB5b3UgZXhlY3V0ZSBjb2RlIHdpdGhpbiB0aGUgbm90ZWJvb2ssIHRoZSByZXN1bHRzIGFwcGVhciBiZW5lYXRoIHRoZSBjb2RlLiANCg0KYGBge3J9DQojUnVubmluZyBmdW5jdGlvbnMNCg0KbGlicmFyeShkcGx5cikNCmxpYnJhcnkoZ2dwbG90MikNCmxpYnJhcnkodGlkeXIpDQpsaWJyYXJ5KGNhcikNCmxpYnJhcnkoY29ycnBsb3QpDQpsaWJyYXJ5KGFybSkNCmxpYnJhcnkoTUFTUykNCmxpYnJhcnkoY293cGxvdCkNCmBgYA0KDQpgYGB7cn0NCnNldHdkKCJDOi9Vc2Vycy9hbWVybi9PbmVEcml2ZS9CaW5naGFtdG9uL0RJZGEgMzgwL0RhdGEiKQ0KZm9vdGRhdGEgPC0gcmVhZC5jc3YoIkRhdGFfUHJval8xLmNzdiIpDQpgYGANCg0KYGBge3J9DQpkYXRhc21hbGwgPC0gZm9vdGRhdGEgJT4lIGRwbHlyOjpzZWxlY3QoR1AsIFJFQywgVEdUUywgWURTLCBBVkcsIFRELCBMTkcsIFlEUy5HLCBZQUMpDQpoZWFkKGRhdGFzbWFsbCkNCmBgYA0KDQojWWFyZHMgd2lsbCBiZSBteSBkZXBlbmRlbnQgdmFyaWFibGUgYW5kIEkgd2lsbCBvYnNlcnZlIGlmIHRoZSBvdGhlciBzdGF0aXN0aWNzIGFmZmVjdCB0aGF0IHZhcmlhYmxlLiBJRSB0aGUgb3RoZXIgdmFyaWFibGVzIHdpbGwgI2JlIG15IGluZGVwZW5kZW50IHZhcmlhYmxlcy4NCg0KI2JlbG93IGlzIGdvaW5nIHRvIGJlIGEgc3VtbWFyeSBvZiBteSBzbWFsbGVyIGRhdGFzZXQNCmBgYHtyfQ0Kc3VtbWFyeSA8LSBkYXRhc21hbGwgJT4lIA0KICBncm91cF9ieShHUCkgJT4lIA0KICBzdW1tYXJpc2UoYXZnX3JlYyA9IG1lYW4oUkVDLCBuYS5ybT1UKSwNCiAgICAgICAgICAgIGF2Z190Z3RzID0gbWVhbihUR1RTLCBuYS5ybT1UKSwNCiAgICAgICAgICAgIGF2Z195ZHMuZyA9IG1lYW4oWURTLkcsIG5hLnJtPVQpLA0KICAgICAgICAgICAgYXZnX2F2ZyA9IG1lYW4oQVZHLCBuYS5ybT1UKSwNCiAgICAgICAgICAgIGF2Z190ZCA9IG1lYW4oVEQsIG5hLnJtPVQpLA0KICAgICAgICAgICAgYXZnX2xuZyA9IG1lYW4oTE5HLCBuYS5ybT1UKSwNCiAgICAgICAgICAgIGF2Z195ZHMgPSBtZWFuKFlEUywgbmEucm09VCksDQogICAgICAgICAgICBhdmdfeWFjID0gbWVhbihZQUMsIG5hLnJtPVQpKQ0KYGBgDQoNCmBgYHtyfQ0KaGlzdGRhdGEgPC0gZGF0YXNtYWxsICU+JSBkcGx5cjo6c2VsZWN0KDI6OSkNCmdncGxvdChnYXRoZXIoaGlzdGRhdGEpLCBhZXModmFsdWUpKSArIA0KICAgIGdlb21faGlzdG9ncmFtKGJpbnMgPSAzMCwgZmlsbCA9ICJ0b21hdG8iKSArIA0KICAgIGZhY2V0X3dyYXAofmtleSwgc2NhbGVzID0gJ2ZyZWVfeCcpKw0KICAgIHRoZW1lX2RhcmsoKQ0KYGBgDQpgYGB7cn0NCmNvcnJkYXRhIDwtIGNvcihoaXN0ZGF0YSwgdXNlID0gImNvbXBsZXRlLm9icyIpDQojVGhlbiB3ZSBjYW4gcGxvdCB0aGUgZGF0YSBsaWtlIHNvIHVzaW5nIHRoZSBjb3JycGxvdCBmdW5jdGlvbg0KY29ycnBsb3Q6OmNvcnJwbG90KGNvcnJkYXRhLCBtZXRob2QgPSAiY2lyY2xlIikNCmBgYA0KDQoNCmBgYHtyfQ0KI2xldHMgdXNlIGdnIHBsb3QNCmdncGxvdChkYXRhc21hbGwsIGFlcyh4ID0gUkVDLCB5ID0gWURTKSkgKw0KICBnZW9tX3BvaW50KCkgKw0KICBnZW9tX3Ntb290aChtZXRob2QgPSAibG0iKQ0KYGBgDQoNCg0KDQojUmVncmVzc2lvbiBNb2RlbCBpcyBiZWxvdyB3aXRoIGdyYXBocw0KDQojQ2VsbCA3NSBpcyBhIHN1bW1hcnkgbW9kZWwgb2YgdGhlIGRlcGVuZGVudCB2YXJpYWJsZSAoWWFyZHMpIGFuZCB0aGUgaW5kZXBlbmRlZCB2YXJpYWJsZXMNCg0KYGBge3J9DQptb2RlbCA8LSBsbShZRFMgfiBHUCArIFJFQyArIFRHVFMgKyBBVkcgKyBURCArIExORyArIFlEUy5HICsgWUFDLCBkYXRhID0gZGF0YXNtYWxsKQ0Kc3VtbWFyeShtb2RlbCkNCg0KYGBgDQpgYGB7cn0NCnBsb3QobW9kZWwpDQpgYGANCg0KI1N0ZXBzIGFyZSByaWdodCBqdXN0IGxvb2sgZm9yIG1vZGVscyB0aGF0IHZlZXIgb2ZmIGFuZCBzZWUgaWYgeW91IGNhbiBtYWtlIHRyYW5zZm9ybWF0aW9ucyBvZiB0aGVtDQoNCmBgYHtyfQ0KcmVzaWR1YWxQbG90cyhtb2RlbCkNCmBgYA0KYGBge3J9DQp2aWYobW9kZWwpDQpgYGANCg0KDQpgYGB7cn0NCiNUaGlzIGlzIGEgZnVuY3Rpb24gdG8gdmlldyBhbGwgaGlzdG9ncmFtcyB0b2dldGhlcg0KDQphIDwtIGdncGxvdChkYXRhc21hbGwsIGFlcyhsb2coQVZHKSkpICsgDQogICAgZ2VvbV9oaXN0b2dyYW0oYmlucyA9IDMwLCBmaWxsID0gInNreWJsdWUiKSArIA0KICAgIHRoZW1lX2RhcmsoKQ0KDQpiIDwtIGdncGxvdChkYXRhc21hbGwsIGFlcyhsb2coTE5HKSkpICsgDQogICAgZ2VvbV9oaXN0b2dyYW0oYmlucyA9IDMwLCBmaWxsID0gInNreWJsdWUiKSArIA0KICAgIHRoZW1lX2RhcmsoKQ0KDQpjIDwtIGdncGxvdChkYXRhc21hbGwsIGFlcygxL3NxcnQoQVZHKSkpICsgDQogICAgZ2VvbV9oaXN0b2dyYW0oYmlucyA9IDMwLCBmaWxsID0gIm1hZ2VudGEiKSArIA0KICAgIHRoZW1lX2RhcmsoKQ0KDQpkIDwtIGdncGxvdChkYXRhc21hbGwsIGFlcyhzcXJ0KExORykpKSArIA0KICAgIGdlb21faGlzdG9ncmFtKGJpbnMgPSAzMCwgZmlsbCA9ICJtYWdlbnRhIikgKyANCiAgICB0aGVtZV9kYXJrKCkNCg0KcGxvdF9ncmlkKGEsIGIsIGMsIGQsDQogICAgICAgICAgbnJvdyA9IDIsDQogICAgICAgICAgbGFiZWxzID0gYygiQSIsICJCIiwgIkMiLCAiRCIpKQ0KYGBgDQpgYGB7cn0NCiMgSSBhbSBnb2luZyB0byBjcmVhdGUgYSBsb2cgbW9kZWwgdG8gc2VlIGlmIHRoYXQgaGVscHMgdGhlIHJlc2RpdWFscyB2cyBmaXR0ZWQgbW9kZWwNCmxvZ19tb2RlbCA8LSBsbShsb2coWURTKSB+IEdQICsgUkVDICsgVEdUUyArIEFWRyArIFREICsgTE5HICsgWURTLkcgKyBZQUMsIGRhdGEgPSBkYXRhc21hbGwpDQpwbG90KGxvZ19tb2RlbCwgd2hpY2ggPSAxKQ0KYGBgDQoNCmBgYA0KV29ya3MgQ2l0ZWQNCuKAnE5GTCBDb25mZXJlbmNlIFJlY2VpdmluZyBTdGF0IExlYWRlcnMsIDIwMjQgUmVndWxhciBTZWFzb24gLSBFU1BOLuKAnSANCkVTUE4sIDIwMjQsDQoNCg==