library(here) library(tidyverse) library(gt) source(here("04-topics/rep-chv2011/Rcode/chv2011-data-prep.R")) source(here("04-topics/rep-chv2011/Rcode/chv2011-gt-quarto.R")) B_BOOT <- as.integer(Sys.getenv("CHV2011_BOOT", "250")) raw <- load_chv2011_raw() |> add_chv2011_derived() merge_validation <- validate_chv2011_merge(raw) fit <- glm(choice_formula("baseline"), data = raw, family = binomial(link = "logit")) avder <- average_marginal_derivatives(fit, raw) se <- bootstrap_avg_derivatives(raw, B = B_BOOT) table3_validation <- validate_chv2011_table3(df = raw, fit = fit) joint_p <- table3_validation$joint_iv_p labels <- c( cafqt = "Corrected AFQT", mhgc = "Mother's Years of Schooling", numsibs = "Number of Siblings", urban14 = "Urban Residence at 14", lavlocwage17 = "\"Permanent\" Local Log Earnings at 17", avurate = "\"Permanent\" State Unemployment Rate at 17", pub4 = "Presence of a College at 14", lwage5_17 = "Local Log Earnings at 17", lurate_17 = "Local Unemployment Rate at 17 (in %)", tuition = "Tuition in 4 Year Public Colleges at 17 (in $100)" ) inst_vars <- chv2011_inst_base table_data <- avder |> mutate( label = labels[variable], group = if_else(variable %in% inst_vars, "INSTRUMENTS (Z):", "CONTROLS (X):"), se = se[match(variable, avder$variable)], p = 2 * pnorm(-abs(avg_deriv / se)), cell = chv2011_coef_cell(avg_deriv, se, chv2011_stars(p)) ) |> filter(!is.na(label)) |> select(group, label, cell) |> add_row( group = " ", label = "Test for joint significance of instruments: p-value", cell = sprintf("%.4f", joint_p), .after = Inf ) gt_tbl <- table_data |> chv2011_quarto_blank_df() |> gt(groupname_col = "group") |> tab_header( title = "Table 3", subtitle = "College decision model — average marginal derivatives" ) |> cols_label(label = " ", cell = "Average Derivative") |> tab_options(row_group.as_column = TRUE) save( table_data, gt_tbl, table3_validation, merge_validation = merge_validation, file = here("04-topics/rep-chv2011/Rcode/Table_3.RData") )