The landscape of college football has undergone significant transformations over the past two decades, particularly with the rise of dual-threat quarterbacks. These versatile athletes possess the ability to excel in both passing and rushing, challenging traditional notions of quarterback play. The emergence of dual-threat quarterbacks has not only altered offensive strategies but also influenced team dynamics and overall performance.
How has the emergence of dual-threat quarterbacks affected total offensive efficiency in Power Five conferences (Big Ten, SEC, ACC, and Big 12) from 2006–2025?
The evolution of the quarterback position in college football has been marked by a significant shift towards dual-threat capabilities. Historically, quarterbacks were primarily evaluated based on their passing skills, with a focus on arm strength, accuracy, and decision-making. However, the rise of dual-threat quarterbacks has introduced a new dimension to the position, emphasizing mobility and the ability to make plays with both the arm and the legs.
The dataset used in this analysis is sourced from a comprehensive compilation of college football player statistics, available at CFB Data. This dataset includes detailed performance metrics for players across various seasons, focusing on key offensive statistics such as passing and rushing touchdowns.
passing_td: Number of passing touchdowns by the
quarterback in a season.rushing_td: Number of rushing touchdowns by the
quarterback in a season.passing_yds: Total passing yards by the quarterback in
a season.rushing_yds: Total rushing yards by the quarterback in
a season.cfbfastR didn’t have much roster informaiton, so I had
to filter out over half of my player data because I could not join team
with their player id.talent variable (e.g., recruiting rank) would be
useful to control for QB skill level, but the data is not readily
available for all players in the dataset. I ended up using ESPN’s fpi
ratings for team talent instead.A “dual-threat” quarterback is one who excels in both passing and rushing, making them a versatile and dynamic player on the field. These quarterbacks can effectively lead the offense through the air while also posing a significant threat on the ground. This dual capability forces defenses to account for multiple dimensions of play, often leading to more complex defensive strategies. To quantify the dual-threat nature of quarterbacks, we can look at two key statistics:
Rushing Yards: This metric indicates the number of yards rushed by a quarterback. A higher number of rushing yards suggests that the quarterback is adept at using their mobility to contribute to the team’s scoring efforts.
Passing Yards: This metric reflects the number of yards thrown by a quarterback. A higher number of passing yards indicates proficiency in leading the passing game and effectively distributing the ball to teammates.
By analyzing both rushing and passing yards, we can identify quarterbacks who are proficient in both areas, thereby classifying them as dual-threat quarterbacks. These players are valuable assets to their teams, as they can adapt to various offensive strategies and exploit defensive weaknesses.
Dual threats are identified as those quarterbacks who exceed the 75th percentile in both rushing and passing touchdowns. Pocket passers excel in passing touchdowns but fall below the threshold for rushing touchdowns (only in 75th percentile of passing TD), while pure runners achieve high rushing touchdown numbers but do not meet the passing touchdown criterion (only in 75th percentile of rushing TD).
### Distribution of Rushing Touchdowns by QB Type
To assess the impact of dual-threat quarterbacks on team success, we will analyze the average number of wins for teams with dual-threat quarterbacks compared to those without. This analysis will help us understand whether having a dual-threat quarterback correlates with better team performance in terms of wins.
By this graph, we can see that teams with dual-threat quarterbacks have a higher average number of wins compared to teams with other types of quarterbacks. This suggests that dual-threat quarterbacks may contribute positively to team success.
Here, we see a boxplot representation of team wins based on quarterback type. The boxplot illustrates that teams with dual-threat quarterbacks not only have a higher median number of wins but also exhibit more success compared to teams with non-dual-threat quarterbacks. This further emphasizes the potential advantage that dual-threat quarterbacks bring to their teams in terms of overall performance.
Correlation of dual threat to total wins: 0.3125531
off_pts_per_opp = Offense points per scoring
opportunity (All offensive drives that cross the opponent’s 40-yard
line)off_explosiveness = Offense explosiveness rate (Average
EPA on successful plays. Uses the site’s custom PPA model)off_success_rate = Offense success rate (Success Rate -
Measures play efficiency. A play is considered successful if it: Results
in a touchdown, Gains ≥50% of yards needed on 1st down, Gains ≥70% of
yards needed on 2nd down, Gains 100% of yards needed on 3rd/4th
down)| Name | Piped data |
| Number of rows | 337 |
| Number of columns | 33 |
| _______________________ | |
| Column type frequency: | |
| character | 6 |
| numeric | 27 |
| ________________________ | |
| Group variables | None |
Variable type: character
| skim_variable | n_missing | complete_rate | min | max | empty | n_unique | whitespace |
|---|---|---|---|---|---|---|---|
| player | 0 | 1 | 7 | 20 | 0 | 171 | 0 |
| conference | 0 | 1 | 3 | 7 | 0 | 4 | 0 |
| position | 0 | 1 | 2 | 2 | 0 | 2 | 0 |
| dual_threat | 0 | 1 | 11 | 15 | 0 | 2 | 0 |
| team | 0 | 1 | 3 | 14 | 0 | 46 | 0 |
| qb_type | 0 | 1 | 5 | 13 | 0 | 4 | 0 |
Variable type: numeric
| skim_variable | n_missing | complete_rate | mean | sd | p0 | p25 | p50 | p75 | p100 | hist |
|---|---|---|---|---|---|---|---|---|---|---|
| year | 0 | 1 | 2012.07 | 2.75 | 2006.00 | 2010.00 | 2012.00 | 2014.00 | 2017.00 | ▃▇▆▇▇ |
| athlete_id | 0 | 1 | 583852.72 | 701917.12 | 169077.00 | 238093.00 | 488025.00 | 530944.00 | 3916387.00 | ▇▁▁▁▁ |
| passing_completions | 0 | 1 | 211.38 | 63.79 | 102.00 | 162.00 | 207.00 | 253.00 | 408.00 | ▆▇▆▂▁ |
| passing_att | 0 | 1 | 348.06 | 89.83 | 200.00 | 275.00 | 341.00 | 410.00 | 617.00 | ▇▇▇▂▁ |
| passing_pct | 0 | 1 | 0.60 | 0.05 | 0.47 | 0.56 | 0.60 | 0.64 | 0.77 | ▁▇▇▃▁ |
| passing_yds | 0 | 1 | 2628.70 | 833.69 | 1105.00 | 1970.00 | 2584.00 | 3173.00 | 5052.00 | ▅▇▇▃▁ |
| passing_td | 0 | 1 | 18.96 | 8.61 | 4.00 | 13.00 | 17.00 | 24.00 | 50.00 | ▆▇▃▂▁ |
| passing_int | 0 | 1 | 9.41 | 3.49 | 1.00 | 7.00 | 9.00 | 12.00 | 20.00 | ▁▇▇▃▁ |
| passing_ypa | 0 | 1 | 7.50 | 1.12 | 5.00 | 6.70 | 7.40 | 8.20 | 11.50 | ▃▇▇▂▁ |
| rushing_car | 0 | 1 | 87.66 | 52.23 | 9.00 | 48.00 | 75.00 | 121.00 | 317.00 | ▇▆▂▁▁ |
| rushing_yds | 0 | 1 | 224.97 | 329.50 | -219.00 | -22.00 | 138.00 | 388.00 | 1702.00 | ▇▅▂▁▁ |
| rushing_td | 0 | 1 | 4.18 | 4.34 | 0.00 | 1.00 | 3.00 | 6.00 | 27.00 | ▇▂▁▁▁ |
| rushing_ypc | 0 | 1 | 1.34 | 2.84 | -8.80 | -0.50 | 1.70 | 3.40 | 8.20 | ▁▂▅▇▂ |
| rushing_long | 0 | 1 | 30.84 | 18.61 | 4.00 | 16.00 | 26.00 | 41.00 | 92.00 | ▇▇▃▂▁ |
| total_wins | 0 | 1 | 7.49 | 2.88 | 0.00 | 6.00 | 8.00 | 10.00 | 14.00 | ▁▅▇▇▂ |
| off_explosiveness | 0 | 1 | 1.02 | 0.15 | 0.78 | 0.91 | 0.98 | 1.15 | 1.44 | ▆▇▃▃▁ |
| off_success_rate | 0 | 1 | 0.43 | 0.04 | 0.32 | 0.39 | 0.43 | 0.46 | 0.54 | ▁▆▇▅▂ |
| off_pts_per_opp | 0 | 1 | 1.19 | 1.80 | -0.52 | -0.15 | 0.00 | 3.30 | 4.82 | ▇▁▁▂▂ |
| passing_qbr | 0 | 1 | 54.70 | 13.55 | 18.94 | 45.94 | 54.90 | 64.52 | 91.78 | ▂▆▇▆▁ |
| predicted_qbr | 0 | 1 | 54.70 | 12.50 | 24.40 | 45.80 | 54.19 | 62.69 | 87.71 | ▁▆▇▅▁ |
| fpi | 0 | 1 | 9.35 | 9.49 | -13.70 | 2.10 | 9.30 | 16.50 | 33.40 | ▂▆▇▆▂ |
| recruiting_points | 0 | 1 | 210.69 | 44.02 | 122.34 | 176.85 | 205.16 | 240.98 | 324.62 | ▃▇▆▃▂ |
| avg_temp | 0 | 1 | 65.48 | 5.95 | 52.03 | 60.61 | 66.17 | 70.05 | 79.01 | ▂▆▇▇▂ |
| avg_humidity | 0 | 1 | 55.78 | 7.32 | 26.73 | 50.92 | 56.25 | 60.73 | 73.00 | ▁▂▅▇▂ |
| avg_wind | 0 | 1 | 8.09 | 2.22 | 2.61 | 6.59 | 7.98 | 9.63 | 13.43 | ▂▆▇▆▂ |
| avg_pressure | 0 | 1 | 1017.71 | 2.05 | 1012.12 | 1016.31 | 1017.68 | 1019.10 | 1023.73 | ▁▆▇▅▁ |
| pct_indoors | 0 | 1 | 0.02 | 0.05 | 0.00 | 0.00 | 0.00 | 0.00 | 0.55 | ▇▁▁▁▁ |
From the boxplots above, we can observe that teams with dual-threat quarterbacks tend to have higher values in key offensive efficiency metrics compared to teams with other types of quarterbacks. Specifically, dual-threat quarterbacks are associated with better performance in points per scoring opportunity, explosiveness, and success rate. This suggests that dual-threat quarterbacks contribute significantly to the overall offensive effectiveness of their teams.
From the bar charts above, we can see that teams with dual-threat quarterbacks consistently outperform those with other quarterback types across all three offensive efficiency metrics. This further reinforces the notion that dual-threat quarterbacks play a crucial role in enhancing a team’s offensive capabilities.
Here is the model I created using forward selection:
## Warning: There was 1 warning in `mutate()`.
## ℹ In argument: `across(where(is.numeric), round, 3)`.
## Caused by warning:
## ! The `...` argument of `across()` is deprecated as of dplyr 1.1.0.
## Supply arguments directly to `.fns` through an anonymous function instead.
##
## # Previously
## across(a:b, mean, na.rm = TRUE)
##
## # Now
## across(a:b, \(x) mean(x, na.rm = TRUE))
| Term | Estimate | Std. Error | t value | p value |
|---|---|---|---|---|
| (Intercept) | -16.323 | 9.614 | -1.698 | 0.091 |
| off_success_rate | 29.387 | 13.816 | 2.127 | 0.034 |
| passing_ypa | 6.968 | 1.175 | 5.930 | 0.000 |
| passing_td | 0.394 | 0.084 | 4.698 | 0.000 |
| rushing_yds | 0.019 | 0.003 | 6.111 | 0.000 |
| passing_int | -0.562 | 0.098 | -5.762 | 0.000 |
| rushing_car | -0.123 | 0.015 | -8.041 | 0.000 |
| passing_completions | 0.077 | 0.023 | 3.365 | 0.001 |
| fpi | 0.228 | 0.047 | 4.876 | 0.000 |
| rushing_td | 0.663 | 0.144 | 4.623 | 0.000 |
| conferenceBig 12 | -1.941 | 0.885 | -2.192 | 0.029 |
| conferenceBig Ten | 0.765 | 0.922 | 0.830 | 0.407 |
| conferenceSEC | -2.395 | 0.948 | -2.527 | 0.012 |
| passing_yds | -0.009 | 0.004 | -2.648 | 0.008 |
| rushing_long | -0.072 | 0.025 | -2.893 | 0.004 |
| rushing_ypc | 0.576 | 0.196 | 2.942 | 0.003 |
| dual_threatNot Dual Threat | 2.225 | 1.071 | 2.076 | 0.039 |
| passing_att | 0.043 | 0.027 | 1.569 | 0.118 |
Takeaways:
I chose to try and predict QBR because it is a comprehensive measure of quarterback performance that accounts for various aspects of the game, including passing, rushing, and situational effectiveness. Unlike traditional statistics like passing yards or touchdowns, QBR provides a more holistic view of a quarterback’s contribution to the team’s success. By using QBR as the dependent variable in the regression analysis, we can better understand how different factors, including quarterback type, influence overall performance on the field.
I also added weather variables (average temperature, humidity, wind speed, and pressure; percentage of games played indoors), team FPI rating, and recruiting points to control for external factors that may influence quarterback performance.
Here are some summary graphs for some key variables:
| Predictor | VIF | Df | GVIF^(1/(2*Df)) |
|---|---|---|---|
| off_success_rate | 4.07 | 1 | 2.017363 |
| passing_ypa | 20.38 | 1 | 4.514588 |
| passing_td | 6.10 | 1 | 2.468828 |
| rushing_yds | 11.86 | 1 | 3.444339 |
| passing_int | 1.36 | 1 | 1.166337 |
| rushing_car | 7.51 | 1 | 2.741252 |
| passing_completions | 24.95 | 1 | 4.995198 |
| fpi | 2.30 | 1 | 1.517161 |
| rushing_td | 4.54 | 1 | 2.131793 |
| conference | 1.60 | 3 | 1.081538 |
| passing_yds | 101.95 | 1 | 10.097072 |
| rushing_long | 2.54 | 1 | 1.593380 |
| rushing_ypc | 3.63 | 1 | 1.905219 |
| dual_threat | 2.17 | 1 | 1.473560 |
| passing_att | 69.48 | 1 | 8.335706 |
Key Interpretations:
anova_pts <- aov(off_pts_per_opp ~ qb_type, data = players)
summary(anova_pts)
## Df Sum Sq Mean Sq F value Pr(>F)
## qb_type 3 22 7.321 2.277 0.0795 .
## Residuals 333 1071 3.215
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
TukeyHSD(anova_pts)
## Tukey multiple comparisons of means
## 95% family-wise confidence level
##
## Fit: aov(formula = off_pts_per_opp ~ qb_type, data = players)
##
## $qb_type
## diff lwr upr p adj
## Other-Dual Threat -0.95448559 -1.9054411 -0.003530129 0.0487611
## Pocket Passer-Dual Threat -0.75157662 -1.8301765 0.327023269 0.2755285
## Pure Runner-Dual Threat -0.79594927 -1.8745492 0.282650619 0.2277023
## Pocket Passer-Other 0.20290897 -0.4899298 0.895747763 0.8739720
## Pure Runner-Other 0.15853632 -0.5343025 0.851375114 0.9348158
## Pure Runner-Pocket Passer -0.04437265 -0.9040744 0.815329056 0.9991536
Key Interpretations:
anova_expl <- aov(off_explosiveness ~ qb_type, data = players)
summary(anova_expl)
## Df Sum Sq Mean Sq F value Pr(>F)
## qb_type 3 0.150 0.05013 2.25 0.0823 .
## Residuals 333 7.418 0.02228
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
TukeyHSD(anova_expl)
## Tukey multiple comparisons of means
## 95% family-wise confidence level
##
## Fit: aov(formula = off_explosiveness ~ qb_type, data = players)
##
## $qb_type
## diff lwr upr p adj
## Other-Dual Threat -0.067625886 -0.14678306 0.01153129 0.1237162
## Pocket Passer-Dual Threat -0.029496335 -0.11927858 0.06028591 0.8312580
## Pure Runner-Dual Threat -0.057739011 -0.14752126 0.03204324 0.3463752
## Pocket Passer-Other 0.038129550 -0.01954209 0.09580119 0.3215570
## Pure Runner-Other 0.009886874 -0.04778476 0.06755851 0.9709910
## Pure Runner-Pocket Passer -0.028242676 -0.09980392 0.04331857 0.7384104
Key Interpretations:
anova_sr <- aov(off_success_rate ~ qb_type, data = players)
summary(anova_sr)
## Df Sum Sq Mean Sq F value Pr(>F)
## qb_type 3 0.1572 0.05239 38.38 <2e-16 ***
## Residuals 333 0.4545 0.00136
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
TukeyHSD(anova_sr)
## Tukey multiple comparisons of means
## 95% family-wise confidence level
##
## Fit: aov(formula = off_success_rate ~ qb_type, data = players)
##
## $qb_type
## diff lwr upr p adj
## Other-Dual Threat -0.06532681 -0.084921295 -0.0457323208 0.0000000
## Pocket Passer-Dual Threat -0.02283128 -0.045055886 -0.0006066717 0.0414819
## Pure Runner-Dual Threat -0.04498647 -0.067211077 -0.0227618632 0.0000018
## Pocket Passer-Other 0.04249553 0.028219549 0.0567715085 0.0000000
## Pure Runner-Other 0.02034034 0.006064358 0.0346163171 0.0015502
## Pure Runner-Pocket Passer -0.02215519 -0.039869390 -0.0044409929 0.0074235
Key Interpretations:
The emergence of the dual-threat quarterback has materially altered the offensive landscape of college football. Across Power Five conferences from 2006 to 2025, teams led by dual-threat quarterbacks are consistently associated with higher offensive efficiency, improved quarterback performance as measured by QBR, and greater team success in terms of wins. These relationships persist even after accounting for team strength and other relevant controls, suggesting that quarterback mobility has become a meaningful component of modern offensive effectiveness rather than a situational advantage.
Taken together, the findings indicate that the evolution toward dual-threat quarterback play reflects a broader strategic shift in college football offenses, emphasizing versatility and adaptability. While the results do not imply direct causation, they provide strong evidence that dual-threat quarterbacks are a defining feature of successful offenses in the contemporary game.
This report used OpenAI’s ChatGPT (Version 5.1, 2025) for assistance in R code debugging, formatting model output tables, and refining methodological descriptions.
Hello! I am an aspiring data analyst that loves sports, and I am putting together projects to showcase skills I am learning. I hope you enjoy! Here are some of my other projects and accounts if you are interested: