October 19, 2025

Objective

Why did I choose this as my topic, well I am in a league right now and I will see if charts do point out the obvious picks well or not. But for some guidance hopefully this presentation what will be perceived as professional for a NFL analysis:

  • A different way of perceiving data through charts and how we can see how them to draft better
  • Some plots will be included for different positions and code as well for those plots

Linear Regression Overview

  • We’ll model some positions stats (passing,rushing,receiving) as a function of points.

  • General Model:\[ Points = \beta_0 + \beta_1 \cdot Yards \]

  • R code:

    • lm(Points ~ Yards, data=fantasy)
  • Purpose:

    • Understand how yards predicts points and hopefully win some games
  • Outcomes:

    • Should be similar similar plots throughout each plot the more yards you have the more points you have…generally

Linear model for Quarterbacks

Model For QBS:

\[ Points = \beta_0 + \beta_1 \cdot Passing \space Yards \]

qb_model <- lm(`Points (ESPN Scoring)` ~ `PASS YDS`, data = qbs)
summary(qb_model)
Call:
lm(formula = `Points (ESPN Scoring)` ~ `PASS YDS`, data = qbs)

Residuals:
    Min      1Q  Median      3Q     Max 
-87.561 -32.801  -4.301  21.199 102.386 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept) 79.72409   41.52875   1.920   0.0636 .  
`PASS YDS`   0.05339    0.01140   4.684 4.66e-05 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 49.59 on 33 degrees of freedom
Multiple R-squared:  0.3994,    Adjusted R-squared:  0.3812 
F-statistic: 21.94 on 1 and 33 DF,  p-value: 4.661e-05

Plot for Quarterbacks

Linear model for Running backs

Model For Rbs: \[ Points = \beta_0 + \beta_1 \cdot Rushing \space Yards \]

rb_model <- lm(`Reg POINTS` ~ `RUSH YDS`, data = rbs)
summary(rb_model)
Call:
lm(formula = `Reg POINTS` ~ `RUSH YDS`, data = rbs)

Residuals:
    Min      1Q  Median      3Q     Max 
-33.565  -9.540   0.000   8.298  52.242 

Coefficients:
             Estimate Std. Error t value Pr(>|t|)    
(Intercept) 41.128288   4.331297   9.496 2.87e-14 ***
`RUSH YDS`   0.147582   0.005417  27.244  < 2e-16 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 17.01 on 71 degrees of freedom
Multiple R-squared:  0.9127,    Adjusted R-squared:  0.9115 
F-statistic: 742.2 on 1 and 71 DF,  p-value: < 2.2e-16

Plot for Running Backs

Linear model for Wide Receivers

Model For WRs: \[ Points = \beta_0 + \beta_1 \cdot Receiving \space Yards \]

wr_model <- lm(`Points` ~ `REC YDS`, data = wrs)
summary(wr_model)
Call:
lm(formula = Points ~ `REC YDS`, data = wrs)

Residuals:
    Min      1Q  Median      3Q     Max 
-32.595  -6.140  -1.575   6.360  27.618 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept) 2.662902   3.072300   0.867    0.388    
`REC YDS`   0.144678   0.003251  44.507   <2e-16 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 9.898 on 93 degrees of freedom
Multiple R-squared:  0.9552,    Adjusted R-squared:  0.9547 
F-statistic:  1981 on 1 and 93 DF,  p-value: < 2.2e-16

Plot for Wide Receivers

3D Plotly Plot

Code for the 3D Plot

plot_ly(
  qbs,
  x = ~`PASS YDS`,
  y = ~`PASS TD`,
  z = ~`Points (ESPN Scoring)`,
  type = "scatter3d",
  mode = "markers",
  text = ~paste(
    "Player:", `First Name`, `Last Name`,
    "<br>Yards:", `PASS YDS`,
    "<br>TDs:", `PASS TD`,
    "<br>Points:", `Points (ESPN Scoring)`
  ),
  hoverinfo = "text",
  marker = list(
    color = ~`Points (ESPN Scoring)`,
    colorscale = "Viridis",
    size = 3
  )
) %>%
  layout(title = "QB Fantasy Points from Passing Yards and TDs")

Retrospect

At a glance we can do some takeaways for each of their on positions thats yards to matter and the graph can very understanding that more yards equal the more points. We also have to consider other dependent variables such as touchdowns, interceptions, fumbles. Then we can tell more of a story within the graphs.

  • For quaterbacks, maybe I shoudlve added passing touchdowns, and interceptions since those are the common stats in fantasy

  • For running backs, I think how I did it was fine maybe if i wanted to include receiving yards since that is also a common stat within a game as well.

  • For Receivers, this is usually the best way to determine because yards do matter but you also have to consider longest reception, reception + a catch, etc…etc.

All in all I think maybe a continuation after this I can come back and revise it to what I explained and see if any of the graphs change or stay the same. But also you have to consider alot of things as well. If a team plays well against zone focus defenses or man to man. Is there run blocking good? Is there pass protection good against the blitz, but thats more for sports betting.

Thank You and Good Luck on Your Season!