# 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