# Fetch Data
qb_stats_w_combine <- read.csv("../data/qb_stats_w_combine.csv")
# Grab the college predictors
predictors <- c("height", "weight", "age", "c_avg_cmpp", "c_rate", "c_pct",
"c_avg_inter", "c_avg_tds", "c_avg_yds", "c_numyrs", "c_avg_att", "X40",
"wonderlic", "cone", "shuttle", "vert_leap", "broad_jump")
college_stats = qb_stats_w_combine[, predictors]
# Set the resopnse variables
td_int_ratio = qb_stats_w_combine["tds"]/qb_stats_w_combine["ints"]
# Establish the cost function
cost = function(r, pi = 0) mean(abs(r - pi) > 0.5)
# Generate clean data sets
bin_td_int_ratio = ifelse(td_int_ratio < 2, 0, 1)
data.w_combine.for_bin_td_int_ratio = data.frame(na.omit(cbind(bin_td_int_ratio,
college_stats)))
# Logistic Regression
glm.w_combine.td_int_ratio <- glm(formula = tds ~ ., data = data.w_combine.for_bin_td_int_ratio,
family = "binomial")
## Warning: glm.fit: algorithm did not converge
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
exp(cbind(OR = coef(glm.w_combine.td_int_ratio), confint(glm.w_combine.td_int_ratio)))
## Waiting for profiling to be done...
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## OR 2.5 % 97.5 %
## (Intercept) Inf 0.000e+00 Inf
## height 8.874e-07 0.000e+00 Inf
## weight 1.065e+01 0.000e+00 Inf
## age 1.193e+09 0.000e+00 Inf
## c_avg_cmpp 1.502e-01 NA Inf
## c_rate 2.627e-01 0.000e+00 Inf
## c_pct 1.094e+01 0.000e+00 Inf
## c_avg_inter 4.828e-06 0.000e+00 Inf
## c_avg_tds 8.955e+00 0.000e+00 Inf
## c_avg_yds 1.094e+00 6.431e-44 3.234e+45
## c_numyrs 7.294e-02 0.000e+00 Inf
## c_avg_att 1.866e+00 0.000e+00 Inf
## X40 2.380e+35 0.000e+00 Inf
## wonderlic 1.578e+00 1.299e-293 8.850e+282
## cone 4.657e-22 0.000e+00 Inf
## shuttle 5.894e-121 0.000e+00 Inf
## vert_leap 4.291e-03 0.000e+00 Inf
## broad_jump 1.489e+02 0.000e+00 Inf
td_int_ratio.w_combine.cv <- cv.glm(data = data.w_combine.for_bin_td_int_ratio,
glmfit = glm.w_combine.td_int_ratio, cost, 5)
## Warning: glm.fit: algorithm did not converge
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## Warning: glm.fit: algorithm did not converge
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## Warning: glm.fit: algorithm did not converge
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
td_int_ratio.w_combine.cv.error <- td_int_ratio.w_combine.cv$delta[2]
cat("Cross Validation Error\n", td_int_ratio.w_combine.cv.error)
## Cross Validation Error
## 0.2957