diff --git a/.Rbuildignore b/.Rbuildignore index 93e4be65..c1a111ab 100644 --- a/.Rbuildignore +++ b/.Rbuildignore @@ -29,3 +29,4 @@ NUL ^CLAUDE\.md$ ^references$ ^\.claude$ +^\.positai$ diff --git a/.gitignore b/.gitignore index 8642cbb0..0560ef1b 100644 --- a/.gitignore +++ b/.gitignore @@ -20,3 +20,4 @@ Rplots.pdf references/working/ .claude/ .claude/settings.local.json +.positai diff --git a/NEWS.md b/NEWS.md index 3583dda6..ab0b4d40 100644 --- a/NEWS.md +++ b/NEWS.md @@ -109,6 +109,40 @@ NEWS - Equivalence tests: lower bound shows right tail, upper bound shows left tail - Minimal effect tests: lower bound shows left tail, upper bound shows right tail +## Bug Fixes + +- **Consistent handling of `mu`** in `t_TOST()`, `tsum_TOST()`, and `boot_t_TOST()`: + - The raw estimate, its confidence interval, and the raw equivalence bounds + are now all reported on the original scale. Previously the raw estimate was + `estimate - mu` while the confidence interval and bounds were not shifted. + TOST p-values from `t_TOST()` and `tsum_TOST()` are unchanged. + - The SMD and its bounds are now consistently relative to `mu` + (e.g., `(x - y - mu) / SD`). Previously the two-sample SMD added `mu`, the + paired SMD ignored `mu`, and `tsum_TOST()` ignored `mu` for all designs. + Bounds given with `eqbound_type = "SMD"` are standardized distances from `mu`. + - `mu` is now stored in the returned `TOSTt` object. `print()` reports the + equivalence bounds and notes the scale of each row when `mu` is not zero, and + `describe()` uses the stored `mu` (previously always 0 for `tsum_TOST()`). + - The "Equivalence interval does not include zero" message now checks whether + the bounds contain `mu`. +- `boot_t_TOST()`: the studentized bootstrap p-values used a bootstrap t-statistic + whose variance was centered incorrectly, which under-dispersed the reference + distribution whenever the (difference in) means was far from zero. The p-values + now use the same pivot as the studentized confidence interval, so they agree + with the interval and with `boot_t_test()`. + - Paired resamples are now drawn in the same order as `boot_t_test()`, so both + functions give identical p-values and confidence intervals for the same seed + (results for a given seed differ from earlier versions). + - The Welch two-sample bootstrap replicates now use the normal-approximation + SMD standard error, as the other designs already did. +- `boot_t_test()` with `var.equal = TRUE`: the studentized confidence interval + used Welch standard errors for the bootstrap replicates while the observed + standard error and p-value used the pooled standard error. The replicates now + use the pooled standard error, so the interval and p-value agree. +- `smd_calc()` and `boot_smd_calc()`: the one-sample SMD now uses `mean(x) - mu` correctly +- jamovi one-sample TOST now passes the `mu` option to the analysis. +- `plot.TOSTt(type = "tnull")`: fixed swapped internal labels for the CI limits. + # TOSTER v0.8.7 - Update documentation to make it clear what the "eqb" argument does within the `wilcox_TOST` function. diff --git a/R/anova_summary.R b/R/anova_summary.R index be9b212a..11e4b9a5 100644 --- a/R/anova_summary.R +++ b/R/anova_summary.R @@ -36,6 +36,15 @@ anova_summary <- function(object){ #%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% # this function is used for repeated and mixed anova repeated_anova_summary <- function(res.anova){ + # TODO: apply Greenhouse-Geisser / Huynh-Feldt corrections. `$univariate.tests` below + # holds the sphericity-assumed df, so every downstream consumer (equ_anova, pes, + # p.null, p.equ) is uncorrected regardless of what the user requested when fitting. + # The corrections are available in `.summary$pval.adjustments` (GGe / HFe) and the + # extraction code is commented out immediately below, but `add_corrected_df()` is + # referenced there and does not exist anywhere in the package - it needs writing. + # Note the correction must scale df1 and df2 in BOTH the reference distribution and + # the non-centrality parameter lambda = f2 * (df1 + df2 + 1), since equ_ftest() + # derives lambda from the df themselves. .summary <- suppressWarnings(summary(res.anova)) # Anova table converted into data frame #aov.table <- .summary$univariate.tests %>% @@ -181,6 +190,9 @@ summary_aov <- function(res.anova){ } reformat_aov_summary <- function(aov.summary){ + # TODO: effect names come back padded with trailing whitespace (e.g. "cond "), + # because the remove_empty_space() helper defined in summary_aov() is never called + # here. Harmless for printing but it breaks joins/subsetting on `effect`. Trim them. if(inherits(aov.summary, "listof")){ aov.summary <- as.data.frame(aov.summary[[1]]) } else {as.data.frame(aov.summary)} diff --git a/R/boot_cor_test.R b/R/boot_cor_test.R index 078c15d1..bcd6a481 100644 --- a/R/boot_cor_test.R +++ b/R/boot_cor_test.R @@ -127,8 +127,10 @@ #' null = c(-0.1, 0.4), R = 999) #' #' @section References: -#' Wilcox, R.R. (2009) Comparing Pearson Correlations: Dealing with Heteroscedasticity and Nonnormality. -#' Communications in Statistics - Simulation and Computation, 38, 2220–2234. +#' +#' Wilcox, R. R. (1994). The Percentage Bend Correlation Coefficient. Psychometrika, 59(4), 601–616. https://doi.org/10.1007/bf02294395 +#' +#' Wilcox, R. R. (1993). Some results on a Winsorized correlation coefficient. British Journal of Mathematical and Statistical Psychology, 46(2), 339–349. https://doi.org/10.1111/j.2044-8317.1993.tb01020.x #' #' Wilcox, R.R. (2017) Introduction to Robust Estimation and Hypothesis Testing, 4th edition. Academic Press. #' diff --git a/R/boot_t_TOST.R b/R/boot_t_TOST.R index cc72bdcb..e1c8e9c6 100644 --- a/R/boot_t_TOST.R +++ b/R/boot_t_TOST.R @@ -168,10 +168,13 @@ boot_t_TOST.default <- function(x, } - interval_no_zero = test_interval_no_zero(c(low_eqbound, high_eqbound)) + # raw bounds are on the original scale; SMD bounds are relative to mu + bound_null <- if (eqbound_type == "SMD") 0 else mu + interval_no_zero = test_interval_no_zero(c(low_eqbound, high_eqbound), + null = bound_null) if(interval_no_zero){ - message("Equivalence interval does not include zero.") + message(interval_no_null_text(bound_null)) } if (!is.null(y)) { @@ -213,9 +216,6 @@ boot_t_TOST.default <- function(x, m_vec <- rep(NA, times=length(R)) # mean difference vector d_se_vec <- rep(NA, times=length(R)) # smd vector SE m_se_vec <- rep(NA, times=length(R)) # mean difference vector SE - #t_vec <- rep(NA, times=length(R)) # t-test vector - #tl_vec <- rep(NA, times=length(R)) # lower bound vector - #tu_vec <- rep(NA, times=length(R)) # upper bound vector conf.level = 1-alpha*2 @@ -250,10 +250,6 @@ boot_t_TOST.default <- function(x, yok <- NULL } x <- x[xok] - #if(paired && !is.null(y)){ - # x <- x - y - # y <- NULL - #} nx <- length(x) mx <- mean(x) vx <- var(x) @@ -265,21 +261,9 @@ boot_t_TOST.default <- function(x, if (stderr < 10 * .Machine$double.eps * abs(mx)){ stop("data are essentially constant") } - #tstat <- (mx - mu)/stderr - #tstat_low = (mx - low_eqbound)/stderr - #tstat_high = (mx - high_eqbound)/stderr method <- "Bootstrapped One Sample t-test" - #estimate <- setNames(mx, if (paired) "mean of the differences" else "mean of x") - #x.cent <- x - mx # remove to have an untransformed matrix X <- matrix(sample(x, size = nx*R, replace = TRUE), nrow = R) - MX <- rowMeans(X - mx) - VX <- rowSums((X - MX) ^ 2) / (nx - 1) - STDERR <- sqrt(VX/nx) - TSTAT <- (MX)/STDERR - #TSTAT_low <- (MX-low_eqbound)/STDERR - #TSTAT_high <- (MX-high_eqbound)/STDERR - EFF <- MX+mx for(i in 1:nrow(X)){ dat = X[i,] @@ -300,9 +284,6 @@ boot_t_TOST.default <- function(x, m_vec[i] <- runTOST$effsize$estimate[1] # mean difference vector d_se_vec[i] <- runTOST$effsize$SE[2] # smd vector m_se_vec[i] <- runTOST$effsize$SE[1] # mean difference vector - #t_vec[i] <- runTOST$TOST$t[1] - mx # t-test vector - #tl_vec[i] <- runTOST$TOST$t[2] - mx # lower bound vector - #tu_vec[i] <- runTOST$TOST$t[3] - mx # upper bound vector } } # paired ----- @@ -315,8 +296,6 @@ boot_t_TOST.default <- function(x, stop("not enough 'y' observations") if(var.equal && nx + ny < 3) stop("not enough observations") - my <- mean(y) - vy <- var(y) z <- x - y @@ -333,24 +312,11 @@ boot_t_TOST.default <- function(x, } method <- "Bootstrapped Paired t-test" - #estimate <- setNames(mx, if (paired) "mean of the differences" else "mean of x") - #x.cent <- x - mx # remove to have an untransformed matrix - #Z <- matrix(sample(z, size = nz*R, replace = TRUE), nrow = R) - MZ <- rep(NA, times=length(R)) # Means - VZ <- rep(NA, times=length(R)) # Variance - STDERR <- rep(NA, times=length(R)) - TSTAT <- rep(NA, times=length(R)) - EFF <- rep(NA, times=length(R)) - #VZ <- rowSums((Z - MZ) ^ 2) / (nz - 1) - #STDERR <- sqrt(VZ/nz) - #TSTAT <- (MZ)/STDERR - #TSTAT_low <- (MX-low_eqbound)/STDERR - #TSTAT_high <- (MX-high_eqbound)/STDERR - #EFF <- MZ+mz + # resample pairs; indices drawn in one call (one row per replicate) + IDX <- matrix(sample(seq_len(nz), size = nz*R, replace = TRUE), nrow = R) for(i in 1:R){ - sampler = sample(1:nrow(data), replace = TRUE) - zi = data$i1[sampler]-data$i2[sampler] + sampler = IDX[i,] runTOST = t_TOST(x = data$i1[sampler], y = data$i2[sampler], hypothesis = hypothesis, @@ -365,19 +331,12 @@ boot_t_TOST.default <- function(x, glass = glass, rm_correction = rm_correction, smd_ci = "z") - MZ[i] = mean(zi - mz) - VZ[i] <- sum((zi - MZ[i]) ^ 2) / (nz - 1) #rowSums((X - MX) ^ 2) / (nx - 1) - STDERR[i] <- sqrt(VZ[i]/nz) - TSTAT[i] <- MZ[i]/STDERR[i] - EFF[i] <- MZ[i] + mz d_vec[i] <- runTOST$smd$d # smd vector m_vec[i] <- runTOST$effsize$estimate[1] # mean difference vector d_se_vec[i] <- runTOST$effsize$SE[2] # smd vector m_se_vec[i] <- runTOST$effsize$SE[1] # mean difference vector } - - } # two sample ----- @@ -392,8 +351,6 @@ boot_t_TOST.default <- function(x, my <- mean(y) vy <- var(y) method <- paste("Bootstrapped", paste(if (!var.equal) "Welch", "Two Sample t-test")) - estimate <- c(mx, my) - names(estimate) <- c("mean of x", "mean of y") if(var.equal){ ## var equal true ---- df <- nx + ny - 2 @@ -408,100 +365,40 @@ boot_t_TOST.default <- function(x, v <- v/df stderr <- sqrt(v * (1/nx + 1/ny)) - z <- c(x, y) - mz <- mean(z) - #Z <- matrix(sample(z, size = (nx+ny)*R, replace = TRUE), nrow = R) - X <- matrix(sample(x, size = nx*R, replace = TRUE), nrow = R) - Y <- matrix(sample(y, size = ny*R, replace = TRUE), nrow = R) - MX <- rowMeans(X - mx + mz) - MY <- rowMeans(Y - my + mz) - V <- (rowSums((X-MX)^2) + rowSums((Y-MY)^2))/df - STDERR <- sqrt(V*(1/nx + 1/ny)) - EFF <- (MX+mx) - (MY+my) - - #d_vec <- rep(NA, times=length(R)) - for(i in 1:nrow(X)){ - - #dat = Z[i,] - dat_x = X[i,]#dat[1:nx] - dat_y = Y[i,]#dat[(nx+1):(nx+ny)] - runTOST = t_TOST(x = dat_x, - y = dat_y, - hypothesis = hypothesis, - paired = paired, - var.equal = var.equal, - low_eqbound = low_eqbound, - high_eqbound = high_eqbound, - eqbound_type = eqbound_type, - alpha = alpha, - mu = mu, - bias_correction = bias_correction, - rm_correction = FALSE, - smd_ci = "z") - - d_vec[i] <- runTOST$smd$d # smd vector - m_vec[i] <- runTOST$effsize$estimate[1] # mean difference vector - d_se_vec[i] <- runTOST$effsize$SE[2] # smd vector - m_se_vec[i] <- runTOST$effsize$SE[1] # mean difference vector - #t_vec[i] <- runTOST$TOST$t[1] # t-test vector - #tl_vec[i] <- runTOST$TOST$t[2] # lower bound vector - #tu_vec[i] <- runTOST$TOST$t[3] # upper bound vector - } }else{ ## welch ----- stderrx <- sqrt(vx/nx) stderry <- sqrt(vy/ny) stderr <- sqrt(stderrx^2 + stderry^2) df <- stderr^4/(stderrx^4/(nx - 1) + stderry^4/(ny - 1)) - z <- c(x, y) - mz <- mean(z) - x.cent <- x - mx + mz - y.cent <- y - my + mz - X <- matrix(sample(x, size = nx*R, replace = TRUE), nrow = R) - Y <- matrix(sample(y, size = ny*R, replace = TRUE), nrow = R) - MX <- rowMeans(X - mx + mz) - MY <- rowMeans(Y - my + mz) - VX <- rowSums((X-MX)^2)/(nx-1) - VY <- rowSums((Y-MY)^2)/(ny-1) - STDERR <- sqrt(VX/nx + VY/ny) - EFF <- (MX+mx) - (MY+my) - - for(i in 1:nrow(X)){ - #dat = Z[i,] - dat_x = X[i,]#dat[1:nx] - dat_y = Y[i,]#dat[(nx+1):(nx+ny)] - runTOST = t_TOST(x = dat_x, - y = dat_y, - hypothesis = hypothesis, - paired = paired, - var.equal = var.equal, - low_eqbound = low_eqbound, - high_eqbound = high_eqbound, - eqbound_type = eqbound_type, - alpha = alpha, - mu = mu, - bias_correction = bias_correction, - rm_correction = FALSE) - - d_vec[i] <- runTOST$smd$d # smd vector - m_vec[i] <- runTOST$effsize$estimate[1] # mean difference vector - d_se_vec[i] <- runTOST$effsize$SE[2] # smd vector - m_se_vec[i] <- runTOST$effsize$SE[1] # mean difference vector - #t_vec[i] <- runTOST$TOST$t[1] # t-test vector - #tl_vec[i] <- runTOST$TOST$t[2] # lower bound vector - #tu_vec[i] <- runTOST$TOST$t[3] # upper bound vector - } } if (stderr < 10 * .Machine$double.eps * max(abs(mx), abs(my))){ stop("data are essentially constant") } - tstat <- (mx - my - mu)/stderr - #TSTAT <- (MX - MY)/STDERR + X <- matrix(sample(x, size = nx*R, replace = TRUE), nrow = R) + Y <- matrix(sample(y, size = ny*R, replace = TRUE), nrow = R) + + for(i in 1:nrow(X)){ + runTOST = t_TOST(x = X[i,], + y = Y[i,], + hypothesis = hypothesis, + paired = paired, + var.equal = var.equal, + low_eqbound = low_eqbound, + high_eqbound = high_eqbound, + eqbound_type = eqbound_type, + alpha = alpha, + mu = mu, + bias_correction = bias_correction, + rm_correction = FALSE, + smd_ci = "z") - TSTAT <- (MX-MY)/STDERR - #TSTAT_low <- (MX-low_eqbound)/STDERR - #TSTAT_high <- (MX-high_eqbound)/STDERR + d_vec[i] <- runTOST$smd$d # smd vector + m_vec[i] <- runTOST$effsize$estimate[1] # mean difference vector + d_se_vec[i] <- runTOST$effsize$SE[2] # smd vector + m_se_vec[i] <- runTOST$effsize$SE[1] # mean difference vector + } } tstat = nullTOST$TOST$t[1] tstat_l = nullTOST$TOST$t[2] @@ -632,6 +529,8 @@ boot_t_TOST.default <- function(x, se_obs_raw <- nullTOST$effsize$SE[1] low_eq <- nullTOST$eqb$low_eq[1] high_eq <- nullTOST$eqb$high_eq[1] + # studentized pivot from each replicate's own estimate and SE (matches stud CI) + TSTAT <- (m_vec - raw_est) / m_se_vec boot.pval <- boot_pvalue(bvec = m_vec, est = raw_est, null = mu, alternative = "two.sided", boot_ci = boot_ci, @@ -745,6 +644,7 @@ boot_t_TOST.default <- function(x, decision = decision, boot = list(SMD = d_vec, raw = m_vec), + mu = mu, data.name = dname, call = call2 ) diff --git a/R/boot_t_test.R b/R/boot_t_test.R index fb2adfef..b683296c 100644 --- a/R/boot_t_test.R +++ b/R/boot_t_test.R @@ -474,7 +474,8 @@ boot_t_test.default <- function(x, dat_x = X[i,] + mx - mz dat_y = Y[i,] + my - mz m_vec[i] <- mean(dat_x, na.rm=TRUE) - mean(dat_y, na.rm=TRUE) - m_se_vec[i] <- sqrt(sd(dat_x, na.rm=TRUE)^2/length(na.omit(dat_x)) + sd(dat_y, na.rm=TRUE)^2/length(na.omit(dat_y))) + # pooled SE, matching the observed SE and TSTAT + m_se_vec[i] <- STDERR[i] } } else { # Trimmed path - equal variance diff --git a/R/datatostone.b.R b/R/datatostone.b.R index a4724f55..a83eb63b 100644 --- a/R/datatostone.b.R +++ b/R/datatostone.b.R @@ -39,43 +39,13 @@ dataTOSToneClass <- R6::R6Class( med <- stats::median(var) sd <- stats::sd(var) se <- sd/sqrt(n) - res <- t.test(var-mu) - t <- unname(res$statistic) - pttest <- unname(res$p.value) - low_eqbound <- self$options$low_eqbound high_eqbound <- self$options$high_eqbound if (self$options$eqbound_type == 'SMD') { eqbound_type = "SMD" - pr_l_eqb = low_eqbound * sd - pr_h_eqb = high_eqbound * sd } else { eqbound_type = "raw" - pr_l_eqb = low_eqbound - pr_h_eqb = high_eqbound - } - - if(self$options$hypothesis == "EQU"){ - alt_low = "greater" - alt_high = "less" - test_hypothesis = "Hypothesis Tested: Equivalence" - null_hyp = paste0(round(pr_l_eqb,2), - " >= (Mean - mu) or (Mean - mu) >= ", - round(pr_h_eqb,2)) - alt_hyp = paste0(round(pr_l_eqb,2), - " < (Mean - mu) < ", - round(pr_h_eqb,2)) - } else if(self$options$hypothesis == "MET"){ - alt_low = "less" - alt_high = "greater" - test_hypothesis = "Hypothesis Tested: Minimal Effect" - null_hyp = paste0(round(pr_l_eqb,2), - " <= (Mean - mu) <= ", - round(pr_h_eqb,2)) - alt_hyp = paste0(round(pr_l_eqb,2), - " > (Mean - mu) or (Mean - mu) > ", - round(pr_h_eqb,2)) } if(self$options$smd_type == 'g'){ @@ -89,13 +59,37 @@ dataTOSToneClass <- R6::R6Class( high_eqbound = high_eqbound, eqbound_type = eqbound_type, alpha = alpha, + mu = mu, bias_correction = bias_c, smd_ci = "goulet") + # raw bounds are on the original scale of the mean + pr_l_eqb = TOSTres$eqb$low_eq[1] + pr_h_eqb = TOSTres$eqb$high_eq[1] + + if(self$options$hypothesis == "EQU"){ + test_hypothesis = "Hypothesis Tested: Equivalence" + null_hyp = paste0(round(pr_l_eqb,2), + " >= Mean or Mean >= ", + round(pr_h_eqb,2)) + alt_hyp = paste0(round(pr_l_eqb,2), + " < Mean < ", + round(pr_h_eqb,2)) + } else if(self$options$hypothesis == "MET"){ + test_hypothesis = "Hypothesis Tested: Minimal Effect" + null_hyp = paste0(round(pr_l_eqb,2), + " <= Mean <= ", + round(pr_h_eqb,2)) + alt_hyp = paste0(round(pr_l_eqb,2), + " > Mean or Mean > ", + round(pr_h_eqb,2)) + } + + mu_text = ifelse(mu == 0, "zero", mu) if(grepl(TOSTres$decision$ttest, pattern="non")){ - nhst_text = "❌ NHST: don't reject null significance hypothesis that the effect is equal to zero" + nhst_text = paste0("❌ NHST: don't reject null significance hypothesis that the effect is equal to ", mu_text) } else{ - nhst_text = "✅ NHST: reject null significance hypothesis that the effect is equal to zero" + nhst_text = paste0("✅ NHST: reject null significance hypothesis that the effect is equal to ", mu_text) } diff --git a/R/equ_anova.R b/R/equ_anova.R index 2898f720..471d7036 100644 --- a/R/equ_anova.R +++ b/R/equ_anova.R @@ -12,7 +12,9 @@ #' @param MET Logical indicator to perform a minimal effect test rather than equivalence #' test (default is FALSE). When TRUE, the alternative hypothesis becomes that the effect #' is larger than the equivalence bound. -#' @param alpha Alpha level used for the test (default = 0.05). +#' @param alpha Alpha level used for the test (default = 0.05). Note that this argument +#' is currently accepted but not used: the returned `p.equ` should be compared against +#' the desired alpha level by the user. #' #' @details #' This function tests whether ANOVA effects are practically equivalent to zero (when @@ -33,6 +35,39 @@ #' #' For details on the calculations in this function see `vignette("the_ftestTOSTER")`. #' +#' ## Multi-factor and within-subjects designs +#' +#' Campbell & Lakens (2021) derived the test for one-way ANOVA and multivariable +#' regression. This function generalizes it by computing the non-centrality parameter as +#' \eqn{\lambda = \frac{\Delta}{1 - \Delta} (df_1 + df_2 + 1)}, which reduces exactly to +#' the published expression whenever \eqn{df_1 + df_2 + 1 = N}. The quantity +#' \eqn{df_1 + df_2 + 1} is the effective sample size of the error stratum in which an +#' effect is tested, which is not in general the total number of observations; in a mixed +#' design, for example, it recovers the number of subjects for a between-subjects effect. +#' Simulation work covering one-way within-subjects, factorial between-subjects, and mixed +#' designs found the test maintained its nominal Type I error rate at the boundary of the +#' null hypothesis in each case. +#' +#' ## Interpreting bounds in within-subjects designs +#' +#' `eqbound` is a bound on *partial* eta-squared, which excludes subject variance from its +#' denominator. In repeated-measures designs it is therefore not a bound on the share of +#' total variance in the data, and the gap between the two widens as the number of levels +#' of the within-subjects factor falls. This is a property of partial eta-squared rather +#' than of the equivalence test, but a bound chosen as "a negligible share of the variance +#' I observe" will not be the bound the test applies. +#' +#' ## Limitation: sphericity corrections are not applied +#' +#' For within-subjects factors with more than two levels, this function uses the +#' uncorrected univariate degrees of freedom and does *not* apply Greenhouse-Geisser or +#' Huynh-Feldt corrections, even when the object was fit with a correction requested (e.g. +#' `afex::aov_car(..., anova_table = list(correction = "GG"))`). As a result both `p.null` +#' and `p.equ` may differ from the corrected values reported by the fitting function. When +#' sphericity is badly violated the equivalence test can become substantially +#' anti-conservative. Assess sphericity on the fitted model and treat results with caution +#' when it is in doubt. +#' #' @return #' Returns a data frame containing the ANOVA results with equivalence tests added. #' The following columns are included in the table: @@ -75,6 +110,19 @@ equ_anova <- function(object, MET = FALSE, alpha = 0.05){ + # TODO: sphericity corrections are not applied. For within-subjects factors with + # k > 2 levels this function returns the uncorrected univariate df, so both p.null + # and p.equ disagree with a GG/HF-corrected fit (verified: afex reports + # df = 2.20, 52.85 where equ_anova reports 3, 72 for the same object). Simulation + # shows the equivalence test becomes anti-conservative as Box's epsilon falls - + # size reached ~0.19 at epsilon = 0.5 against a nominal 0.05. The plumbing is + # commented out in anova_summary.R; see the TODO there. Until that is wired up, + # consider warning when sphericity.tests are present and non-trivial. + + # TODO: `alpha` is accepted but never used - it only fed the commented-out + # equ_ftest() call below. Either wire it up (e.g. return a decision column) or + # deprecate the argument. + #message("Note: equ_anova only validated for one-way ANOVA; use with caution") if(inherits(object, "Anova.mlm")){ diff --git a/R/equ_ftest.R b/R/equ_ftest.R index ba90a6ec..66314811 100644 --- a/R/equ_ftest.R +++ b/R/equ_ftest.R @@ -37,6 +37,22 @@ #' #' For details on the calculations in this function see `vignette("the_ftestTOSTER")`. #' +#' ## Degrees of freedom and the non-centrality parameter +#' +#' The non-centrality parameter is computed as +#' \eqn{\lambda = \frac{\Delta}{1 - \Delta} (df_1 + df_2 + 1)}. For a one-way ANOVA or a +#' multivariable regression \eqn{df_1 + df_2 + 1 = N}, so this reduces exactly to the +#' expression given by Campbell & Lakens (2021). More generally \eqn{df_1 + df_2 + 1} is +#' the effective sample size of the error stratum in which the effect is tested, which +#' allows the same logic to be applied to factorial, within-subjects, and mixed designs. +#' Supply the `df1` and `df2` belonging to the effect of interest and its own error term; +#' in a mixed design a between-subjects effect will yield \eqn{df_1 + df_2 + 1} equal to +#' the number of subjects rather than the number of observations, which is correct. +#' +#' Note that `eqbound` is a bound on *partial* eta-squared. In within-subjects designs +#' this excludes subject variance from the denominator and is therefore not a bound on the +#' share of total variance in the data. +#' #' @return #' Object of class "htest" containing the following components: #' diff --git a/R/htest_helpers.R b/R/htest_helpers.R index 239206e0..46847b86 100644 --- a/R/htest_helpers.R +++ b/R/htest_helpers.R @@ -443,7 +443,7 @@ printable_pval = function(pval, #' @title Plot Estimate from 'htest' Object #' #' @description -#' `r lifecycle::badge('stable')` +#' `r lifecycle::badge('maturing')` #' #' Creates a simple point estimate plot with confidence interval from any 'htest' object #' that contains an estimate and confidence interval. This provides a visual representation diff --git a/R/methods.TOSTt.R b/R/methods.TOSTt.R index f5782f59..1230178e 100644 --- a/R/methods.TOSTt.R +++ b/R/methods.TOSTt.R @@ -104,6 +104,19 @@ print.TOSTt <- function(x, }else{ cat("Note: SMD confidence intervals are an approximation. See vignette(\"SMD_calcs\").") } + # report bounds and, when mu is not zero, the scale of each row -------- + cat("\n") + cat("Equivalence Bounds: ", + paste0(x$eqb$type, " [", round(x$eqb$low_eq, digits), ", ", + round(x$eqb$high_eq, digits), "]", collapse = "; "), + sep = "") + mu <- get_mu(x) + if (mu != 0) { + cat("\n") + cat(strwrap(paste0("Note: raw estimate, confidence interval, and bounds are on the original scale; ", + "the ", x$eqb$type[2], " and its bounds are relative to mu = ", mu, ".")), + sep = "\n") + } } cat("\n") @@ -677,8 +690,8 @@ plot.TOSTt <- function(x, points = data.frame( x_label = x_label, point = x$effsize$estimate[1], - ci_high = x$effsize$lower.ci[1], - ci_low = x$effsize$upper.ci[1], + ci_low = x$effsize$lower.ci[1], + ci_high = x$effsize$upper.ci[1], stringsAsFactors = FALSE ) @@ -841,9 +854,7 @@ describe_TOST = function(x, type_tost = ifelse(htest$alternative == "equivalence", "equivalence", "minimal effect") - nhst_null = ifelse(is.null(tosty$call$mu), - 0, - tosty$call$mu) + nhst_null = get_mu(tosty) alt_nhst = paste0("true ", names(htest$null.value[1]), " is ", diff --git a/R/others.R b/R/others.R index f02458b4..da224b07 100644 --- a/R/others.R +++ b/R/others.R @@ -191,8 +191,8 @@ norm.inter = function (t, alpha) { } -# Function to test if an interval (defined by two numbers) does not contain zero -test_interval_no_zero <- function(vec) { +# Function to test if an interval (defined by two numbers) does not contain the null value (default zero) +test_interval_no_zero <- function(vec, null = 0) { # Check if vector has exactly 2 elements if (length(vec) != 2) { stop("Input must be a vector of exactly 2 numbers") @@ -202,7 +202,23 @@ test_interval_no_zero <- function(vec) { lower <- min(vec) upper <- max(vec) - # Check if zero is NOT in the interval [lower, upper] - return(!(0 >= lower && 0 <= upper)) + # Check if the null value is NOT in the interval [lower, upper] + return(!(null >= lower && null <= upper)) +} + +# Message text when the equivalence interval does not contain the null value +interval_no_null_text <- function(mu = 0) { + if (mu == 0) { + "Equivalence interval does not include zero." + } else { + paste0("Equivalence interval does not include mu (", mu, ").") + } +} + +# Null value stored in a TOSTt object (older objects do not store mu) +get_mu <- function(x) { + if (!is.null(x$mu)) return(x$mu) + if (!is.null(x$call$mu) && is.numeric(x$call$mu)) return(x$call$mu) + 0 } diff --git a/R/powerTOSTanova.R b/R/powerTOSTanova.R index 60c51b83..75206423 100644 --- a/R/powerTOSTanova.R +++ b/R/powerTOSTanova.R @@ -29,8 +29,19 @@ #' * Medium effect: 0.06 #' * Large effect: 0.14 #' -#' Note that this function is primarily validated for one-way ANOVA designs; use with -#' caution for more complex designs. +#' The calculation itself is not restricted to one-way designs: power is obtained from the +#' same non-centrality parameter used by [equ_ftest], \eqn{\lambda = \frac{\Delta}{1 - +#' \Delta} (df_1 + df_2 + 1)}, and simulation covering one-way within-subjects, factorial +#' between-subjects, and mixed designs found the corresponding test held its nominal Type I +#' error rate. Supply the `df1` and `df2` for the effect of interest and its own error +#' term. Two cautions apply to more complex designs: +#' +#' * When solving for `df2`, the message translating the result into a total sample size +#' assumes a one-way between-subjects layout. In other designs `df2` should be converted +#' to a sample size using the structure of that design. +#' * For within-subjects factors with more than two levels the calculation assumes +#' sphericity, and [equ_anova] does not apply Greenhouse-Geisser or Huynh-Feldt +#' corrections (see that function's documentation). #' #' @return #' An object of class "power.htest" containing the following components: @@ -123,6 +134,11 @@ power_eq_f <- function(alpha = 0.05, # Find df2 that gives desired power f1 <- function(df2) calc_power(alpha, df1, df2, eqbound) - power df2 <- uniroot(f1, c(4, 1e5))$root + # TODO: this sample-size translation is one-way between-subjects only. df1+df2+1 is + # the effective sample size of the error stratum, which equals total N only in a + # single-stratum design - in a one-way repeated measures design it is n(k-1)+1, and + # for a between-subjects effect in a mixed design it is the number of subjects. + # Either qualify the message or take a `design` argument to translate correctly. message(paste("Required df2 =", round(df2, 2), "(approximately", ceiling(df2 + df1 + 1), "total observations for a one-way ANOVA with", df1 + 1, "groups)")) @@ -143,7 +159,12 @@ power_eq_f <- function(alpha = 0.05, message(paste("Required df1 =", round(df1, 2))) } - # Warning message about validation + # TODO: this message is now out of date. The non-centrality parameter has since been + # validated by simulation for one-way within-subjects, factorial between-subjects, and + # mixed designs (nominal Type I error at the null boundary in all three). The remaining + # design-specific caveats are the df2 -> sample size translation above and the + # sphericity assumption for within-subjects factors with k > 2 levels. Reword to say + # that, or drop the message and rely on the documentation. message("Note: This function is primarily validated for one-way ANOVA; use with caution for more complex designs") # Return results diff --git a/R/smd_calc.R b/R/smd_calc.R index fcfaa97b..ebf6a362 100644 --- a/R/smd_calc.R +++ b/R/smd_calc.R @@ -479,11 +479,12 @@ smd_calc.default = function(x, } } + # subtract mu so the SMD is of (x - mu) if (tr > 0) { - m1 = mean(x1, trim = tr) + mu + m1 = mean(x1, trim = tr) - mu sd1 = sqrt(winvar(x1, tr = tr)) } else { - m1 = mean(x1) + mu + m1 = mean(x1) - mu sd1 = sd(x1) } diff --git a/R/t_TOST.R b/R/t_TOST.R index 244cefe2..50954df7 100644 --- a/R/t_TOST.R +++ b/R/t_TOST.R @@ -21,7 +21,7 @@ #' @param data an optional matrix or data frame (or similar: see model.frame) containing the variables in the formula formula. By default the variables are taken from environment(formula). #' @param paired a logical indicating whether you want a paired t-test. Cannot be used with the formula method; use x and y vectors instead for paired tests. #' @param var.equal a logical variable indicating whether to treat the two variances as being equal. If TRUE then the pooled variance is used to estimate the variance otherwise the Welch (or Satterthwaite) approximation to the degrees of freedom is used. -#' @param eqb Equivalence bound. Can provide 1 value (symmetric bound, negative value is taken as the lower bound) or 2 specific values that represent the upper and lower equivalence bounds. +#' @param eqb Equivalence bound. Can provide 1 value (symmetric bound, negative value is taken as the lower bound) or 2 specific values that represent the upper and lower equivalence bounds. Raw bounds are on the original scale of the mean (or mean difference) and are *not* offsets from `mu`; bounds given with `eqbound_type = "SMD"` are standardized distances from `mu`. #' @param low_eqbound lower equivalence bounds (deprecated, use `eqb` instead). #' @param high_eqbound upper equivalence bounds (deprecated, use `eqb` instead). #' @param hypothesis 'EQU' for equivalence (default), or 'MET' for minimal effects test. @@ -29,7 +29,7 @@ #' @param alpha alpha level (default = 0.05) #' @param bias_correction Apply Hedges' correction for bias (default is TRUE). #' @param rm_correction Repeated measures correction to make standardized mean difference Cohen's d(rm). This only applies to repeated/paired samples. Default is FALSE. -#' @param mu a number indicating the true value of the mean for the two-tailed test (or difference in means if you are performing a two sample test). +#' @param mu a number indicating the true value of the mean for the two-tailed test (or difference in means if you are performing a two sample test). Default is 0. `mu` only sets the null value of the two-tailed test and the reference point of the standardized mean difference; the raw estimate, its confidence interval, and the raw equivalence bounds are all reported on the original scale. #' @param glass An option to calculate Glass's delta as an alternative to Cohen's d type SMD. Default is NULL to not calculate Glass's delta, 'glass1' will use the first group's SD as the denominator whereas 'glass2' will use the 2nd group's SD. #' @param smd_ci Method for calculating SMD confidence intervals. Methods include 'goulet', 'noncentral t' (nct), 'central t' (t), and 'normal method' (z). #' @param subset an optional vector specifying a subset of observations to be used. @@ -44,6 +44,11 @@ #' wherein \eqn{z = x - y}, and the test is of \eqn{\bar{z}} (mean of the difference scores). #' For one-sample tests, the test is of \eqn{\bar{x}} (mean of x). #' +#' When `mu` is not zero, the raw estimate, its confidence interval, and the raw +#' equivalence bounds remain on the original scale (e.g., the estimate is \eqn{\bar{x}}, +#' not \eqn{\bar{x} - \mu}), while the standardized mean difference and its bounds +#' are expressed relative to `mu` (e.g., \eqn{(\bar{x} - \mu)/s}). +#' #' The output combines three statistical tests: #' 1. A traditional two-tailed t-test (null hypothesis: difference = `mu`) #' 2. Lower bound test (one-tailed t-test against the lower equivalence bound) @@ -72,6 +77,7 @@ #' - **alpha**: Alpha level set for the analysis. #' - **method**: Type of t-test. #' - **decision**: List included text regarding the decisions for statistical inference. +#' - **mu**: The null value used for the two-tailed test. #' #' @examples #' # Example 1: Basic Two-Sample Test @@ -236,14 +242,13 @@ t_TOST.default = function(x, data <- data.frame(i1 = i1, i2 = i2) data <- na.omit(data) colnames(data) = c("i1", "i2") - data2 = data - data2$diff = data2$i2 - data2$i1 - mu n <- nrow(data) i1 <- data$i1 i2 <- data$i2 m1 <- mean(i1) - m2 <- mean(i2) + # shift by mu so the SMD is of (x - y - mu) + m2 <- mean(i2) + mu sd1 <- sd(i1) sd2 <- sd(i2) r12 <- cor(i1, i2) @@ -271,7 +276,8 @@ t_TOST.default = function(x, n2 = length(y1) m1 = mean(x1) - m2 = mean(y1)-mu + # shift by mu so the SMD is of (x - y - mu) + m2 = mean(y1)+mu sd1 = sd(x1) sd2 = sd(y1) @@ -326,36 +332,22 @@ t_TOST.default = function(x, } - interval_no_zero = test_interval_no_zero(c(low_eqbound, high_eqbound)) - - if(interval_no_zero){ - message("Equivalence interval does not include zero.") - } - + # raw bounds are on the original scale; SMD bounds are relative to mu if (eqbound_type == 'SMD') { low_eqbound_d <- low_eqbound high_eqbound_d <- high_eqbound - low_eqbound <- low_eqbound * cohen_res$d_denom - high_eqbound <- high_eqbound * cohen_res$d_denom + low_eqbound <- mu + low_eqbound * cohen_res$d_denom + high_eqbound <- mu + high_eqbound * cohen_res$d_denom } else { - low_eqbound_d <- low_eqbound / cohen_res$d_denom - high_eqbound_d <- high_eqbound / cohen_res$d_denom + low_eqbound_d <- (low_eqbound - mu) / cohen_res$d_denom + high_eqbound_d <- (high_eqbound - mu) / cohen_res$d_denom } - if(hypothesis == "EQU"){ - null_hyp = paste0(round(low_eqbound,2), - " >= (Mean1 - Mean2) or (Mean1 - Mean2) >= ", - round(high_eqbound,2)) - alt_hyp = paste0(round(low_eqbound,2), - " < (Mean1 - Mean2) < ", - round(high_eqbound,2)) - } else if(hypothesis == "MET"){ - null_hyp = paste0(round(low_eqbound,2), - " <= (Mean1 - Mean2) <= ", - round(high_eqbound,2)) - alt_hyp = paste0(round(low_eqbound,2), - " > (Mean1 - Mean2) or (Mean1 - Mean2) > ", - round(high_eqbound,2)) + interval_no_zero = test_interval_no_zero(c(low_eqbound, high_eqbound), + null = mu) + + if(interval_no_zero){ + message(interval_no_null_text(mu)) } low_ttest <- t.test( @@ -419,7 +411,8 @@ t_TOST.default = function(x, ) effsize = data.frame( - estimate = c(tresult$statistic * tresult$stderr, + # add mu back so the estimate is on the same scale as the CI and bounds + estimate = c(tresult$statistic * tresult$stderr + mu, cohen_res$d), SE = c(tresult$stderr,cohen_res$d_sigma), lower.ci = c(tresult$conf.int[1], cohen_res$dlow), @@ -491,6 +484,7 @@ t_TOST.default = function(x, effsize = effsize, smd = cohen_res, decision = decision, + mu = mu, data.name = dname, call = match.call() ) diff --git a/R/tsum_TOST.R b/R/tsum_TOST.R index 86e55958..25b166ed 100644 --- a/R/tsum_TOST.R +++ b/R/tsum_TOST.R @@ -198,10 +198,11 @@ tsum_TOST <- function(m1, if(paired == TRUE && !missing(r12)){ + # shift by mu so the SMD is of (x - y - mu) cohen_res = d_est_pair( n = n1, m1 = m1, - m2 = m2, + m2 = m2 + mu, sd1 = sd1, sd2 = sd2, r12 = r12, @@ -213,11 +214,12 @@ tsum_TOST <- function(m1, } else if(sample_type == "Two Sample"){ + # shift by mu so the SMD is of (x - y - mu) cohen_res = d_est_ind( n1 = n1, n2 = n2, m1 = m1, - m2 = m2, + m2 = m2 + mu, sd1 = sd1, sd2 = sd2, type = smd_type, @@ -230,7 +232,7 @@ tsum_TOST <- function(m1, } else { cohen_res = d_est_one( n = n1, - mu = m1, + mu = m1 - mu, sd = sd1, type = smd_type, testValue = 0, @@ -256,38 +258,22 @@ tsum_TOST <- function(m1, } - interval_no_zero = test_interval_no_zero(c(low_eqbound, high_eqbound)) - - if(interval_no_zero){ - message("Equivalence interval does not include zero.") - } - + # raw bounds are on the original scale; SMD bounds are relative to mu if (eqbound_type == 'SMD') { low_eqbound_d <- low_eqbound high_eqbound_d <- high_eqbound - low_eqbound <- low_eqbound * cohen_res$d_denom - high_eqbound <- high_eqbound * cohen_res$d_denom + low_eqbound <- mu + low_eqbound * cohen_res$d_denom + high_eqbound <- mu + high_eqbound * cohen_res$d_denom } else { - low_eqbound_d <- low_eqbound / cohen_res$d_denom - high_eqbound_d <- high_eqbound / cohen_res$d_denom + low_eqbound_d <- (low_eqbound - mu) / cohen_res$d_denom + high_eqbound_d <- (high_eqbound - mu) / cohen_res$d_denom } - if(hypothesis == "EQU"){ - null_hyp = paste0(round(low_eqbound,2), - " >= (Mean1 - Mean2) or (Mean1 - Mean2) >= ", - round(high_eqbound,2)) - alt_hyp = paste0(round(low_eqbound,2), - " < (Mean1 - Mean2) < ", - round(high_eqbound,2)) - } else if(hypothesis == "MET"){ - null_hyp = paste0(round(low_eqbound,2), - " <= (Mean1 - Mean2) <= ", - round(high_eqbound,2)) - alt_hyp = paste0(round(low_eqbound,2), - " > (Mean1 - Mean2) or (Mean1 - Mean2) > ", - round(high_eqbound,2)) - + interval_no_zero = test_interval_no_zero(c(low_eqbound, high_eqbound), + null = mu) + if(interval_no_zero){ + message(interval_no_null_text(mu)) } low_ttest <- tsum_test( @@ -356,7 +342,8 @@ tsum_TOST <- function(m1, ) effsize = data.frame( - estimate = c(tresult$statistic * tresult$stderr, + # add mu back so the estimate is on the same scale as the CI and bounds + estimate = c(tresult$statistic * tresult$stderr + mu, cohen_res$d), SE = c(tresult$stderr,cohen_res$d_sigma), lower.ci = c(tresult$conf.int[1], cohen_res$dlow), @@ -422,7 +409,8 @@ tsum_TOST <- function(m1, hypothesis = test_hypothesis, effsize = effsize, smd = cohen_res, - decision = decision + decision = decision, + mu = mu ) class(rval) = "TOSTt" diff --git a/man/boot_cor_test.Rd b/man/boot_cor_test.Rd index f1c7273c..a14f2c32 100644 --- a/man/boot_cor_test.Rd +++ b/man/boot_cor_test.Rd @@ -152,8 +152,10 @@ See \code{vignette("correlations")} for more details. } \section{References}{ -Wilcox, R.R. (2009) Comparing Pearson Correlations: Dealing with Heteroscedasticity and Nonnormality. -Communications in Statistics - Simulation and Computation, 38, 2220–2234. + +Wilcox, R. R. (1994). The Percentage Bend Correlation Coefficient. Psychometrika, 59(4), 601–616. https://doi.org/10.1007/bf02294395 + +Wilcox, R. R. (1993). Some results on a Winsorized correlation coefficient. British Journal of Mathematical and Statistical Psychology, 46(2), 339–349. https://doi.org/10.1111/j.2044-8317.1993.tb01020.x Wilcox, R.R. (2017) Introduction to Robust Estimation and Hypothesis Testing, 4th edition. Academic Press. } diff --git a/man/boot_t_TOST.Rd b/man/boot_t_TOST.Rd index f644ee8b..034f1712 100644 --- a/man/boot_t_TOST.Rd +++ b/man/boot_t_TOST.Rd @@ -43,7 +43,7 @@ boot_t_TOST(x, ...) \item{var.equal}{a logical variable indicating whether to treat the two variances as being equal. If TRUE then the pooled variance is used to estimate the variance otherwise the Welch (or Satterthwaite) approximation to the degrees of freedom is used.} -\item{eqb}{Equivalence bound. Can provide 1 value (symmetric bound, negative value is taken as the lower bound) or 2 specific values that represent the upper and lower equivalence bounds.} +\item{eqb}{Equivalence bound. Can provide 1 value (symmetric bound, negative value is taken as the lower bound) or 2 specific values that represent the upper and lower equivalence bounds. Raw bounds are on the original scale of the mean (or mean difference) and are \emph{not} offsets from \code{mu}; bounds given with \code{eqbound_type = "SMD"} are standardized distances from \code{mu}.} \item{low_eqbound}{lower equivalence bounds (deprecated, use \code{eqb} instead).} diff --git a/man/equ_anova.Rd b/man/equ_anova.Rd index c630bdec..f202f3ac 100644 --- a/man/equ_anova.Rd +++ b/man/equ_anova.Rd @@ -16,7 +16,9 @@ the smallest effect size considered meaningful or practically significant.} test (default is FALSE). When TRUE, the alternative hypothesis becomes that the effect is larger than the equivalence bound.} -\item{alpha}{Alpha level used for the test (default = 0.05).} +\item{alpha}{Alpha level used for the test (default = 0.05). Note that this argument +is currently accepted but not used: the returned \code{p.equ} should be compared against +the desired alpha level by the user.} } \value{ Returns a data frame containing the ANOVA results with equivalence tests added. @@ -58,6 +60,41 @@ For minimal effect tests (\code{MET = TRUE}), a significant result (p < alpha) i the effect is meaningfully different from zero (larger than the equivalence bound). For details on the calculations in this function see \code{vignette("the_ftestTOSTER")}. +\subsection{Multi-factor and within-subjects designs}{ + +Campbell & Lakens (2021) derived the test for one-way ANOVA and multivariable +regression. This function generalizes it by computing the non-centrality parameter as +\eqn{\lambda = \frac{\Delta}{1 - \Delta} (df_1 + df_2 + 1)}, which reduces exactly to +the published expression whenever \eqn{df_1 + df_2 + 1 = N}. The quantity +\eqn{df_1 + df_2 + 1} is the effective sample size of the error stratum in which an +effect is tested, which is not in general the total number of observations; in a mixed +design, for example, it recovers the number of subjects for a between-subjects effect. +Simulation work covering one-way within-subjects, factorial between-subjects, and mixed +designs found the test maintained its nominal Type I error rate at the boundary of the +null hypothesis in each case. +} + +\subsection{Interpreting bounds in within-subjects designs}{ + +\code{eqbound} is a bound on \emph{partial} eta-squared, which excludes subject variance from its +denominator. In repeated-measures designs it is therefore not a bound on the share of +total variance in the data, and the gap between the two widens as the number of levels +of the within-subjects factor falls. This is a property of partial eta-squared rather +than of the equivalence test, but a bound chosen as "a negligible share of the variance +I observe" will not be the bound the test applies. +} + +\subsection{Limitation: sphericity corrections are not applied}{ + +For within-subjects factors with more than two levels, this function uses the +uncorrected univariate degrees of freedom and does \emph{not} apply Greenhouse-Geisser or +Huynh-Feldt corrections, even when the object was fit with a correction requested (e.g. +\code{afex::aov_car(..., anova_table = list(correction = "GG"))}). As a result both \code{p.null} +and \code{p.equ} may differ from the corrected values reported by the fitting function. When +sphericity is badly violated the equivalence test can become substantially +anti-conservative. Assess sphericity on the fitted model and treat results with caution +when it is in doubt. +} } \examples{ # One-way ANOVA diff --git a/man/equ_ftest.Rd b/man/equ_ftest.Rd index c71ac291..f5cdf11e 100644 --- a/man/equ_ftest.Rd +++ b/man/equ_ftest.Rd @@ -65,6 +65,22 @@ For minimal effect tests (\code{MET = TRUE}), a significant result (p < alpha) i the effect is meaningfully different from zero (larger than the equivalence bound). For details on the calculations in this function see \code{vignette("the_ftestTOSTER")}. +\subsection{Degrees of freedom and the non-centrality parameter}{ + +The non-centrality parameter is computed as +\eqn{\lambda = \frac{\Delta}{1 - \Delta} (df_1 + df_2 + 1)}. For a one-way ANOVA or a +multivariable regression \eqn{df_1 + df_2 + 1 = N}, so this reduces exactly to the +expression given by Campbell & Lakens (2021). More generally \eqn{df_1 + df_2 + 1} is +the effective sample size of the error stratum in which the effect is tested, which +allows the same logic to be applied to factorial, within-subjects, and mixed designs. +Supply the \code{df1} and \code{df2} belonging to the effect of interest and its own error term; +in a mixed design a between-subjects effect will yield \eqn{df_1 + df_2 + 1} equal to +the number of subjects rather than the number of observations, which is correct. + +Note that \code{eqbound} is a bound on \emph{partial} eta-squared. In within-subjects designs +this excludes subject variance from the denominator and is therefore not a bound on the +share of total variance in the data. +} } \examples{ # Example 1: Equivalence test with a small effect diff --git a/man/plot_htest_est.Rd b/man/plot_htest_est.Rd index c0650f6e..be7a849c 100644 --- a/man/plot_htest_est.Rd +++ b/man/plot_htest_est.Rd @@ -21,7 +21,7 @@ and the null hypothesis.} A \code{ggplot} object that can be further customized using ggplot2 functions. } \description{ -\ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#stable}{\figure{lifecycle-stable.svg}{options: alt='[Stable]'}}}{\strong{[Stable]}} +\ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#maturing}{\figure{lifecycle-maturing.svg}{options: alt='[Maturing]'}}}{\strong{[Maturing]}} Creates a simple point estimate plot with confidence interval from any 'htest' object that contains an estimate and confidence interval. This provides a visual representation diff --git a/man/power_eq_f.Rd b/man/power_eq_f.Rd index a15c2ac7..5412a7ae 100644 --- a/man/power_eq_f.Rd +++ b/man/power_eq_f.Rd @@ -56,8 +56,20 @@ Common equivalence bounds (we do not recommend their use for choosing equivalenc \item Large effect: 0.14 } -Note that this function is primarily validated for one-way ANOVA designs; use with -caution for more complex designs. +The calculation itself is not restricted to one-way designs: power is obtained from the +same non-centrality parameter used by \link{equ_ftest}, \eqn{\lambda = \frac{\Delta}{1 - +\Delta} (df_1 + df_2 + 1)}, and simulation covering one-way within-subjects, factorial +between-subjects, and mixed designs found the corresponding test held its nominal Type I +error rate. Supply the \code{df1} and \code{df2} for the effect of interest and its own error +term. Two cautions apply to more complex designs: +\itemize{ +\item When solving for \code{df2}, the message translating the result into a total sample size +assumes a one-way between-subjects layout. In other designs \code{df2} should be converted +to a sample size using the structure of that design. +\item For within-subjects factors with more than two levels the calculation assumes +sphericity, and \link{equ_anova} does not apply Greenhouse-Geisser or Huynh-Feldt +corrections (see that function's documentation). +} } \examples{ # Example 1: Calculate power given degrees of freedom and equivalence bound diff --git a/man/smd_calc.Rd b/man/smd_calc.Rd index 19e312a1..ede7ccf6 100644 --- a/man/smd_calc.Rd +++ b/man/smd_calc.Rd @@ -112,7 +112,7 @@ Note: tr > 0 is not compatible with denom = "rm" or smd_ci = "goulet".} \item{y}{an optional (non-empty) numeric vector of data values.} -\item{mu}{a number indicating the true value of the mean for the two-tailed test (or difference in means if you are performing a two sample test).} +\item{mu}{a number indicating the true value of the mean for the two-tailed test (or difference in means if you are performing a two sample test). Default is 0. \code{mu} only sets the null value of the two-tailed test and the reference point of the standardized mean difference; the raw estimate, its confidence interval, and the raw equivalence bounds are all reported on the original scale.} \item{formula}{a formula of the form lhs ~ rhs where lhs is a numeric variable giving the data values and rhs either 1 for a one-sample test or a factor with two levels giving the corresponding groups. For paired tests, use the default method with x and y vectors instead of the formula method.} diff --git a/man/t_TOST.Rd b/man/t_TOST.Rd index dd2989e6..e5811b8e 100644 --- a/man/t_TOST.Rd +++ b/man/t_TOST.Rd @@ -55,7 +55,7 @@ t_TOST( \item{var.equal}{a logical variable indicating whether to treat the two variances as being equal. If TRUE then the pooled variance is used to estimate the variance otherwise the Welch (or Satterthwaite) approximation to the degrees of freedom is used.} -\item{eqb}{Equivalence bound. Can provide 1 value (symmetric bound, negative value is taken as the lower bound) or 2 specific values that represent the upper and lower equivalence bounds.} +\item{eqb}{Equivalence bound. Can provide 1 value (symmetric bound, negative value is taken as the lower bound) or 2 specific values that represent the upper and lower equivalence bounds. Raw bounds are on the original scale of the mean (or mean difference) and are \emph{not} offsets from \code{mu}; bounds given with \code{eqbound_type = "SMD"} are standardized distances from \code{mu}.} \item{low_eqbound}{lower equivalence bounds (deprecated, use \code{eqb} instead).} @@ -75,7 +75,7 @@ t_TOST( \item{y}{an optional (non-empty) numeric vector of data values.} -\item{mu}{a number indicating the true value of the mean for the two-tailed test (or difference in means if you are performing a two sample test).} +\item{mu}{a number indicating the true value of the mean for the two-tailed test (or difference in means if you are performing a two sample test). Default is 0. \code{mu} only sets the null value of the two-tailed test and the reference point of the standardized mean difference; the raw estimate, its confidence interval, and the raw equivalence bounds are all reported on the original scale.} \item{formula}{a formula of the form lhs ~ rhs where lhs is a numeric variable giving the data values and rhs either 1 for a one-sample test or a factor with two levels giving the corresponding groups. For paired tests, use the default method with x and y vectors instead of the formula method.} @@ -99,6 +99,7 @@ An S3 object of class \code{"TOSTt"} is returned containing the following slots: \item \strong{alpha}: Alpha level set for the analysis. \item \strong{method}: Type of t-test. \item \strong{decision}: List included text regarding the decisions for statistical inference. +\item \strong{mu}: The null value used for the two-tailed test. } } \description{ @@ -119,6 +120,11 @@ For paired samples, the test is of the difference scores (z), wherein \eqn{z = x - y}, and the test is of \eqn{\bar{z}} (mean of the difference scores). For one-sample tests, the test is of \eqn{\bar{x}} (mean of x). +When \code{mu} is not zero, the raw estimate, its confidence interval, and the raw +equivalence bounds remain on the original scale (e.g., the estimate is \eqn{\bar{x}}, +not \eqn{\bar{x} - \mu}), while the standardized mean difference and its bounds +are expressed relative to \code{mu} (e.g., \eqn{(\bar{x} - \mu)/s}). + The output combines three statistical tests: \enumerate{ \item A traditional two-tailed t-test (null hypothesis: difference = \code{mu}) diff --git a/man/tsum_TOST.Rd b/man/tsum_TOST.Rd index a16d9416..da4a08e9 100644 --- a/man/tsum_TOST.Rd +++ b/man/tsum_TOST.Rd @@ -48,13 +48,13 @@ tsum_TOST( \item{var.equal}{a logical variable indicating whether to treat the two variances as being equal. If TRUE then the pooled variance is used to estimate the variance otherwise the Welch (or Satterthwaite) approximation to the degrees of freedom is used.} -\item{eqb}{Equivalence bound. Can provide 1 value (symmetric bound, negative value is taken as the lower bound) or 2 specific values that represent the upper and lower equivalence bounds.} +\item{eqb}{Equivalence bound. Can provide 1 value (symmetric bound, negative value is taken as the lower bound) or 2 specific values that represent the upper and lower equivalence bounds. Raw bounds are on the original scale of the mean (or mean difference) and are \emph{not} offsets from \code{mu}; bounds given with \code{eqbound_type = "SMD"} are standardized distances from \code{mu}.} \item{low_eqbound}{lower equivalence bounds (deprecated, use \code{eqb} instead).} \item{high_eqbound}{upper equivalence bounds (deprecated, use \code{eqb} instead).} -\item{mu}{a number indicating the true value of the mean for the two-tailed test (or difference in means if you are performing a two sample test).} +\item{mu}{a number indicating the true value of the mean for the two-tailed test (or difference in means if you are performing a two sample test). Default is 0. \code{mu} only sets the null value of the two-tailed test and the reference point of the standardized mean difference; the raw estimate, its confidence interval, and the raw equivalence bounds are all reported on the original scale.} \item{eqbound_type}{Type of equivalence bound. Can be 'SMD' for standardized mean difference (i.e., Cohen's d) or 'raw' for the mean difference. Default is 'raw'. Raw is strongly recommended as SMD bounds will produce biased results.} diff --git a/papers/Avocado_Update/Avocado_Update.R b/papers/Avocado_Update/Avocado_Update.R index bde8f50d..b71f0d77 100644 --- a/papers/Avocado_Update/Avocado_Update.R +++ b/papers/Avocado_Update/Avocado_Update.R @@ -3,7 +3,9 @@ knitr::opts_chunk$set( warning = FALSE, message = FALSE, echo = TRUE, - fig.pos = "H" + fig.pos = "H", + fig.width = 6, + fig.height = 4 ) knitr::knit_hooks$set(purl = knitr::hook_purl) library(TOSTER) @@ -11,7 +13,7 @@ library(ggplot2) library(ggdist) library(patchwork) -## ----hypplot, fig.width=6, fig.height=2.75, echo=FALSE, message = FALSE, warning = FALSE, fig.show='hold', fig.cap = "Type of Hypothesis"---- +## ----hypplot, fig.width=6, fig.height=2.75, echo=FALSE, message = FALSE, warning = FALSE, fig.show='hold', fig.cap = "Types of hypotheses tests supported by two one-sided tests (TOST) procedures."---- p1 = ggplot() + geom_vline(aes(xintercept = -.5), @@ -140,99 +142,345 @@ p1 + p2 + plot_annotation(tag_levels = 'A') data('sleep') library(jmv) data('bugs') +# keep participants with a recorded gender +bugs_g = droplevels(subset(bugs, Gender %in% c("Female", "Male"))) ## ----------------------------------------------------------------------------- -head(sleep,2) - -## ----------------------------------------------------------------------------- -# Formula Interface -res1 = t_TOST(formula = extra ~ group, data = sleep, - eqb = .5, smd_ci = "t") -# x & y Interface -res1a = t_TOST(x = subset(sleep,group==1)$extra, - y = subset(sleep,group==2)$extra, eqb =.5) +res1 = t_TOST( + # difference in "Gender" of outcome "LDHF" + formula = LDHF ~ Gender, + # data + data = bugs_g, + # equivalence bound + eqb = 1, + # sets type of SMD confidence interval + smd_ci = "z" +) ## ----------------------------------------------------------------------------- print(res1) -## ----cdplot,fig.width=6, fig.height=5,fig.cap="Example of consonance density plot."---- +## ----results = "asis"--------------------------------------------------------- +cat(describe(res1)) + +## ----genericplot,fig.width=6, fig.height=5,fig.cap="Results of the independent-samples equivalence test visualized with the default plot method. The top panel displays the raw mean difference with its 90% confidence interval, and the bottom panel displays the standardized effect size (Hedges's g~av~) with its 90% confidence interval. In both panels, the dashed vertical lines indicate the equivalence bounds (raw: -1 to 1; standardized: approximately -0.4 to 0.4), and the point estimate is marked by a filled circle. A 90% confidence interval is used because it corresponds to the two one-sided tests (TOST) procedure at an alpha level of 0.05."---- +plot(res1) + +## ----cdplot,fig.width=6, fig.height=5,fig.cap="Consonance density plot for the independent-samples equivalence test. The top panel displays the standardized effect size (Hedges's g~av~) and the bottom panel displays the raw mean difference. In each panel, the consonance density curve represents the distribution of confidence intervals across all levels, with color-coded regions corresponding to the 68%, 90%, 95%, and 99.9% confidence intervals. The point estimate is marked by a filled circle along the x-axis. The dashed vertical lines indicate the equivalence bounds (standardized: approximately -0.4 to 0.4; raw: -1 to 1). This visualization conveys the full range of effect sizes compatible with the data at varying confidence levels, rather than relying on a single confidence interval. Wider, less certain intervals (e.g., 99.9%) extend further from the point estimate, while narrower intervals (e.g., 68%) cluster near it."---- plot(res1, type = "cd") -## ----shadeplot,fig.width=6, fig.height=5, fig.cap = "Demonstrating the shading in plot method."---- -plot(res1, type = "cd", - ci_shades = c(.9,.95)) +## ----------------------------------------------------------------------------- +res4 = t_TOST( + # single sample, vector from which to estimate mean + x = bugs$LDHF, + # set nil significance test to 7.5 + mu = 7.5, + # set TOST bounds to 5.5 and 8.5 + eqb = c(5.5, 8.5) +) +res4 + +## ----------------------------------------------------------------------------- +res_tsum = tsum_TOST( + # sample mean + m1 = mean(bugs$LDHF, na.rm = TRUE), + # sample standard deviation + sd1 = sd(bugs$LDHF, na.rm = TRUE), + # sample size + n1 = length(na.omit(bugs$LDHF)), + # equivalence rather than minimal effects test + hypothesis = "EQU", + # sets type of SMD confidence interval + smd_ci = "t", + # equivalence bounds + eqb = c(5.5, 8.5) +) -## ----conplot,fig.width=6, fig.height=5, fig.cap = "Example of consonance plot."---- -plot(res1, type = "c", - ci_lines = c(.9,.95)) +res_tsum ## ----------------------------------------------------------------------------- -res2 = t_TOST(formula = extra ~ group, - data = sleep, - paired = TRUE, - eqb = .5) -res2 +res_sh1 = simple_htest( + extra ~ group, + data = sleep, + paired = TRUE, + # equivalence hypothesis + alternative = "equivalence", + # symmetric bounds of -0.5 and 0.5 + mu = 0.5 +) +res_sh1 ## ----------------------------------------------------------------------------- -res3 = t_TOST(x = bugs$LDHF, - y = bugs$LDLF, - paired = TRUE, - eqb = 1) -res3 +res_sh2 = simple_htest( + extra ~ group, + data = sleep, + paired = TRUE, + # non-inferiority rather than equivalence + alternative = "greater", + # margin of non-inferiority + mu = -0.5 +) +res_sh2 + +## ----results = "asis"--------------------------------------------------------- +cat(describe_htest(res_sh1)) + +## ----shplot1, fig.width=6, fig.height=3.5, fig.cap = "Estimate plot for an equivalence test via simple_htest."---- +plot_htest_est(res_sh1) ## ----------------------------------------------------------------------------- -res3a = t_TOST(x = bugs$LDHF, - y = bugs$LDLF, - paired = TRUE, - hypothesis = "MET", - eqb = 1) -res3a +smd_calc( + formula = extra ~ group, + data = sleep, + paired = TRUE, + # apply Hedges' correction + bias_correction = TRUE, + # apply the repeated measures correction + rm_correction = TRUE, + # return an htest object rather than a data frame + output = "htest" +) ## ----------------------------------------------------------------------------- -res4 = t_TOST(x = bugs$LDHF, - hypothesis = "EQU", - mu = 7.5, - eqb = c(5.5,8.5)) -res4 +smd_calc( + formula = extra ~ group, + data = sleep, + paired = TRUE, + # apply Hedges' correction + bias_correction = TRUE, + # apply the repeated measures correction + rm_correction = TRUE, + # equivalence hypothesis + alternative = "equivalence", + # equivalence bounds on the SMD + null.value = c(-0.5, 0.5), + # return an htest object rather than a data frame + output = "htest" +) ## ----------------------------------------------------------------------------- -res_tsum = tsum_TOST( - m1 = mean(bugs$LDHF, na.rm=TRUE), sd1 = sd(bugs$LDHF, na.rm=TRUE), - n1 = length(na.omit(bugs$LDHF)), - hypothesis = "EQU", smd_ci = "t", eqb = c(5.5, 8.5) +boot_smd_calc( + formula = extra ~ group, + data = sleep, + paired = TRUE, + # apply Hedges' correction + bias_correction = TRUE, + # apply the repeated measures correction + rm_correction = TRUE, + # equivalence hypothesis + alternative = "equivalence", + # equivalence bounds on the SMD + null.value = c(-0.5, 0.5) ) -res_tsum +## ----------------------------------------------------------------------------- +z_cor_test( + x = bugs$LDLF, + y = bugs$LDHF, + # type of correlation coefficient + method = "pearson", + # two-sided nil hypothesis test + alternative = "t" +) + +## ----------------------------------------------------------------------------- +res_boot_cor = boot_cor_test( + x = bugs$LDLF, + y = bugs$LDHF, + # type of correlation coefficient + method = "pearson", + # equivalence hypothesis + alternative = "equivalence", + # equivalence bounds of -0.4 and 0.4 + null = 0.4 +) + +print(res_boot_cor) + +## ----results = "asis"--------------------------------------------------------- +cat(describe_htest(res_boot_cor)) + +## ----------------------------------------------------------------------------- +# Significance test +compare_smd( + # SMD and sample size of the original study + smd1 = 0.95, + n1 = 25, + # SMD and sample size of the replication + smd2 = 0.23, + n2 = 50, + # both estimates come from paired designs + paired = TRUE, + # nil hypothesis test + null = 0, + # significance hypothesis + alternative = "two.sided" +) + +# Equivalence test +compare_smd( + # SMD and sample size of the original study + smd1 = 0.95, + n1 = 25, + # SMD and sample size of the replication + smd2 = 0.23, + n2 = 50, + # both estimates come from paired designs + paired = TRUE, + # equivalence bounds on the difference in SMDs + null = .25, + # equivalence hypothesis + alternative = "equivalence" +) ## ----------------------------------------------------------------------------- -test1 = wilcox_TOST(formula = extra ~ group, - data = sleep, - paired = FALSE, - eqb = .5) +compare_cor( + # correlation and degrees of freedom of the first study + r1 = 0.45, + df1 = 48, + # correlation and degrees of freedom of the second study + r2 = 0.25, + df2 = 78, + # equivalence hypothesis + alternative = "equivalence", + # equivalence bounds on the difference in correlations + null = 0.25 +) + +## ----------------------------------------------------------------------------- +test1 = wilcox_TOST( + formula = extra ~ group, + data = sleep, + paired = TRUE, + # equivalence bounds on the pseudo-median + eqb = .5 +) print(test1) ## ----------------------------------------------------------------------------- -set.seed(891111) -test1 = boot_t_TOST(formula = extra ~ group, - data = sleep, - paired = TRUE, - eqb = .5, - R = 999) +set.seed(19) +n_ecdf <- 200 + +ecdf_panel <- function(g1, g2, title, subtitle) { + df <- data.frame( + value = c(g1, g2), + Group = rep(c("Group 1", "Group 2"), c(length(g1), length(g2))) + ) + probs <- c(0.1, 0.5, 0.9) + seg <- data.frame( + p = probs, + x1 = quantile(g1, probs, type = 7), + x2 = quantile(g2, probs, type = 7) + ) + ggplot(df, aes(x = value, colour = Group, linetype = Group)) + + stat_ecdf(linewidth = 0.7) + + geom_segment( + data = seg, inherit.aes = FALSE, + aes(x = x1, xend = x2, y = p, yend = p), + arrow = arrow(length = unit(0.05, "in"), ends = "both"), + linewidth = 0.35, colour = "grey25" + ) + + scale_colour_grey(start = 0.1, end = 0.55) + + coord_cartesian(xlim = c(-7, 8)) + + labs(x = "Value", y = "Cumulative probability", + title = title, subtitle = subtitle) + + theme_minimal(base_size = 10) + + theme(legend.position = "bottom", + legend.title = element_blank(), + plot.title = element_text(size = 10, face = "bold"), + plot.subtitle = element_text(size = 8)) +} + +p_shift <- ecdf_panel( + rnorm(n_ecdf, 0, 1), rnorm(n_ecdf, 1.5, 1), + "A. Location shift holds", + "Horizontal gap is constant across the distribution" +) +p_viol <- ecdf_panel( + rnorm(n_ecdf, 0, 1), rnorm(n_ecdf, 0.5, 2.5), + "B. Location shift violated", + "Gap varies and reverses sign; curves cross" +) +p_shift + p_viol + plot_layout(guides = "collect") & + theme(legend.position = "bottom") +## ----------------------------------------------------------------------------- +# symmetry plot for sleep paired differences +d_sleep <- sleep$extra[sleep$group == 2] - sleep$extra[sleep$group == 1] +m <- median(d_sleep) +sorted <- sort(d_sleep) +upper <- sorted[sorted > m] - m +lower <- m - sorted[sorted < m] +k <- min(length(upper), length(lower)) +sp_df <- data.frame(lower = sort(lower)[1:k], upper = sort(upper)[1:k]) +mx <- max(sp_df$lower, sp_df$upper) + +ggplot(sp_df, aes(x = lower, y = upper)) + + geom_point(size = 2) + + geom_abline(intercept = 0, slope = 1, linetype = "dashed") + + coord_equal(xlim = c(0, mx), ylim = c(0, mx)) + + labs(x = "Distance below median", + y = "Distance above median") + + theme_minimal() + +## ----------------------------------------------------------------------------- +bm_test = brunner_munzel( + formula = LDHF ~ Gender, + data = bugs_g, + # equivalence hypothesis + alternative = "equivalence", + # equivalence bounds + # on the stochastic superiority scale + mu = c(0.3, 0.7) +) +print(bm_test) + +## ----------------------------------------------------------------------------- +set.seed(4522) +boot_t_test( + formula = extra ~ group, + data = sleep, + paired = TRUE, + # equivalence hypothesis + alternative = "equivalence", + # equivalence bounds + mu = c(-0.5, 0.5), + # number of bootstrap resamples + R = 999 +) + +## ----------------------------------------------------------------------------- +set.seed(891111) +test1 = boot_t_TOST( + formula = extra ~ group, + data = sleep, + paired = TRUE, + # equivalence bounds + eqb = .5, + # number of bootstrap resamples + R = 999 +) print(test1) ## ----------------------------------------------------------------------------- -x = 7; y = 10.5 -log(y) - log(x) -log(y/x) -exp(log(y) - log(x)) -y/x +set.seed(8812) +perm_t_test( + formula = extra ~ group, + data = sleep, + paired = TRUE, + # equivalence hypothesis + alternative = "equivalence", + # equivalence bounds + mu = c(-0.5, 0.5), + # number of random permutations + R = 999 +) -## ---- error=FALSE------------------------------------------------------------- +## ----error=FALSE-------------------------------------------------------------- log_TOST(mpg ~ am, data = mtcars) -## ---- error=FALSE------------------------------------------------------------- +## ----error=FALSE-------------------------------------------------------------- boot_log_TOST(mpg ~ am, data = mtcars, R=999) ## ----warning=FALSE, message=FALSE--------------------------------------------- @@ -242,32 +490,82 @@ anova(aovtest) ## ----------------------------------------------------------------------------- -equ_ftest(Fstat = 34.70228, df1 = 5, df2 = 66, eqb = 0.35) +equ_ftest( + # F statistic and degrees of freedom from the ANOVA table + Fstat = 34.70228, + df1 = 5, + df2 = 66, + # equivalence bound on partial eta-squared + eqb = 0.35 +) ## ----------------------------------------------------------------------------- -# Example using a purely within-subjects design +# Example using a purely within-subjects design # (Maxwell & Delaney, 2004, Chapter 12, Table 12.5, p. 578): library(afex) data(md_12.1) -aovtest2 = aov_ez("id", "rt", md_12.1, within = c("angle", "noise"), - anova_table=list(correction = "none", es = "none")) -equ_anova(aovtest2, - eqb = 0.35) +aovtest2 = aov_ez( + # participant identifier + "id", + # dependent variable + "rt", + # data + md_12.1, + # within-subjects factors + within = c("angle", "noise"), + anova_table = list(correction = "none", es = "none") +) +equ_anova(aovtest2, eqb = 0.35) ## ----------------------------------------------------------------------------- -compare_smd(smd1 = 0.95, - n1 = 25, - smd2 = 0.23, - n2 = 50, - paired = TRUE) +library(emmeans) +# estimated marginal means from the ANOVA fit earlier +emm = emmeans(aovtest, ~ spray) + +# two comparisons specified in advance as the hypotheses of interest +sprays = contrast( + emm, + method = list( + "C vs D" = c(0, 0, 1, -1, 0, 0), + "C vs E" = c(0, 0, 1, 0, -1, 0) + ) +) + +test( + sprays, + # equivalence bound on the original scale (insect counts) + delta = 5, + side = "equivalence", + adjust = "none" +) ## ----------------------------------------------------------------------------- -compare_smd(smd1 = 0.95, n1 = 25, smd2 = 0.23,n2 = 50, - paired = TRUE, TOST = TRUE, null = .25) +confint(sprays, level = 0.90) ## ----------------------------------------------------------------------------- -set.seed(4522) -boot_test = boot_compare_smd(x1 = rnorm(25,.95), x2 = rnorm(50), - paired = TRUE, alpha = .1) -boot_test +power_t_TOST( + # true mean difference + delta = 0, + # assumed standard deviation + sd = 1, + # equivalence bounds + eqb = 0.5, + alpha = 0.05, + # leaving n unspecified solves for the n giving 80% power + power = 0.8, + type = "two.sample" +) + +## ----------------------------------------------------------------------------- +power_z_cor( + # true correlation + rho = 0, + # leaving n unspecified solves for the n giving 80% power + power = 0.8, + # equivalence bounds of -0.3 and 0.3 + null = 0.3, + alpha = 0.05, + # equivalence hypothesis + alternative = "equivalence" +) diff --git a/papers/Avocado_Update/Avocado_Update.Rmd b/papers/Avocado_Update/Avocado_Update.Rmd index e611c8fd..ce2122ad 100644 --- a/papers/Avocado_Update/Avocado_Update.Rmd +++ b/papers/Avocado_Update/Avocado_Update.Rmd @@ -5,45 +5,50 @@ shorttitle: "Updated TOSTER R Package" author: - name: Aaron R. Caldwell affil: a - email: arcaldwell49@gmail.com + email: caldwellaaron@uams.edu type: PREPRINT output: - papaja::apa6_docx: default - rticles::tf_article: + rticles::tf_article: extra_dependencies: ["float"] + papaja::apa6_docx: default bibliography: interactcadsample.bib #appendix: appendix.tex abstract: | - Equivalence testing is arguably under utilized by experimental - researchers. Due to limited software support for such analyses, and - little education on the topic in graduate programs, the utilization of - equivalence testings still appares to be low. - One option for equivalence testing is the use of two one-sided tests (TOST). - The TOSTER R package and jamovi module, originally developed by - Daniel Lakens in 2017, was created to make TOST - more accessible to the average researcher. - In the past two years, I have made significant changes to the TOSTER package - in order to increase its accessibility and provide more robust analysis - options for researchers. In this paper, I will detail the changes to the - package and highlight new analysis options that will make TOST easier for the - average quantitative researcher. + Despite decades of methodological guidance, researchers continue to + misinterpret non-significant results as evidence for the absence of an effect. + Equivalence testing via two one-sided tests (TOST) provides a principled + alternative, but adoption remains limited by software accessibility and + lack of training. The TOSTER R package, originally developed by Lakens (2017), + made TOST accessible to experimental psychologists. This paper describes + a major update to the package that expands its scope with (1) a unified + t-test interface supporting both equivalence and minimal effect testing, + (2) a simplified hypothesis testing interface returning standard R objects, + (3) tools for computing and testing standardized effect sizes and correlations, + (4) robust and resampling-based alternatives including bootstrap and + permutation tests, (5) equivalence testing for ANOVAs, and (6) power + analysis and sample size planning. Each capability is demonstrated with + worked examples. TOSTER is also available as a jamovi module for + researchers who prefer a graphical interface. keywords: | - statistics, bootstrap, minimal effects test, NHST, TOST + statistics, bootstrap, minimal effects test, NHST, TOST, R package, robust statistics header-includes: | \usepackage{hyperref} \usepackage[utf8]{inputenc} \def\tightlist{} + \providecommand{\pandocbounded}[1]{#1} \hypersetup{ colorlinks=true, citecolor = cyan, linkcolor=blue, - filecolor=magenta, + filecolor=magenta, urlcolor=blue } affiliation: - num: a address: | - Natick, MA, + Department of Biostatistics, Fay W. Boozman College of Public Health, University of Arkansas for Medical Sciences Northwest, Springdale, AR +editor_options: + chunk_output_type: console --- ```{r setup, echo=FALSE} @@ -51,7 +56,9 @@ knitr::opts_chunk$set( warning = FALSE, message = FALSE, echo = TRUE, - fig.pos = "H" + fig.pos = "H", + fig.width = 6, + fig.height = 4 ) knitr::knit_hooks$set(purl = knitr::hook_purl) library(TOSTER) @@ -60,45 +67,73 @@ library(ggdist) library(patchwork) ``` - # Introduction -Researchers often erroneously declare that no statistical effect exists based on a single "non-significant" p-value [@blandaltman95]. -In many of these cases, the data may corroborate the researcher's claim, but the interpretation of a null hypothesis significance test (NHST), wherein the lack of significance is considered evidence of "no effect", is nonetheless incorrect. -In order to statistically test for whether there is practically no effect, researchers could use equivalence testing. -Equivalence testing is used when the goal of a statistical test is to demonstrate that the difference between two conditions is too small to be meaningful. For example, if a researcher wanted to test whether a new drug was no worse than a standard drug, the null hypothesis would be that the new drug is worse than the standard drug by more than a meaningful amount, and the alternative hypothesis would be that the difference between the two drugs is small enough to be meaningless. A very simple equivalence testing approach is the use of “two one-sided tests” (TOST) [@schuirmann1987]. - -The TOST procedure is a statistical test of whether a parameter (e.g., mean difference) is within a specified interval. The TOST procedure can be used to test the equivalence of two means, two proportions, two regression coefficients, and even two variances. -An upper ($\Delta_U$) and lower ($\Delta_L$) equivalence bound is specified based on the smallest effect size of interest (SESOI). -If the TOST is below a pre-specified alpha level, then the effect can be considered close enough to zero to be practically equivalent [@lakens_ori]. - -Both the complaints about erroneous conclusions regarding equivalence [@blandaltman95] and proposed statistical solutions [@schuirmann1987] have existed for decades now. Yet, the problem appears to persist in many applied disciplines. -I believe the continued dissonance is due to a general lack of education on equivalence testing and a struggle for many applied researchers to implement equivalence testing. -In my experience, most researchers have received some degree of statistical training in their doctoral or master's studies, but it is rare that any have idea of how to use TOST. -It may also be difficult to implement equivalence testing for many researchers. -This may be caused by most statistical software defaulting to a null hypothesis of zero, -or even completely lacking an ability to change the null hypothesis. -Therefore, I feel the continued development of educational content on TOST, and software to help with such analyses, would be beneficial to many quantitative researchers. - -The TOSTER R package^[All updates to the package can be found on the package's website https://aaroncaldwell.us/TOSTERpkg ] was originally developed in by @lakens_ori to introduce -experimental psychologists to the concept of equivalence testing and provide an easy-to-use implementation in R. -In the years since that publication, I have made a significant update to the package in order to improve the user interface and expand the tools available within the package. -An experienced R programmer may have no problem performing equivalence testing within R, -but beginners may struggle with both writing the code and interpreting the output. -If you fall into that category, I would suggest using jamovi, -an open-source statistical software, -that has a TOSTER module to perform equivalence/TOST analyses. -Not all the features listed in this manuscript are available in the jamovi module, but it is a good starting point for most researchers without statistical programming experience. - -In this manuscript, I will detail the updates to the TOSTER package, and give some basic usage examples of some of the new functions. This is meant to just be an introduction to *how* to perform such analyses, and provide a little bit of context for when such analyses are appropriate. For a greater introduction to equivalence testing, I would suggest reading other methodological tutorials [@lakens_ori;@lakens2018equivalence;@lakens2020improving;@mazzolari2022myths]. +Researchers routinely interpret non-significant p-values from a nil-hypothesis (i.e., null hypothesis that the mean difference equals zero) test as evidence that no effect exists --- a logical error that has been recognized for decades [@blandaltman95]. A non-significant result means only that the data are compatible with the null hypothesis; it does not mean the null hypothesis is true. + +Equivalence testing provides a principled framework for evaluating whether an effect is small enough to be considered negligible. The two one-sided tests (TOST) procedure is the most widely used approach [@schuirmann1987]. Researchers specify an upper ($\Delta_U$) and lower ($\Delta_L$) equivalence bound based on the smallest effect size of interest (SESOI). Two one-sided tests then evaluate whether the observed effect falls within those bounds. If both tests reject at a pre-specified alpha level, the effect can be considered practically equivalent to zero [@lakens_ori]. + +The TOSTER R package^[All updates to the package can be found on the package's website that I maintain ] was originally developed by @lakens_ori to introduce experimental psychologists to the concept of equivalence testing and provide an accessible implementation in R. The package provided dedicated functions for independent, paired, and one-sample t-tests, as well as correlations and meta-analytic equivalence tests. It has been widely adopted, with over 1000 citations to date. + +However, the original package had a number of limitations. It offered a function-per-design interface (separate functions for each t-test type), lacked robust alternatives, provided no support for ANOVA equivalence testing, and had no tools for comparing effect sizes across studies. Also, the package did not integrate with standard R workflows and usually just printed results to the console rather than returning objects that could be manipulated or plotted. + +This paper provides a tutorial-style introduction to the updated TOSTER package, organized around its major capabilities: (1) a unified t-test interface (`t_TOST`) that pairs a standard significance test with an equivalence test and supports minimal effect testing, (2) a simplified hypothesis testing interface (`simple_htest`) that returns standard `htest` objects, (3) tools for computing and testing standardized effect sizes --- including standardized mean differences (SMDs), rank-based effect sizes, and correlations, (4) robust and resampling-based alternatives including the Brunner-Munzel test, bootstrap and permutation t-tests, and log-transformed methods, (5) equivalence testing for ANOVAs, and (6) power analysis and sample size planning. Each section motivates when and why a researcher would use TOSTER's functions before demonstrating how TOSTER actually works. + +TOSTER occupies a specific niche in the R ecosystem in that it is a frequentist toolkit for equivalence testing of standard designs. Researchers interested in Bayesian approaches to evidence for the null have excellent options (e.g., "bayestestR" by @bayestestR). For equivalence-style contrasts in more complex models (e.g., mixed models) the "emmeans" [@emmeans] and "marginaleffects" [@marginaleffects] packages can accommodate non-zero null hypotheses. TOSTER fills the space of accessible, self-contained equivalence testing for common, albeit simple, research designs. For a broader introduction to the methodology, see @lakens_ori, @lakens2018equivalence, @lakens2020improving, @mazzolari2022myths, and @Tomek_Caldwell_Eisner_2026. TOSTER is also available as a [jamovi](https://www.jamovi.org/) module for researchers who prefer a graphical interface although it has limited capabilities compared to the R package. + +# Setting Equivalence Bounds + +There are two questions that I think warrant consideration when using equivalence testing: 1) what quantity the hypothesis concerns, and 2) how much of that quantity is too small to matter. The first is a choice of estimand, the second a choice of bounds. I believe both must be considered when undertaking equivalence testing because a bound is a magnitude on the scale of some particular quantity, and the same number can describe quite different hypotheses depending on what is being estimated. + +## Choosing an Estimand + +The estimand is the quantity a study is attempting to estimate [@Lundberg_Johnson_Stewart_2021]. In an ideal scenario, the hypothesis should determine the estimand, and estimand then narrows the set of appropriate tests. Not considering the estimand is a reliable way to end up testing the wrong hypothesis. + +This matters more for equivalence testing than for nil-hypothesis testing. When two distributions are identical, the location-type quantities in Table \ref{tab:estimands} all take their null values at once (the mean difference and the pseudo-median are both zero, and the probability of superiority is exactly 0.5) so a nil test is comparatively forgiving of an unexamined estimand. An equivalence bound makes the decision more consequential. It is a specific magnitude on a specific scale, and there is generally no way to translate a bound on one scale into a bound on another (at least without making very serious assumptions). Bounds of $\pm$ 0.5 placed on a mean difference, on a median/pseudo-median, and on the SMD describe three different hypotheses, only one of which is likely to be the intended one. + +Table \ref{tab:estimands} lists the estimands TOSTER can place bounds on and the functions that target each. Two entries deserve comment. The trimmed mean, available through the `tr` argument of the resampling functions (`tr = 0` by default), coincides with the mean only when the distribution is symmetric; setting `tr` therefore changes the estimand rather than merely making the same estimate more robust. The SMD is a rescaling of the mean difference by a sample-dependent quantity, which is why it warrants the separate caution given later in this paper. + +Table: \label{tab:estimands}Estimands supported by TOSTER, the scale on which equivalence bounds are specified for each, and the primary functions targeting them. + +| Estimand | Scale of the bound | Primary functions | +|:---------------------------|:--------------------|:--------------------------| +| Mean or mean difference | Original units | `t_TOST`, `tsum_TOST`, `simple_htest` | +| Mean, with empirically calibrated reference distributions | Original units | `boot_t_TOST`, `boot_t_test`, `perm_t_test` | +| Trimmed mean difference | Original units | `boot_t_TOST`, `perm_t_test` (via `tr`) | +| Ratio of geometric means | Multiplicative ratio | `log_TOST`, `boot_log_TOST` | +| Pseudo-median (Hodges-Lehmann) | Original units | `wilcox_TOST` | +| Stochastic superiority | Probability (0 to 1) | `brunner_munzel` | +| Standardized mean difference | Standard deviation units | `smd_calc`, `boot_smd_calc` | +| Correlation | Correlation ($-1$ to 1) | `z_cor_test`, `boot_cor_test` | +| Proportion of variance explained | Proportion (0 to 1) | `equ_anova`, `equ_ftest` | + +In applied settings the estimand is not fully pinned down by the choice of summary statistic either. Decisions about how intercurrent events (post-randomization events such as dropout) and missing data are handled determine which population summary is being estimated at all. Two analyses that both report "the mean difference" may be estimating materially different things if they resolve these questions differently. + +It is prudent to settle on the estimand first and then justify a bound on its scale, rather than the dubious process selecting a test from decision tree and adopting whatever quantity it happens to return. This estimand-first style approach also makes the robust methods described later in this paper easier to navigate. The robust methods discussed here are often tests of different quantities, and only some of them remain answers to a hypothesis about means. + +## Justifying the Bounds + +Before applying any equivalence test, the researcher must specify the equivalence bounds which defines the range of effect sizes considered too small to be meaningful. There is no single correct method for choosing these bounds; the appropriate approach depends entirely on the research question and domain of research. + +If a researcher has an equivalence hypothesis, they should be able to articulate what magnitude of effect would be too small to matter in context. The SESOI must flow from the hypothesis formulated by theory and context not from a formula. However, there are several general strategies that have been evaluated [@delta2]. Anchor-based methods tie the bound to an externally meaningful criterion, such as a clinically meaningful difference or a "just-noticeable" difference [@sesoi]. Distribution-based methods define the bound as a fraction of the measurement error [@Jacobson_Truax_1991], though this approach is generally not recommended [@delta2]. Cost-benefit, also referred to as health economic methods [@delta2], reasoning sets the bound at the point where there is a net benefit relative to the cost of an intervention. Researchers can draw on existing literature or normative data to identify effect magnitudes that prior work suggests are negligible. When theory is sufficiently precise, however, the bound may require no external benchmark at all, and the hypothesis itself implies what magnitude of effect would be too small to matter. + +Using "default" bounds on the SMD (also known as Cohen's d) based on Cohen's benchmarks (e.g., SMD = 0.2, 0.5, 0.8 to imply small, medium, or large effects, respectively) without domain-specific justification is strongly discouraged. Cohen himself stated that these conventions were "recommended for use only when no better basis for estimating the index is available" (p. 25, as cited in @panzarella2021) and reportedly came to regret having proposed them at all [@funder2019]. These benchmarks should never be used as universal thresholds. When applied uncritically, these benchmarks can produce equivalence bounds that are too wide, too narrow, and likely entirely disconnected from the substantive research question. + +If a researcher cannot specify meaningful bounds, this itself is informative as it suggests the equivalence hypothesis is not well enough developed to test such a hypothesis. In such cases, it may be more productive to focus on effect estimation and description rather than leaping to hypothesis tests [@scheel_hypothesis]. Throughout the examples in this paper, equivalence bounds, and the data sets themselves, are chosen for illustrative purposes; readers should not treat them as direct recommendations for their own research. # TOST with t-tests -In an effort to make TOSTER more informative and easier to use, a new function `t_TOST` was created. This function operates very similarly to base R's `t.test` function, but performs 3 t-tests (one two-tailed and two one-tailed tests). In addition, this function has a generic method where two vectors can be supplied or a formula can be given (e.g.,`y ~ group`). This function also makes it easier to switch between types of t-tests. All three types (two sample, one sample, and paired samples) can be performed/calculated from the same function. Moreover, the output from this function is verbose, and should make the decisions derived from the function more informative and user-friendly. +The t-test is the standard tool for comparing means. Its construction is simple: we estimate a mean (one-sample), the mean of the paired differences (paired samples), or the difference in means between two groups, and then divide that estimate by its standard error. The resulting t-statistic is compared against a t-distribution to obtain p-values and confidence intervals. Written generally, the statistic takes the form $t = (\hat{\mu} - \mu_0)/SE_{\hat{\mu}}$, where $\hat{\mu}$ is the estimate and $\mu_0$ is the value being tested against. + +What matters for equivalence testing is that $\mu_0$ is a choice rather than a fixed feature of the test. A traditional nil hypothesis test fixes $\mu_0 = 0$ and asks whether the mean, or mean difference, is exactly zero. TOST changes none of the underlying machinery; it changes only what is substituted for $\mu_0$. Two one-sided tests are performed --- one against the lower bound ($\mu_0 = \Delta_L$) and one against the upper bound ($\mu_0 = \Delta_U$) --- and equivalence is concluded only if both reject. Because each test is one-sided at $\alpha$, the interval estimate corresponding to the procedure is a $1-2\alpha$ (typically 90%) confidence interval, which is what TOSTER reports and plots. -Also, `t_TOST` is not limited to equivalence tests. Minimal effects testing (MET) is possible. MET is useful for situations where the hypothesis is about a minimal effect and the *null hypothesis is equivalence* (see Figure 1) [@mazzolari2022myths]. +Throughout, the estimand for a t-test is the mean, or mean difference, on the original scale of measurement. As discussed above, this is a default rather than an inviolable property of the test, and it is worth restating here because several of the alternatives described later in this paper (the rank-based tests in particular) estimate different quantities entirely, and are not interchangeable substitutes when the hypothesis concerns means. -```{r hypplot, fig.width=6, fig.height=2.75, echo=FALSE, message = FALSE, warning = FALSE, fig.show='hold', fig.cap = "Type of Hypothesis"} +The `t_TOST` function in TOSTER provides a unified interface for equivalence and minimal effect testing with t-tests. It runs a standard nil significance test alongside the equivalence (or minimal effect) test, because in practice researchers may want both: "Is there a significant effect?" and "Can I rule out a meaningful effect?" The function handles independent, paired, and one-sample designs through the `paired` argument and accepts data via either a formula interface or raw vectors, making it a direct analog to base R's `t.test`. Additionally, the output includes an SMD calculation alongside the unstandarized mean difference with appropriate, albeit approximate, confidence intervals. For researchers who only want to test a single hypothesis at a time, the `simple_htest` function (described in the next section) provides a lighter alternative. + +Minimal effect testing (MET) is also supported. MET is useful when the hypothesis is that an effect *exceeds* a meaningful threshold. In the case of MET, the null hypothesis is equivalence, and rejection implies a practically meaningful effect (see Figure 1) [@mazzolari2022myths]. + +```{r hypplot, fig.width=6, fig.height=2.75, echo=FALSE, message = FALSE, warning = FALSE, fig.show='hold', fig.cap = "Types of hypotheses tests supported by two one-sided tests (TOST) procedures."} p1 = ggplot() + geom_vline(aes(xintercept = -.5), @@ -226,273 +261,607 @@ p1 + p2 + plot_annotation(tag_levels = 'A') \newpage -In these examples of `t_TOST`, we will use the `bugs` data from the `jmv` R package and the `sleep` data. +## Independent Groups Example + +Throughout this manuscript, examples use two datasets. The `bugs` data from the `jmv` R package contains participants' ratings (on a 0--10 scale) of their desire to kill bugs that vary in how disgusting and frightening they are, and is used for the independent-groups and one-sample examples. The `sleep` data, which records the increase in hours of sleep for the same 10 patients under two drugs, is used for the paired examples in later sections. Because one participant in `bugs` has no recorded gender, I first restrict the data to participants who reported either female or male gender. ```{r} data('sleep') library(jmv) data('bugs') +# keep participants with a recorded gender +bugs_g = droplevels(subset(bugs, Gender %in% c("Female", "Male"))) ``` +For the first example, we compare female and male participants' ratings for the low disgust, high fear (`LDHF`) bug with equivalence bounds (set by the `eqb` argument) of $\pm$ 1 point on the rating scale. The `smd_ci` argument can also be set to use one of four possible calculations for the SMD confidence interval. In the example below, I have opted to go with the normal approximation for computational ease; such approximations tend provide adequate coverage [@Viechtbauer_2007]. The formula interface works almost identically to `t.test`: -## Independent Groups +```{r} +res1 = t_TOST( + # difference in "Gender" of outcome "LDHF" + formula = LDHF ~ Gender, + # data + data = bugs_g, + # equivalence bound + eqb = 1, + # sets type of SMD confidence interval + smd_ci = "z" +) +``` -For this example, we will use the sleep data. In this data, there is a `group` variable and an outcome `extra`. +The `print` method provides a verbose summary including the two-tailed test, both one-sided equivalence tests, and the SMD (Hedges' $g$ by default): ```{r} -head(sleep,2) +print(res1) ``` -We will assume the data are independent (in reality this is paired data), and that we have equivalence bounds of +/- 0.5 units of `extra`. All we need to do is provide the `formula`, `data`, and `eqb` arguments for the function to run appropriately. In addition, we can set the `var.equal` argument (to assume equal variance), and the `paired` argument (sets if the data is paired or not). Both are logical indicators that can be set to TRUE or FALSE. The `alpha` is automatically set to 0.05 but this can also be adjusted by the user depending on the desired alpha-level^[I strongly recommend users "justify their alpha" [@jya1;@jya2], and the justification process can be aided by my other R package [Superpower](https://aaroncaldwell.us/Superpower)]. +A greater description of the results can be accomplished with `describe` method. -Standardize mean differences (SMDs) are provided in the output for any t-test based TOST analysis (e.g., Cohen's d). The Hedges's corrected SMD [@hedges_bias] is automatically calculated, but this can be overridden with the `bias_correction` argument^[Glass's delta can also be produced in the output by using the `glass` argument]. In previous versions of this package, the equivalence bounds could be set by the SMD (e.g., equivalence bound of 0.5 SD), but this is an erroneous approach since the bound would be dependent upon the *sample* variance. However, users can opt for such an analysis by setting `eqbound_type` to SMD, which will produce a noticeable warning to the R console. +```{r, results = "asis"} +cat(describe(res1)) +``` -The `hypothesis` argument is automatically set to "EQU" for equivalence, but if a minimal effect is of interest then "MET" can be supplied. +\newpage -```{r} -# Formula Interface -res1 = t_TOST(formula = extra ~ group, data = sleep, - eqb = .5, smd_ci = "t") -# x & y Interface -res1a = t_TOST(x = subset(sleep,group==1)$extra, - y = subset(sleep,group==2)$extra, eqb =.5) +The default visualization provided by the generic `plot` method for `t_TOST` +provides a simple visualization of both effect sizes and their respective confidence intervals alongside the equivalence bounds. Test information is also printed at the top of the plot. + +```{r genericplot,fig.width=6, fig.height=5,fig.cap="Results of the independent-samples equivalence test visualized with the default plot method. The top panel displays the raw mean difference with its 90% confidence interval, and the bottom panel displays the standardized effect size (Hedges's g~av~) with its 90% confidence interval. In both panels, the dashed vertical lines indicate the equivalence bounds (raw: -1 to 1; standardized: approximately -0.4 to 0.4), and the point estimate is marked by a filled circle. A 90% confidence interval is used because it corresponds to the two one-sided tests (TOST) procedure at an alpha level of 0.05."} +plot(res1) ``` -Once the function has run, we can print the results with the `print` method. -This provides a verbose summary of the results. +Also when the generic `plot` method has the `type` argument set to "cd" this produces a consonance density plot, inspired by the "concurve" R package [@rafi2020], that shows the estimate, confidence intervals, and equivalence bounds simultaneously: + +```{r cdplot,fig.width=6, fig.height=5,fig.cap="Consonance density plot for the independent-samples equivalence test. The top panel displays the standardized effect size (Hedges's g~av~) and the bottom panel displays the raw mean difference. In each panel, the consonance density curve represents the distribution of confidence intervals across all levels, with color-coded regions corresponding to the 68%, 90%, 95%, and 99.9% confidence intervals. The point estimate is marked by a filled circle along the x-axis. The dashed vertical lines indicate the equivalence bounds (standardized: approximately -0.4 to 0.4; raw: -1 to 1). This visualization conveys the full range of effect sizes compatible with the data at varying confidence levels, rather than relying on a single confidence interval. Wider, less certain intervals (e.g., 99.9%) extend further from the point estimate, while narrower intervals (e.g., 68%) cluster near it."} +plot(res1, type = "cd") +``` + +Other plot types are available: `type = "c"` produces a consonance plot showing multiple confidence interval levels, and shading can be customized with the `ci_shades` argument. + +## One-Sample t-test with Asymmetric Bounds + +When the equivalence bounds are not symmetric around the null, two values can be supplied to `eqb`. This is common when the research question implies asymmetric consequences. Similarly, we may want to test the mean itself rather than a mean difference. This harkens back to the original use of the t-test by Gosset at Guinness Brewery, where the concern was whether a single sample mean fell within acceptable limits. Here we test whether the mean LDHF rating falls between 5.5 and 8.5, while the nil hypothesis test is performed against a hypothesized value of 7.5 (set with the `mu` argument). Note that the equivalence bounds are specified on the original scale of the data (i.e., they are values of the mean, not distances from `mu`), and the raw estimate and its confidence interval are reported on that same scale. The SMD, in contrast, is calculated relative to `mu` (i.e., $(\bar{x} - \mu)/s$), so its bounds are expressed as standardized distances from `mu`; the printed output notes this whenever `mu` is not zero: ```{r} -print(res1) +res4 = t_TOST( + # single sample, vector from which to estimate mean + x = bugs$LDHF, + # set nil significance test to 7.5 + mu = 7.5, + # set TOST bounds to 5.5 and 8.5 + eqb = c(5.5, 8.5) +) +res4 ``` -\newpage +The same interface handles paired designs by setting `paired = TRUE`. SMDs are reported automatically; Hedges's correction is applied by default but can be toggled with `bias_correction`, and Glass's delta can be requested via the `glass` argument. Setting equivalence bounds in SMD units (via `eqbound_type = "SMD"`) is possible but discouraged because the bound becomes dependent on sample variance (see the Standardized Effect Sizes section below). -Another nice feature is the generic `plot` method that can provide a visual summary of the results. Most of the plots in this package were inspired by the [concurve](https://cran.r-project.org/package=concurve) R package [@rafi2020]. -There are two types of plots that can be produced. The first, and default, is the consonance density plot (`type = "cd"`). +## Checking Assumptions -```{r cdplot,fig.width=6, fig.height=5,fig.cap="Example of consonance density plot."} -plot(res1, type = "cd") +The parametric t-tests implemented in `t_TOST` assume independent observations, approximately normal residuals (or differences, in the paired and one-sample cases), and, for Student's form, equal variances between groups; Welch's correction relaxes the equal-variance assumption and is the default. The residual normality assumption matters most in small samples, where the central limit theorem provides limited protection. Visual diagnostics are generally more informative than formal tests: QQ plots of residuals or differences for normality, side-by-side boxplots or density overlays for variance comparison, and inspection of residual plots or boxplots for extreme or influential observations. A worked diagnostic workflow for each design is provided in the [online supplement](https://doi.org/10.5281/zenodo.22776189). When assumptions are seriously in doubt, the bootstrap and permutation alternatives discussed in later sections provide valid inference under relaxed --— though not eliminated —-- distributional requirements. + +## Using Summary Statistics + +When only summary statistics are available (e.g., from a published article), the `tsum_TOST` function performs the same tests using sample means, standard deviations, sample sizes, and (for paired designs) the correlation between measures^[The `extract_r_paired` function can be used if the correlation between paired observations is not readily available.]: + +```{r} +res_tsum = tsum_TOST( + # sample mean + m1 = mean(bugs$LDHF, na.rm = TRUE), + # sample standard deviation + sd1 = sd(bugs$LDHF, na.rm = TRUE), + # sample size + n1 = length(na.omit(bugs$LDHF)), + # equivalence rather than minimal effects test + hypothesis = "EQU", + # sets type of SMD confidence interval + smd_ci = "t", + # equivalence bounds + eqb = c(5.5, 8.5) +) + +res_tsum ``` -\newpage +# Simplified Hypothesis Testing + +The `t_TOST` function is designed to be comprehensive in that it runs three tests, computes standardized effect sizes, and produces verbose output. This is useful for exploration or situations where researchers *always* want to pair a traditional nil significance test with an equivalence test. However, sometimes a researcher has a single specific hypothesis to test, or simply wants less verbose output (e.g., SMD calculation is not wanted). The `simple_htest` function provides a lighter interface for this purpose. It returns a standard R `htest` object (the same class returned by `t.test()` and `wilcox.test()`) but with expanded `alternative` options that include `"equivalence"` and `"minimal.effect"`. This means researchers can perform equivalence testing with the same familiar interface they already use for standard hypothesis tests^[In fact, users can mostly replace `t.test()` and `wilcox.test()` with `simple_htest` as it also allows for the standard alternative hypotheses of two-sided, greater, less. If you have a hypothesis that would traditionally utilize a t-test or Wilcoxon-Mann-Whitney (WMW) test, then you can jump right to using `simple_htest` in TOSTER]. + +Alongside `simple_htest`, a set of helper functions makes it easy to work with any `htest` object: `as_htest` converts verbose TOST output to the simpler format, `describe_htest` generates formatted text for reporting, `df_htest` converts results to data frames for tabulation, and `plot_htest_est` produces estimate plots with equivalence bounds. Checking assumptions would follow the same workflow as `t_TOST`, as both are using t-tests, as discussed in the [online supplement](https://doi.org/10.5281/zenodo.22776189). + +## The simplified function + +The `simple_htest` function supports `t.test` and `wilcox.test` as the underlying test (via the `test` argument) and all five alternative hypotheses: `"two.sided"`, `"less"`, `"greater"`, `"equivalence"`, and `"minimal.effect"`. The `mu` parameter specifies equivalence bounds. This single value creates symmetric bounds (e.g., if 1 is provided at `mu` with `alternative = "equivalence"` then the equivalence region will be [-1,1]), or two values can be given for asymmetric bounds. -The shading pattern can be modified with the `ci_shades`. +```{r} +res_sh1 = simple_htest( + extra ~ group, + data = sleep, + paired = TRUE, + # equivalence hypothesis + alternative = "equivalence", + # symmetric bounds of -0.5 and 0.5 + mu = 0.5 +) +res_sh1 +``` + +Additionally, tests other that TOST can be applied with this function. The traditional nil-hypothesis tests, non-inferiority, or even superiority-by-a-margin hypotheses can all be tested with this function. For example, let's say we want to test that a treatment group in the sleep data was just non-inferior to the other treatment rather than equivalent. This can be accomplished by just setting the direction with the `alternative` argument and the margin of non-inferiority by the `mu` argument. -```{r shadeplot,fig.width=6, fig.height=5, fig.cap = "Demonstrating the shading in plot method."} -plot(res1, type = "cd", - ci_shades = c(.9,.95)) +```{r} +res_sh2 = simple_htest( + extra ~ group, + data = sleep, + paired = TRUE, + # non-inferiority rather than equivalence + alternative = "greater", + # margin of non-inferiority + mu = -0.5 +) +res_sh2 ``` -\newpage +Notice how the output, in either hypothesis test above, is a single clean `htest` object. This is much more concise than the verbose `t_TOST` output shown previously on purpose. If you want to perform additional tests (such as a complementary nil significance tests) then that has to be done separately. However, there are some methods (described below) that make this `htest` format easy to deal with when reporting statistical test results. -Consonance plots, where all confidence intervals can be simultaneous plotted, can also be produced. The advantage here is multiple confidence interval lines can plotted at once. +## Describing and Tabulating Results -```{r conplot,fig.width=6, fig.height=5, fig.cap = "Example of consonance plot."} -plot(res1, type = "c", - ci_lines = c(.9,.95)) +For writing up results, `describe_htest` generates a formatted text string following typical scientific reporting conventions: + +```{r, results = "asis"} +cat(describe_htest(res_sh1)) ``` -\newpage -## Paired Sample +## Plotting Results -To perform TOST on paired samples, the process does not change much. We could process the test the same way by providing a formula. All we would need to then is change `paired` to TRUE. +A visual summary of the estimate and confidence interval can be produced with `plot_htest_est`. For equivalence and minimal effect tests, the equivalence bounds are shown as dashed vertical lines: -```{r} -res2 = t_TOST(formula = extra ~ group, - data = sleep, - paired = TRUE, - eqb = .5) -res2 +```{r shplot1, fig.width=6, fig.height=3.5, fig.cap = "Estimate plot for an equivalence test via simple_htest."} +plot_htest_est(res_sh1) ``` \newpage -However, we may have two vectors of data that are paired. So instead we may want to just provide those separately rather than using a data set and setting the formula. This can be demonstrated with the "bugs" data. +# Standardized Effect Sizes + +This section provides a unified treatment of the standardized effect size tools in TOSTER and I cover SMDs, correlation coefficients, and tools for comparing both between studies. Before demonstrating these tools, it is worth discussing the limitations of standardized effect sizes, because these limitations are especially important for equivalence testing. + +## A Brief Warning on Standardized Effect Sizes + +Standardized effect sizes --- Cohen's $d$, correlation coefficients, standardized regression coefficients --- are appealing because they allow comparison across studies and scales, are required by many journals, and serve as the primary currency of meta-analysis. However, they have well-documented problems that are especially relevant to equivalence testing. + +SMDs are sensitive to the sample variance. The "same" real-world effect produces different $d$ values across populations and study designs. The ubiquitously reported Cohen's $d$ conflates the magnitude of the mean difference with the precision of measurement, which means that a narrow equivalence bound on $d$ may correspond to a very different raw-scale bound depending on the variability of the sample [@Caldwell2020; @baguley2009]. This makes it unclear what, substantively, is being declared "equivalent". Are we claiming the means are close, or that the means are close relative to the variance? The choice of denominator (pooled SD, control SD, within-subject SD) further complicates matters. + +Correlations have analogous issues. @tukey1969 noted that correlations are influenced by the range of both variables, so the "same" bivariate relationship produces different coefficients depending on sample selection. A correlation of 0.3 in a restricted-range sample may correspond to a much larger association in the full population. Standardized regression coefficients share these vulnerabilities. These depend on the variances of both the predictor and outcome, which makes them unstable across samples and difficult to interpret substantively [@greenland1991]. + +The implication for equivalence testing is straightforward. When the measurement scale is meaningful, researchers should generally prefer *unstandardized* (raw-scale) equivalence bounds. When standardized bounds are used, the choice should be justified with reference to the specific population and measurement context, not borrowed from generic benchmarks. + +With these caveats in mind, the following subsections describe the tools TOSTER provides for computing and testing standardized effect sizes assuming they are appropriate. + +## Standardized Mean Difference Functions + +The `smd_calc` function computes an SMD --- Cohen's $d$, Hedges' $g$ (bias-corrected), or Glass's $\Delta$ --- with confidence intervals and *optional* hypothesis testing (utilizing a z-test: $z = (d - \delta_0)/SE_d$, where $d$ is the sample SMD estimate, $\delta_0$ is the null value being tested, and $SE_d$ is its standard error.). It supports one-sample, paired, and two-sample designs, and can return either an `htest` object or a data frame. The SMD is already reported in `t_TOST` output, but `smd_calc` allows standalone computation and supports equivalence testing directly on the effect size. This may be useful as a complementary function when using `simple_htest` as the primary statistical testing function. + +When estimation rather than testing is the goal, `smd_calc` can be called with `alternative = "none"` (the default), which returns only the point estimate and confidence interval without performing a hypothesis test. This is the recommended usage when the primary objective is to report the magnitude of the effect. ```{r} -res3 = t_TOST(x = bugs$LDHF, - y = bugs$LDLF, - paired = TRUE, - eqb = 1) -res3 +smd_calc( + formula = extra ~ group, + data = sleep, + paired = TRUE, + # apply Hedges' correction + bias_correction = TRUE, + # apply the repeated measures correction + rm_correction = TRUE, + # return an htest object rather than a data frame + output = "htest" +) ``` -\newpage +When hypothesis testing on the SMD is desired, `smd_calc` supports equivalence and minimal-effect alternatives directly: -Additionally, a MET, instead of equivalence testing, can be performed with the `hypothesis` argument set to "MET". With this setting, the hypothesis being tested is whether the effect is *greater* than the equivalence bound. +```{r} +smd_calc( + formula = extra ~ group, + data = sleep, + paired = TRUE, + # apply Hedges' correction + bias_correction = TRUE, + # apply the repeated measures correction + rm_correction = TRUE, + # equivalence hypothesis + alternative = "equivalence", + # equivalence bounds on the SMD + null.value = c(-0.5, 0.5), + # return an htest object rather than a data frame + output = "htest" +) +``` + +However, the parametric z-test used by `smd_calc` relies on distributional assumptions about the sampling distribution of the SMD that may not hold in practice. When a hypothesis test on the SMD is the goal, bootstrapping via `boot_smd_calc` is recommended because it provides more robust confidence intervals and p-values. ```{r} -res3a = t_TOST(x = bugs$LDHF, - y = bugs$LDLF, - paired = TRUE, - hypothesis = "MET", - eqb = 1) -res3a +boot_smd_calc( + formula = extra ~ group, + data = sleep, + paired = TRUE, + # apply Hedges' correction + bias_correction = TRUE, + # apply the repeated measures correction + rm_correction = TRUE, + # equivalence hypothesis + alternative = "equivalence", + # equivalence bounds on the SMD + null.value = c(-0.5, 0.5) +) ``` -The data would indicate that we should accept the MET hypothesis. -\newpage +### Checking Assumptions + +The SMD functions inherit the assumptions of the underlying t-test and therefore the visual diagnostics from the t-test discussion above apply directly. However, two considerations are specific to standardized effect sizes. First, outliers and skew affect both the numerator (mean difference) and the denominator (standard deviation) of the SMD, which can amplify their influence on the estimate; the `tr` trimmed-means argument available in the `boot_smd_calc` function is particularly worth considering when the raw data show extreme values. Second, the asymptotic z-test in `smd_calc` relies on an approximation to the sampling distribution of the SMD that can be very inaccurate in small samples, which is the primary motivation for preferring `boot_smd_calc` when hypothesis testing is the goal. -## One Sample t-test +## Equivalence Tests for Correlations -In other cases we may have a one sample test. -If that is the case, only `x` argument for the data is needed. -This is useful in situations where you may have hypotheses to test about a single samples mean. -In order for the two-sample test to be correct, we also need to supply the `mu` argument. -In the example below, we hypothesize that the mean of `LDHF` is not more than 1.5 points greater or less than 7. With the way the `mu` and `eqb` arguments are set, we are testing whether the mean of `LDHF` is significantly different from 7.5 (two-tailed tests) and ($\pm$) than 1.5 points 7.5 as well (equivalence bounds at 5.5 and 8.5). +Researchers sometimes need to test that a correlation is practically zero. The `z_cor_test` function provides a asymptotic approach using the Fisher z-transformation. However, this is only an approximate method and is generally not recommended as the primary inferential tool for equivalence testing on correlations. ```{r} -res4 = t_TOST(x = bugs$LDHF, - hypothesis = "EQU", - mu = 7.5, - eqb = c(5.5,8.5)) -res4 +z_cor_test( + x = bugs$LDLF, + y = bugs$LDHF, + # type of correlation coefficient + method = "pearson", + # two-sided nil hypothesis test + alternative = "t" +) ``` -We would conclude that `LDHF` is practically equivalent to the hypothesized mean (7.5). +Because the z-test relies on distributional approximations that can be inaccurate --- particularly with small samples --- bootstrapping via `boot_cor_test` is recommended for more robust inference. The `boot_cor_test` function supports all three major correlation methods (Pearson, Kendall, and Spearman) as well as the Winsorized [@Wilcox_1993] and percentage bend [@Wilcox_1994] correlation coefficients as robust alternatives, and returns standard `htest` objects that integrate with the helper functions described above. -\newpage +```{r} +res_boot_cor = boot_cor_test( + x = bugs$LDLF, + y = bugs$LDHF, + # type of correlation coefficient + method = "pearson", + # equivalence hypothesis + alternative = "equivalence", + # equivalence bounds of -0.4 and 0.4 + null = 0.4 +) +print(res_boot_cor) +``` -## Using Summary Statistics +```{r, results = "asis"} +cat(describe_htest(res_boot_cor)) +``` + +If only summary statistics are available, an approximate method is provided through `corsum_test`, which uses the Fisher z-transformation to compute confidence intervals and p-values. + +### Checking Assumptions + +Correlation-based inference in `z_cor_test` and `boot_cor_test` assumes independent paired observations and, for Pearson's coefficient, a roughly linear relationship between variables with approximately symmetric marginal distributions; Spearman and Kendall relax the linearity requirement to monotonicity, making them appropriate when the relationship is non-linear but directionally consistent. The bootstrap version in `boot_cor_test` further relaxes distributional assumptions about the marginals but remains sensitive to observations that exert disproportionate influence on the estimate. Visual diagnostics are the primary tools: scatterplots with a loess smoother to assess linearity or monotonicity, marginal density plots or QQ plots to check distributional shape, and jackknife-after-bootstrap plots to identify individual observations driving bootstrap variability. A worked diagnostic workflow is provided in the [online supplement](https://doi.org/10.5281/zenodo.22776189). -In some cases you may only have access to the summary statistics (e.g., when reviewing an article or attempting to perform a meta-analysis). -Therefore, I created a function, `tsum_TOST`, to perform the same tests just based on the summary statistics. -This involves providing the function with a number of different arguments. +## Comparing Standardized Effect Sizes Between Studies -* `n1 & n2` the sample sizes (only n1 needs to be provided for one sample case) -* `m1 & m2` the sample means -* `sd1 & sd2` the sample standard deviation -* `r12` the correlation between each if paired is set to TRUE^[The `extract_r_paired` function can be used if the correlation between paired observations is not readily available.] +When evaluating whether a replication study produced results consistent with the original, researchers need a way to formally compare effect sizes. The `compare_smd` function tests whether two SMD estimates (e.g., original study compared to replication study) differ more than would be expected by sampling variability alone. -The results from the `bugs` example can be replicated with the `tsum_TOST`: +Consider an original study reporting Cohen's $d_z$ = 0.95 with 25 participants and a replication with $d$ = 0.23 and 50 participants. A researcher might wonder if these these estimates compatible, and it would be prudent to formally test this. Let's say these researchers determine that equivalence between studies would be SMDs within 0.25 of each other. We can then perform a significance and equivalence test between the two original and replication study estimates. ```{r} -res_tsum = tsum_TOST( - m1 = mean(bugs$LDHF, na.rm=TRUE), sd1 = sd(bugs$LDHF, na.rm=TRUE), - n1 = length(na.omit(bugs$LDHF)), - hypothesis = "EQU", smd_ci = "t", eqb = c(5.5, 8.5) +# Significance test +compare_smd( + # SMD and sample size of the original study + smd1 = 0.95, + n1 = 25, + # SMD and sample size of the replication + smd2 = 0.23, + n2 = 50, + # both estimates come from paired designs + paired = TRUE, + # nil hypothesis test + null = 0, + # significance hypothesis + alternative = "two.sided" ) -res_tsum +# Equivalence test +compare_smd( + # SMD and sample size of the original study + smd1 = 0.95, + n1 = 25, + # SMD and sample size of the replication + smd2 = 0.23, + n2 = 50, + # both estimates come from paired designs + paired = TRUE, + # equivalence bounds on the difference in SMDs + null = .25, + # equivalence hypothesis + alternative = "equivalence" +) ``` +Based on these results, we would reject the null significance hypothesis (conclude the SMDs differ) but fail to reject the equivalence null hypothesis (we cannot conclude the SMDs are practically equivalent). When raw data are available, `boot_compare_smd` provides a bootstrap alternative (see the [package vignettes](https://aaroncaldwell.us/TOSTERpkg/articles/SMD_calcs.html#comparing-smds) for details). + +For comparing correlation coefficients between independent studies, the `compare_cor` function provides an analogous test. It uses either the Fisher z-transformation (default) or the Kraatz (Anderson-Hauck) method to compare two correlation coefficients. + +```{r} +compare_cor( + # correlation and degrees of freedom of the first study + r1 = 0.45, + df1 = 48, + # correlation and degrees of freedom of the second study + r2 = 0.25, + df2 = 78, + # equivalence hypothesis + alternative = "equivalence", + # equivalence bounds on the difference in correlations + null = 0.25 +) +``` + +When raw data are available for both studies, `boot_compare_cor` provides a bootstrap alternative that avoids the distributional approximations underlying the Fisher z and Kraatz methods. + +The comparison functions `compare_smd` and `compare_cor` inherit the assumptions of the underlying effect size estimates they combine. Because both studies contribute to the comparison, violations in either study propagate into the test. When raw data are available, the bootstrap alternatives (`boot_compare_smd` and `boot_compare_cor`) are preferred because they avoid the Fisher z and related asymptotic approximations, which can be inaccurate particularly when effect sizes are large or sample sizes are modest. When only summary statistics are available, readers should report the diagnostic context of the original and replication studies where possible. + \newpage # Robust Methods for Equivalence Testing -In some cases, the use of t-test may be less than ideal. -Any serious violation to the assumptions of a t-test (e.g., normality or homoscedasticity) could greatly inflate the type 1 error rate of TOST. -Therefore, it may be useful to explore alternatives to the t-test for TOST that either do not have those assumptions or are robust to violating those assumptions. +When t-test assumptions (normality, homoscedasticity) are seriously violated, or when the mean difference is a poor summary of the effect (e.g., with heavy skew or ordinal psychometric scales) alternative approaches are worth considering. I have organized TOSTER into three robust alternative categories: rank-based tests, resampling methods, and log-transformed methods. -The TOSTER package currently provides 4 robust alternatives to the t-test for TOST. -First, there is the `wilcox_TOST` function which uses the Wilcoxon-Mann-Whitney (WMW) type tests (i.e., `wilcox.test`) to perform TOST as a test of symmetry. -Second, there is the `boot_t_TOST` function which uses the bootstrap method outlined by @efron93. -Third, there is the `log_TOST` function which performs log-transformed t-tests, which is a parametric approach commonly used in pharmaceutical bioequivalence studies on ratio data [@he2022]. -Fourth, there is the `boot_log_TOST` function which uses the same bootstrap method outlined by @efron93 but on the log-transformed data, which is more robust than parametric log t-test [@he2022]. +## Rank-Based Tests -In the following sections, I will briefly outline the available robust TOST functions within the TOSTER package. +Rank-based tests operate on the ranks of the data rather than the raw values, which is why they are typically described as non-parametric. It is worth emphasizing that this label applies to the test, not the data. The underlying observations may still come from any distribution, and rank-based methods should not be treated as automatic substitutes for a t-test when normality is in doubt. These tests are not tests of means or medians [@median_test; @karch2021]; they target different estimands (i.e., the quantity a study is attempting to estimate), and the choice between a rank-based test and a t-test should be driven by which estimand is of scientific interest. -## Tests of Symmetry (rank based tests) +### Wilcoxon-Mann-Whitney Tests -The WMW group of tests (e.g., Mann-Whitney U-test) provide a non-parametric test of differences between groups, or within samples, based on *ranks*. This provides a test of location shift, which is a fancy way of saying differences in the center of the distribution (i.e., in parametric tests the location is mean). Within the TOST framework, there are two separate tests of directional location shift to determine if the location shift is within (equivalence) or outside (minimal effect) the equivalence bounds. Many researchers mistakenly think these are tests of medians, but this is not the case (See @median_test for details). Using a WMW-based TOST is useful for testing whether the differences between groups/conditions is symmetric around the equivalence bounds^[Care should be taken when considering paired samples; a test on the rank transformed data [@kornbrot1990rank] or another robust test may be more prudent.]. For equivalence testing, the TOST would be testing whether there is asymmetry towards no effect with a null hypothesis of symmetry at the equivalence bound. +The Wilcoxon-Mann-Whitney (WMW) family is the rank-sum test for two independent groups and the signed-rank test for paired and one-sample designs. It provides non-parametric tests based on ranks. Within the TOST framework, TOSTER performs two directional tests to determine whether the effect lies within (equivalence) or outside (minimal effect) the equivalence bounds. What that effect is depends on an assumption that researchers often do not realize they are making, and there are persistent misconceptions worth addressing directly. The three subsections below separate what the WMW tests evaluate with no additional assumptions, what they evaluate under a location-shift assumption, and what `wilcox_TOST` actually places bounds on. -In the TOSTER package, we accomplish this "test of symmetry" with the `wilcox_TOST` function. -This function operates in an extremely similar implementation to the `t_TOST` function. -The exact calculations utilized in this function can be explored via the documentation of the `wilcox.test` function. -A standardized mean difference (SMD) is *not* calculated in this function since this would be an inappropriate measure of effect size alongside the non-parametric test statistics. -Instead, a standardized effect size (SES) is calculated for *all* types of comparisons (e.g., two sample, one sample, and paired samples). -The function can produce a rank-biserial correlation [@Kerby_2014], a WMW Odds [@wmwodds], or a "common language effect size" [@Kerby_2014] (Also known as the non-parametric probability of superiority, or concordance probability).^[There is no plotting capability at this time for the output of this function.] +#### Without a location-shift assumption: a test of stochastic equality -\newpage +Many researchers believe the WMW tests are tests of medians. They are not. With no assumption beyond independence and exchangeability, the WMW test evaluates stochastic equality which has the null hypothesis that a randomly drawn observation from one group is equally likely to exceed, or to be exceeded by, a randomly drawn observation from the other, + +$$ +H_0: \space P(X > Y) + \frac{1}{2} \cdot P(X = Y) = 0.5 +$$ + +As @Fay_Malinovsky_2018 demonstrate, the effect size accompanying the test is therefore most naturally expressed as stochastic superiority (or dominance) rather than as a difference in central tendency. Nothing about this null hypothesis refers to a mean or a median. + +#### Under a location-shift assumption: a test of central tendency + +The location-shift assumption holds that the two distributions are identical in every respect except location. Under this assumption, and only under it, stochastic equality and equality of medians coincide, and the Hodges-Lehmann estimator can be read as an estimate of the median difference. This is the interpretation most readers have in mind when they reach for a WMW test. + +When the assumption fails, the two interpretations can come apart dramatically. @median_test demonstrate striking counterexamples: groups can have equal medians yet produce a significant WMW test, very different medians yet a non-significant WMW test, or even significance in the direction opposite the median comparison. Critically, nothing in the test output signals that the assumption has failed, and the p-value and the Hodges-Lehmann estimate are reported the same way regardless. The diagnostic described below is therefore not optional if a central-tendency interpretation is intended. -As an example, we can use the sleep data to make a non-parametric comparison of equivalence. +#### What `wilcox_TOST` places bounds on + +In TOSTER, `wilcox_TOST` applies the equivalence bounds to the pseudo-median, which corresponds to the mean or median difference only under the location-shift assumption. This has a direct practical consequence for setting bounds: if you are not prepared to assert location shift, the pseudo-median is your estimand, and the smallest effect size of interest must be justified on that scale rather than imported from reasoning about mean differences. + +If the hypothesis genuinely concerns means, `perm_t_test` or `boot_t_test` are the more appropriate tools. If it concerns stochastic superiority, `brunner_munzel` provides a clearer framework and a directly interpretable effect size. ```{r} -test1 = wilcox_TOST(formula = extra ~ group, - data = sleep, - paired = FALSE, - eqb = .5) +test1 = wilcox_TOST( + formula = extra ~ group, + data = sleep, + paired = TRUE, + # equivalence bounds on the pseudo-median + eqb = .5 +) print(test1) ``` -Based on these results, we would have conclude there is no significant difference but not equivalent differences either (i.e., inconclusive result). +Based on these results, we would conclude there is a significant difference and the results are also not equivalent. But again, the estimate we are testing is the pseudo-median, not the mean or median difference, so this conclusion may not be relevant to the research question at hand. -\newpage +#### Checking Assumptions -## Bootstrap TOST +The WMW tests assume independent observations and exchangeability under the null, the latter meaning that group labels carry no information about outcomes if there is no effect. Those two assumptions are all that the stochastic-equality interpretation requires. The two assumptions below determine whether the stronger central-tendency interpretation is available, and each has a straightforward visual diagnostic. -The bootstrap refers to resampling with replacement and can be used for statistical estimation and inference. Bootstrapping techniques are very useful because they are considered somewhat robust to the violations of assumptions for a simple t-test and provide better estimations of SMDs [@Kirby2013]. Therefore, I added a bootstrapping function, `boot_t_TOST`, to the package to provide another robust alternative to the `t_TOST` function. +The location-shift assumption is that the two group distributions differ only in location, not in shape or spread. This is what allows WMW results to be interpreted as a test of the median difference via the Hodges-Lehmann estimator. It is best diagnosed by overlaying the empirical cumulative distribution functions (ECDFs) of the two groups. Under location shift, the curves are horizontal translations of one another, so the horizontal distance between them is constant across the range of the data (Figure \ref{fig:ecdfshift}A). Departures appear as a gap that widens, narrows, or reverses sign, and in the clearest cases as curves that cross (Figure \ref{fig:ecdfshift}B). In panel B, the two groups there differ in both location and spread, so there is no single number that describes "the shift," and the Hodges-Lehmann estimate that `wilcox_TOST` reports does not correspond to a difference in medians. -In this function we provide a percentile bootstrap solution outlined by @efron93 (see chapter 16, page 220). The bootstrapped p-values are derived from the "studentized" version of a test of mean differences [@efron93]. Overall, the results should be similar to the results of `t_TOST`. **However**, for paired samples, the Cohen's d(rm) effect size *cannot* be calculated by this function. +For the signed-rank variants used by `wilcox_TOST` and `simple_htest`, the difference distribution must additionally be symmetric about the null value for the pseudo-median to coincide with the mean or median difference. Asymmetry is readily checked with a symmetry plot of the paired differences (Figure \ref{fig:symmplot}). As with the location-shift case, visible departures suggest that the test's output (i.e., the pseudo-median and associated p-value) does not map cleanly onto a hypothesis about central tendency. -### Two Sample Algorithm +```{r } +#| label: ecdfshift +#| echo: false +#| fig.height: 3.8 +#| fig.width: 6.5 +#| fig.cap: "\\label{fig:ecdfshift}Empirical cumulative distribution functions for two simulated groups, with double-headed arrows marking the horizontal distance between the curves at the 10th, 50th, and 90th percentiles. (A) The location-shift assumption holds: the distributions differ only in location, the arrows are of equal length, and the Hodges-Lehmann estimator can be read as a median difference. (B) The assumption is violated: the groups differ in spread as well as location, so the horizontal gap varies in magnitude and reverses sign across the distribution, and the curves cross. In panel B there is no single shift to estimate, and a central-tendency interpretation of the WMW test is not available." +set.seed(19) +n_ecdf <- 200 -The steps by which the bootstrapping occurs are fairly simple. +ecdf_panel <- function(g1, g2, title, subtitle) { + df <- data.frame( + value = c(g1, g2), + Group = rep(c("Group 1", "Group 2"), c(length(g1), length(g2))) + ) + probs <- c(0.1, 0.5, 0.9) + seg <- data.frame( + p = probs, + x1 = quantile(g1, probs, type = 7), + x2 = quantile(g2, probs, type = 7) + ) + ggplot(df, aes(x = value, colour = Group, linetype = Group)) + + stat_ecdf(linewidth = 0.7) + + geom_segment( + data = seg, inherit.aes = FALSE, + aes(x = x1, xend = x2, y = p, yend = p), + arrow = arrow(length = unit(0.05, "in"), ends = "both"), + linewidth = 0.35, colour = "grey25" + ) + + scale_colour_grey(start = 0.1, end = 0.55) + + coord_cartesian(xlim = c(-7, 8)) + + labs(x = "Value", y = "Cumulative probability", + title = title, subtitle = subtitle) + + theme_minimal(base_size = 10) + + theme(legend.position = "bottom", + legend.title = element_blank(), + plot.title = element_text(size = 10, face = "bold"), + plot.subtitle = element_text(size = 8)) +} + +p_shift <- ecdf_panel( + rnorm(n_ecdf, 0, 1), rnorm(n_ecdf, 1.5, 1), + "A. Location shift holds", + "Horizontal gap is constant across the distribution" +) +p_viol <- ecdf_panel( + rnorm(n_ecdf, 0, 1), rnorm(n_ecdf, 0.5, 2.5), + "B. Location shift violated", + "Gap varies and reverses sign; curves cross" +) -1. Form B bootstrap data sets from x* and y* wherein x* is sampled with replacement from $\tilde x_1,\tilde x_2, ... \tilde x_n$ and y* is sampled with replacement from $\tilde y_1,\tilde y_2, ... \tilde y_n$ +p_shift + p_viol + plot_layout(guides = "collect") & + theme(legend.position = "bottom") +``` -2. t is then evaluated on each sample, but the mean of each sample (y or x) and the overall average (z) are subtracted from each (i.e., null distribution is formed) -$$ -t(z^{*b}) = \frac {(\bar x^*-\bar x - \bar z) - (\bar y^*-\bar y - \bar z)}{\sqrt {sd_y^*/n_y + sd_x^*/n_x}} -$$ +```{r } +#| label: symmplot +#| echo: false +#| fig.height: 5.5 +#| fig.width: 5.5 +#| fig.cap: "\\label{fig:symmplot}Symmetry plot of the paired differences from the sleep dataset, pairing each observation's distance above the median with the corresponding distance below. Under symmetry, points fall along the 45-degree reference line (dashed); systematic departures — points consistently above or below the line — indicate asymmetry. The signed-rank variant of WMW requires this symmetry for the pseudo-median to coincide with the mean or median of the differences." +# symmetry plot for sleep paired differences +d_sleep <- sleep$extra[sleep$group == 2] - sleep$extra[sleep$group == 1] +m <- median(d_sleep) +sorted <- sort(d_sleep) +upper <- sorted[sorted > m] - m +lower <- m - sorted[sorted < m] +k <- min(length(upper), length(lower)) +sp_df <- data.frame(lower = sort(lower)[1:k], upper = sort(upper)[1:k]) +mx <- max(sp_df$lower, sp_df$upper) + +ggplot(sp_df, aes(x = lower, y = upper)) + + geom_point(size = 2) + + geom_abline(intercept = 0, slope = 1, linetype = "dashed") + + coord_equal(xlim = c(0, mx), ylim = c(0, mx)) + + labs(x = "Distance below median", + y = "Distance above median") + + theme_minimal() +``` -3. An approximate p-value can then be calculated as the number of bootstrapped results greater than the observed t-statistic from the sample. +\newpage -$$ -p_{boot} = \frac {\#t(z^{*b}) \ge t_{sample}}{B} -$$ +### Brunner-Munzel Test + +The Brunner-Munzel test [@brunner2000] estimates the relative effect $\hat{p} = P(X > Y) + 0.5 \cdot P(X = Y)$, sometimes referred to as the probability of superiority or stochastic superiority. As mentioned in the WMW section, this is the probability that a randomly chosen observation from one group exceeds a randomly chosen observation from the other, with ties split evenly. This estimand is interpretable without distributional assumptions, unlike the WMW test which requires a location-shift assumption to say anything about location differences. @karch2021 argues it should be preferred as the default non-parametric procedure. Its main advantage over WMW is that the null hypothesis of stochastic equality does not require the two distributions to be identical (i.e., the nonparametric Behrens–Fisher problem). WMW's Type I error rate can depart from nominal when the groups are stochastically equal but differ in variance or shape; the Brunner–Munzel test remains valid in that setting and provides a directly interpretable effect size. + +Stochastic superiority tests, like the Brunner-Munzel test, may be particularly well-suited to Likert-type scales which are ubiquitous in psychological research. For a single ordinal item, the spacing between response categories carries no guaranteed meaning, and a mean difference therefore has a strained interpretation. For example, what, concretely, does a 0.4-unit mean difference on a five-point Likert-type scale communicate? The stochastic superiority estimand sidesteps this interpretation difficulty. The probability that a randomly selected participant from one group outscores a randomly selected participant from the other is interpretable on its own terms, with no knowledge of the scale required. We are not suggesting that using t-tests will always mislead in these contexts but it is a concern that should not be quickly dismissed either [@Liddell_Kruschke_2018]. Additionally, even if we assume traditional parametric methods are robust to the ordinal nature of the data, the preserved error rate is not the same as interpretive clarity. For researchers whose primary outcomes live on ordinal scales, the Brunner-Munzel test and its associated effect size --- as well as ordinal models more generally [@Burkner_Vuorre_2019] --- may offer a more natural and defensible default. + +The `brunner_munzel` function supports equivalence and minimal effect testing via `alternative`, with bounds on the probability scale via `mu`. Results can be reported on different scales (`"probability"`, `"difference"`, `"logodds"`, or `"odds"`), and three test methods are available: `"t"` (default), `"logit"` (range-preserving CIs), and `"perm"` (studentized permutation; @neubert2007). Below, the test is applied to the same female and male `LDHF` ratings used in the independent-groups t-test example, which, as bounded rating-scale responses, are a natural candidate for this estimand. + +```{r} +bm_test = brunner_munzel( + formula = LDHF ~ Gender, + data = bugs_g, + # equivalence hypothesis + alternative = "equivalence", + # equivalence bounds + # on the stochastic superiority scale + mu = c(0.3, 0.7) +) +print(bm_test) +``` + +#### Checking Assumptions + +The Brunner-Munzel test has few assumption requirements. It requires independent observations within and between groups, and (for the t-approximation used by default) sample sizes sufficient for the asymptotic approximation to be reasonable. Unlike proportional-odds models, the constant-odds-ratio assumption is not required. The relative effect estimated within the Brunner-Munzel test is defined directly from the two marginal distributions and carries the same interpretation --— the probability that a random observation from one group exceeds one from the other --— regardless of whether the shapes of the distributions. However, I would still recommend visual inspection of the data and their distribution since it is useful for understanding the data, but there is no distributional assumption that these checks are verifying. Additionally, I would strongly recommend using the studentized permutation variant (`method = "perm"`) with small samples as the t-approximation method may be less trustworthy. -The same process is completed for the one sample case but with the one sample solution for the equation outlined by $t(z^{*b})$. The paired sample case in this bootstrap procedure is equivalent to the one sample solution because the test is based on the difference scores. \newpage -### Example of Bootsrapping +## Resampling Methods + +When the goal is to test hypotheses about means, resampling methods are powerful tools that allow distributional assumptions to be relaxed. TOSTER implements botha bootstrap and a permutation approach through the `boot_t_test` and the `perm_t_test`, respectively. The methods might slightly differ in inferential logic but both evulate the same estimand (the difference in means) as the Student's t-test, but with fewer distributional constraints. + +The test statistic itself is unchanged for either the bootstrap or permutation t-test. The only thing that changes is how the null distribution is handled. In the conventional t-test, the null distribution of the mean difference is derived analytically under the assumption that the data are drawn from a normal distribution, with equal variances assumed in Student's t-test and unequal variances accommodated in Welch's t-test. The bootstrap approximates the sampling distribution of the same statistic by resampling from the observed data with replacement, whereas the permutation approach constructs an exact or near-exact null distribution by shuffling group labels (two-sample) or flipping signs (one-sample and paired). In both cases, the researcher continues to ask the same question about means; only the calibration of the reference distribution differs. -We can use the sleep data to see an example of the bootstrapped results. If you plot the bootstrap samples, it will show how the resampling via bootstrapping indicates the instability of Hedges' d(z). Just looking at the printed results you will notice some differences between confidence intervals from the bootstrapped result and the t-test. +Distributional requirements are relaxed, though not eliminated, because the reference distribution is generated from the data rather than assumed. The bootstrap relies on asymptotic arguments and assumes that the empirical distribution is a reasonable stand-in for the population distribution. It performs well with moderate-to-large samples and skewed or heavy-tailed data, but can struggle with very small samples or extreme outliers. The permutation approach is exact under the null hypothesis of exchangeability, meaning group labels carry no information about outcomes. In its basic form this exactness requires identical distributions under the null, which implicitly assumes equal variances. The studentized permutation test [@janssen1997; @chung2013] addresses this limitation by permuting a scale-invariant statistic (essentially the Welch t-statistic), yielding asymptotically valid inference even under heteroscedasticity. @Arboretti_Pesarin_Salmaso_2020 extended this logic to the equivalence testing setting, showing that the studentized permutation of TOST maintains nominal Type I error rates when variances differ across groups. In short, these methods are assumption-lighter rather than assumption-free. I would strongly recommend that users still consider whether these assumptions are reasonable for their design. + +Also, as a quick word of caution, a common reflex when normality seems implausible is to switch to the WMW or other rank-based tests. However, as stated throughout this manuscript, these tests answer a different question and offer a different estimate. As discussed earlier in this manuscript, rank-based procedures test hypotheses about stochastic ordering or pseudo-medians rather than means. When the scientific question is genuinely about means --— as it often is in applied research where effect sizes and interventions are naturally expressed on the original scale —-- bootstrap and permutation t-tests should generally be preferred over rank-based methods for handling such violations of assumptions. The rank-based tests are useful, but as answer different questions, and should never be considered as robust substitutes for tests of means. + +The choice of the bootstrap or the permutation t-test involves weighing the tradeoffs between tests. The studentized permutation test has the strongest theoretical footing for two-sample mean comparisons under heteroscedasticity, and is particularly attractive for equivalence testing [@Arboretti_Pesarin_Salmaso_2020]. In general, the use of bootstrap methods offers greater flexibility because it extends naturally to statistics beyond the mean difference, provides readily interpretable confidence intervals via CI inversion [@Thulin_2024], and ensures consistency between reported intervals and p-values. In small samples, permutation approaches tend to have better finite-sample calibration because the null distribution is constructed exactly (or nearly so) from the data at hand, whereas the bootstrap's asymptotic justification can produce liberal tests with very small sample sizes. When outliers are a concern, both methods accept the `tr` argument for trimmed means, which reduces the influence of extreme observations. As a rough heuristic, researchers comparing two independent, randomized groups may find the studentized permutation test most defensible, while those wanting a single framework that yields coherent intervals and p-values across a range of designs may prefer the bootstrap. Both are substantial improvements over ignoring assumption violations of the t-test, and both return standard `htest` objects that integrate with the TOST framework for equivalence testing. + +### Bootstrap t-test + +The bootstrap t-test (`boot_t_test`) in TOSTER defaults to the studentized bootstrap (`boot_ci = "stud"`) because this matches the original bootstrap t-test proposed by @efron93 (Chapter 16), which is the procedure `boot_t_TOST` implements. In this approach, the t-statistic itself is resampled rather than the raw mean difference, and confidence intervals are constructed from the bootstrap distribution of these pivotal quantities. Other CI methods (percentile, basic, and BCa) remain available via the `boot_ci` argument, but the studentized default preserves consistency with the @efron93 formulation on which this function was based upon. It also ensures that the reported p-value and confidence interval are derived from the same bootstrap distribution, so the two will always agree^[Previous versions of the package used the studentized p-value regardless of the selected CI method, which could produce disagreement between reported intervals and p-values.]. ```{r} -set.seed(891111) -test1 = boot_t_TOST(formula = extra ~ group, - data = sleep, - paired = TRUE, - eqb = .5, - R = 999) +set.seed(4522) +boot_t_test( + formula = extra ~ group, + data = sleep, + paired = TRUE, + # equivalence hypothesis + alternative = "equivalence", + # equivalence bounds + mu = c(-0.5, 0.5), + # number of bootstrap resamples + R = 999 +) +``` +The output of `boot_t_test` follows the familiar `htest` format. The reported p-value is the larger of the two one-sided tests against the equivalence bounds, and the confidence interval is the studentized bootstrap CI for the mean difference. Because the p-value is tied to this interval via CI inversion, a researcher reporting both will find the two tell a consistent story. The interval will fall within the equivalence bounds if and only if the equivalence test rejects. +For situations where both a nil hypothesis test and an equivalence test are desired simultaneously with bootstrapping, `boot_t_TOST` returns a `TOSTt` object with bootstrapped SMD estimates: +```{r} +set.seed(891111) +test1 = boot_t_TOST( + formula = extra ~ group, + data = sleep, + paired = TRUE, + # equivalence bounds + eqb = .5, + # number of bootstrap resamples + R = 999 +) print(test1) ``` -\newpage +The bootstrapped SMDs are a useful feature in their own right. Analytic confidence intervals for standardized effect sizes rely on approximations, which assume normality and can behave poorly with small or skewed samples. Bootstrap intervals for SMDs sidestep these assumptions by resampling the full estimation pipeline, yielding intervals that inherit the robustness properties of the bootstrap itself [@Kirby2013]. + +#### Checking Assumptions -## Log TOST +The bootstrap t-test makes fewer distributional assumptions than its conventional Student's t-test but is not assumption-free. It requires independent observations and assumes the empirical distribution is a reasonable stand-in for the population distribution. The latter is an assumption that holds better in moderate-to-large samples than in small ones. The studentized bootstrap is reasonably robust to skewness and heavy tails, but remains sensitive to outliers and other high-influence observations, which can be drawn repeatedly across replicates and disproportionately shape the bootstrap distribution. Useful visual checks include the distribution of the data (histograms, boxplots) to identify extreme values, the bootstrap distribution itself to flag problematic skewness or gaps, and the jackknife-after-bootstrap plot to identify individual observations that dominate the bootstrap variability. The `tr` argument for trimmed means provides a straightforward robustness option when outliers are a concern. Diagnostic workflows for all three designs are demonstrated in the [online supplement](https://doi.org/10.5281/zenodo.22776189). -The natural logarithmic (log) transformation is often utilized to stabilize the variance of a measure, and it often provides the best approximation of the normal distribution [@logtest]. However, another, less often reported, advantage of the log transformation is that the back transformation of the differences of the log-transformed data is a *ratio* [@logtest]. For example, if we had a two samples (x & y) with an geometric mean^[The mean of log-transformed data is the *geometric* not *arithmetic* mean. I highly recommend reading @logtest and @caldwell2019basic for more details] or 7 and 10.5, x and y respectively in the code below, we could represent the differences as ratio of y:x where y is 1.5 times greater than x. +### Permutation t-test + +When `R = NULL`, the `perm_t_test` function enumerates all possible permutations for an exact test, but otherwise it draws random permutations (size of which is determined by the `R` argument in the function) with the "+1" correction [@phipson2010]. By default the test is studentized (`perm_se = TRUE`), consistent with the recommendations discussed in the methods section above. The `perm_se = FALSE` option is available primarily to match the behavior of other R packages that provide permutation tests that do not studentize by default (e.g., the permutation implementation in the "coin" R package). ```{r} -x = 7; y = 10.5 -log(y) - log(x) -log(y/x) -exp(log(y) - log(x)) -y/x +set.seed(8812) +perm_t_test( + formula = extra ~ group, + data = sleep, + paired = TRUE, + # equivalence hypothesis + alternative = "equivalence", + # equivalence bounds + mu = c(-0.5, 0.5), + # number of random permutations + R = 999 +) ``` -The log transformation thereby acts as a useful tool help tame data into conforming to the normality assumption, and makes the interpretation fairly simple. -In addition, some regulatory agencies, such as the United States Food and Drug Administration (FDA) [@fda], specifically require bioequivalence studies to report the geometric means and make statistical comparisons on the log transformed data [@he2022]. -In pharmaceutical reserach, bioequivalence testing involves determining whether two drugs, a test drug and a reference drug, have the same rate and extent of absorption in the body. This is typically accomplished by testing whether the blood concentrations of the drug after administration of the test drug are sufficiently close to the blood concentrations after administration of the reference drug. If the two drugs are bioequivalent, they can be used interchangeably. The area under the curve (AUC) is the measure of the extent of absorption, and the peak concentration is the measure of the rate of absorption. In order to determine bioequivalence, the AUC and peak concentration of the test drug must be within a certain percentage of the AUC and peak concentration of the reference drug. +Running the bootstrap and permutation equivalence tests on the same paired sleep data using matching equivalence bounds produces broadly similar conclusions, as would be expected. The two approaches can, however, diverge in small samples, under strong heteroscedasticity, or in the presence of influential outliers, which is where the choice between them becomes substantively important. Users interested in robustness to outliers can additionally supply the `tr` argument to either function to use trimmed means, which downweight extreme observations while preserving a location-based interpretation on the original scale. -In my personal experience as a physiologist, it is not uncommon that biological/physiological phenomenon present have longer right-tailed distributions, and are often adequately normalized with a natural log transformation. The additional advantage is the how equivalence bounds can, almost, be universally applied when making comparisons on the log scale. The FDA considers to drugs to be bioequivalent when the maximal concentration and AUC differences between drugs are less than 1.25. To put it another way, ratio between two means must be between 1.25 and 0.8 (i.e., 1/1.25) [@fda]. +#### Checking Assumptions -Therefore, I have implemented two functions to allow for the comparison of data that is believed to be left skewed (long right tail), and is on a ratio scale^[Ratio scale means the outcome is measured on a numerical scale that has equal distances between adjacent values and true zero. ]. The first function is a parametric t-test on the log transformed scale while the second function is a bootstrapping test which is more robust than parametric version [@he2022]. +The permutation t-test carries different assumptions depending on design. For the two-sample case, the studentized version is valid under exchangeability of observations across groups under the null and provides asymptotic validity even when variances differ between groups. For paired and one-sample designs, the sign-flip procedure additionally requires that the distribution of differences (or one-sample observations) is symmetric around the null value. Asymmetry makes the paired permutation t-test approximate rather than exact, but studentization provides some asymptotic protection. Symmetry is a commonly overlooked assumption for paired permutation tests and is easily checked with a symmetry plot of the differences, as demonstrated for the WMW signed-rank case above. For two-sample designs, overlaid empirical cumulative density functions and separate density plots help assess whether group shapes are comparable enough for exchangeability under the null to be credible. Diagnostic workflows for all three designs are demonstrated in the [online supplement](https://doi.org/10.5281/zenodo.22776189). As with the bootstrap, these checks reflect assumptions that are relaxed relative to Student's t-test but not eliminated. + +\newpage -### Example of Log TOST +## Log-Transformed Methods -The `log_TOST` function is almost exactly the same as the `t_TOST` function. First, the primary differences is that it only accepts paired and two sample comparisons. One sample tests are not support (i.e., there is no ratio to calculate). Second, standardized mean differences are not calculated, but a ratio of means is instead reported [@lajeunesse2015bias]^[Also, referred to as a "response ratio" in ecology. Like an SMD, the response ratio can be utilized in meta-analysis.]. Third, the default equivalence bounds are by default set to the FDA standards (i.e., `eqb = 1.25`), but can be changed by the user^[Only one value needs to be supplied to eqb; the reciprocal value of eqb is taken as the other equivalence bound. For example, if `eqb = 0.85` then the upper equivalence bound is 1/0.85 (~1.333)]. +The natural log transformation stabilizes variance and approximates normality for right-skewed data [@logtest]. An additional advantage is that differences on the log scale back-transform to ratios, making interpretation straightforward: if two samples have geometric means of 7 and 10.5, the ratio is 1.5 (i.e., 10.5/7). This property is central to pharmaceutical bioequivalence, where the FDA requires comparisons on the log-transformed scale with equivalence bounds of 0.80 to 1.25 for the ratio of geometric means [@fda; @he2022]. -As an example we can use the `mtcars` data to compare the type of transmission (`am`) effects on the gas mileage (`mpg`). We can see from the data below there are significant, non-equivalent, differences in mpg between transmission types. +An alternative to `log_TOST` is to log-transform data manually and analyze with `t_TOST`, `simple_htest`, or the resampling methods. Differences on the log scale can then be interpreted as "sympercents" --- symmetric percentage differences on the $100 \cdot \ln(x) - ln(y)$ scale [@cole2000] --- which are symmetric in a way that ordinary percentage differences are not because percentage changes are calculated from different bases. For example, a 10% loss and a 10% gain do not cancel out, whereas +10 and -10 sympercents are exactly equal in magnitude.^[A concrete illustration that I give my students: if a stock falls 10% on Tuesday and rises 10% from Tuesday on Wednesday, you still have a loss on of your original investment. Fortunately, sympercents do not have this asymmetry.] + +### Log TOST + +The `log_TOST` function accepts paired and two-sample comparisons (one-sample tests are not supported since there is no ratio to calculate). Instead of an SMD, a ratio of means is reported [@lajeunesse2015bias]. The default equivalence bounds are set to the FDA standard (`eqb = 1.25`; the reciprocal is taken as the other bound). ```{r, error=FALSE} log_TOST(mpg ~ am, data = mtcars) @@ -500,9 +869,9 @@ log_TOST(mpg ~ am, data = mtcars) \newpage -### Example of Bootstrap Log TOST +### Bootstrap Log TOST -The bootstrap version of `log_TOST`, `boot_log_TOST`, uses the same bootstrapping method detailed above (`boot_t_TOST`), but it uses the log-transformed values and produces the ratio of means as the effect size. +The bootstrap version uses the same bootstrap methods as `boot_t_test` on the log-transformed values: ```{r, error=FALSE} boot_log_TOST(mpg ~ am, data = mtcars, R=999) @@ -510,57 +879,68 @@ boot_log_TOST(mpg ~ am, data = mtcars, R=999) From this analysis, we would conclude there is a significant effect that is not practically equivalent. +### Checking Assumptions + +The log-transformed methods inherit the assumptions of the underlying test applied to the transformed data. The `log_TOST` function carries forward the t-test assumptions, and `boot_log_TOST` carries forward the bootstrap t-test assumptions. However, all these assumptions (i.e., normality, symmetry, and homogeneity of variance) should be assessed on the log scale rather than the original scale, since that is where inference now takes place. Similarly, the visual diagnostics should be computed on log-transformed data. This points to a broader practical use of log transformation. When the symmetry assumption of the sign-flip permutation test is violated because paired differences are right-skewed on the original scale, the differences of logs are often approximately symmetric, and `perm_t_test` on log-transformed values becomes a reasonable option. In such cases the equivalence bounds could be specified on the log scale and interpreted as log ratios (or sympercents) using any of the other t-test functions in TOSTER. + \newpage # Equivalence Testing with ANOVAs -Many researchers utilize ANOVA as an omnibus test for the absence/presence of effects before inspecting multiple pairwise comparisons. -This is very useful when implementing factorial designs wherein multiple experimental factors are tested and/or manipulated. -As @Campbell_2021 suggest, the lack of a significant result at the ANOVA-level does not necessarily indicate that a factor or interaction of factors have no effect. -However, @Campbell_2021 only suggest an equivalence test for one-way ANOVAs and therefore exclude multi-factor or factorial ANOVAs. -Therefore, I have extended the work of @Campbell_2021 to include functions that allow for equivalence testing of the partial $\eta^2$ (eta-squared) effect size from ANOVAs. - -## F-test Calculations +Many researchers use an ANOVA as an omnibus test before inspecting pairwise comparisons, particularly in factorial designs. As @Campbell_2021 note, the lack of a significant ANOVA result does not indicate that a factor in a design has no effect. Equivalence testing for ANOVAs addresses this directly by asking whether the variance attributable to a factor is small enough to be declared negligible. -Statistical equivalence testing^[Also called "omnibus non-inferiority testing" by @Campbell_2021] for *F*-tests are special use case of the cumulative distribution function of the non-central *F* distribution. -As @Campbell_2021 states, this type of statistical test answers the question: "Can we reject the hypothesis that the total proportion of variance in outcome Y attributable to X is greater than or equal to the equivalence bound $\Delta$?" +## Partial Eta-Squared and the Equivalence Hypothesis -### Hypothesis Tests +The effect size used throughout this section is "partial eta-squared" ($\eta^2_p$), $$ -H_0 = 1 > \eta^2_p \geq \Delta +\eta^2_p = \frac{SS_{\text{effect}}}{SS_{\text{effect}} + SS_{\text{error}}} $$ +The proportion of variance attributable to an effect once the variance attributable to the other effects in the model has been removed. It is not the same quantity as $\eta^2$, which divides by the total sum of squares and the two coincide only in a one-way design. In within-subjects designs, $SS_{\text{error}}$ refers to the error term against which that particular effect is tested, so each effect in a factorial model carries its own denominator. + +Because $\eta^2_p$ cannot be negative, there is no lower bound to test against. Oddly enough, this means the equivalence tests for ANOVAs and F-tests in TOSTER do not involve TOST. Instead it is only a single one-sided test, which @Campbell_2021 describe accurately as an "omnibus non-inferiority test". $$ -H_1 = 0 \geq \eta^2_p < \Delta +H_0: \eta^2_p \geq \Delta \qquad \text{versus} \qquad H_1: \eta^2_p < \Delta $$ -In TOSTER, I have gone a tad farther than @Campbell_2021, and have included a calculation for a generalization of the non-centrality parameter that allows the equivalence test for *F*-tests to be applied to variety of designs. +In this case, rejecting $H_0$ supports the claim that the effect in question explains less than the prespecified $\Delta$ of the variance. There are two caveats on that interpretation worth discussing. First, this equivalence test is a statement about an effect as a whole rather than about any particular contrast or comparison within it. An omnibus effect can be negligible while a specific pairwise comparison nested inside it is not, so equivalence at the level of the F-test does not license equivalence claims about individual group differences. Second, as with any equivalence test, failing to reject $H_0$ is not evidence that the effect is sufficiently large. It means only that the data remain compatible with an effect at or beyond the bound. -@Campbell_2021 calculate the *p*-value as: +The test itself is computed from the cumulative distribution function of the non-central F distribution. @Campbell_2021 derived the p-value for a one-way ANOVA with $J$ groups and $N$ total observations as $$ -p = p_f(F; J-1, N-J, \frac{N \cdot \Delta}{1-\Delta}) +p = p_F \left( F; \space J-1, \space N-J, \space \frac{N \cdot \Delta}{1 - \Delta} \right) $$ -The non-centrality parameter (ncp = $\lambda$) can be calculated with the equivalence bound and the degrees of freedom: +and evaluated the Type I error and power of the procedure by simulation. With TOSTER I then generalized the non-centrality parameter so that the same logic extends to multi-factor, factorial, and within-subjects designs, $$ -\lambda_{eq} = \frac{\Delta}{1-\Delta} \cdot(df_1 + df_2 +1) +\lambda_{eq} = \frac{\Delta}{1 - \Delta} \cdot (df_1 + df_2 + 1), \qquad p_{eq} = p_F(F; \space df_1, \space df_2, \space \lambda_{eq}) $$ -\newpage +where $df_1$ and $df_2$ are the numerator and denominator degrees of freedom for the effect being tested. For a one-way design $df_1 + df_2 + 1 = (J-1) + (N-J) + 1 = N$, so the generalization reduces exactly to the expression given by @Campbell_2021. A fuller description is provided in the [package documentation](https://aaroncaldwell.us/TOSTERpkg/articles/the_ftestTOSTER.html). -The *p*-value for the equivalence test ($p_{eq}$) could then be calculated from traditional ANOVA results and the distribution function: +The quantity $df_1 + df_2 + 1$ is the effective sample size of the error stratum in which an effect is tested, which is not in general the total number of observations. In a mixed design, for example, it recovers the number of subjects for a between-subjects effect. I evaluated the generalization by simulation for one-way within-subjects, factorial between-subjects, and mixed designs, and the equivalence test maintained its nominal Type I error rate at the boundary of the null hypothesis in each. Readers who want the simulation code, the full results, and a longer discussion of interpretation will find them in the [online supplement](https://doi.org/10.5281/zenodo.22776189). -$$ -p_{eq} = p_f(F; df_1, df_2, \lambda_{eq}) -$$ +The equivalence test inherits the standard ANOVA assumptions, which should be checked on the fitted model itself rather than on the equivalence output. The `performance::check_model()` function provides a comprehensive visual diagnostic suite for most linear model objects in R in a single call; the [online supplement](https://doi.org/10.5281/zenodo.22776189) demonstrates its use. + +However, TOSTER's current implementation is sensitive to violations to the assumption of sphericity. For within-subjects factors with more than two levels, `equ_anova` currently uses the uncorrected univariate degrees of freedom and does not apply Greenhouse-Geisser or Huynh-Feldt corrections, even when the fitted object was created with a correction requested. My simulations show that the equivalence test can become substantially anti-conservative when sphericity is badly violated. Sphericity should therefore be assessed on the fitted model, and results treated cautiously when it is in doubt; the supplement quantifies the size of the problem. -## Example of Equivalence ANOVA Testing +## Choosing a Bound on $\eta^2_p$ -Using the `InsectSprays` data set in R and the base R `aov` function, I can demonstrate how this omnibus equivalence testing can be applied with TOSTER. From the initial analysis we an see a clear "significant" effect (very small p-value) of the inspect spray. However, we *may* be interested in testing if the effect is practically equivalent. I will arbitrarily set the equivalence bound to a partial eta-squared of 0.35 ($H_0: \eta^2_p > 0.35$). +In my opinion, the bounds on $\eta^2_p$ are harder to justify than bounds on the original measurement scale (much like the SMD), and the difficulty is worth confronting before running an equivalence ANOVA test. + +The first problem is that $\eta^2_p$ is not comparable across designs. Its denominator depends on which other effects appear in the model and, in within-subjects designs, on the error term against which the effect is tested. A $\eta^2_p$ of 0.06 for a one-way between-subjects factor and a $\eta^2_p$ of 0.06 for an interaction in a repeated-measures model are not estimates of the same quantity. A bound therefore cannot simply be borrowed from a published study unless that study used the same design and the same model. +This may be more of a problem for repeated-measures designs where subject variance is excluded from the denominator entirely. A bound on $\eta^2_p$ is consequently not a bound on the share of total variance in the data, and the gap between the two widens as the number of levels of the within-subjects factor falls. The supplement quantifies the discrepancy. + +The second problem is that a proportion of variance has little direct substantive meaning. Unlike a mean difference expressed in the units of the outcome, there is rarely an anchor-based or cost-benefit argument that delivers a number on this scale directly. Researchers who find Cohen's $f$ more intuitive can move between the two with $f^2 = \eta^2_p / (1 - \eta^2_p)$, and the `power_eq_f` function can be used to determine the degrees of freedom required to achieve a given power for a specified bound, or the power attainable for a given design. The choosing-bounds section of the package's F-test vignette discusses the problem in more detail. Additionally, I would recommend that, in most situations where an ANOVA is utilized for multi-group or even factorial designs, that equivalence testing is often best accomplished with specific contrasts (example below). + +The bound of $\Delta = 0.35$ used in both examples below is deliberately large. It was chosen so that the demonstrations produce interpretable output rather than because it represents a defensible threshold, and it should not be read as a default. + +## Example with Summary Statistics + +Using the `InsectSprays` data and the `equ_ftest` function, which accepts summary F-test statistics directly: ```{r warning=FALSE, message=FALSE} data("InsectSprays") @@ -569,135 +949,180 @@ anova(aovtest) ``` -We can then use the information in the table above to perform an equivalence test using the `equ_ftest` function. This function returns an object of the S3 class `htest` and the output will look very familiar to that of the t-test. The main difference is the estimates, and confidence interval, are for partial $\eta^2_p$. - ```{r} -equ_ftest(Fstat = 34.70228, df1 = 5, df2 = 66, eqb = 0.35) +equ_ftest( + # F statistic and degrees of freedom from the ANOVA table + Fstat = 34.70228, + df1 = 5, + df2 = 66, + # equivalence bound on partial eta-squared + eqb = 0.35 +) ``` -Based on the results above we would conclude there is a significant effect of "spray" and the differences due to spray are *not* statistically equivalent. In essence, we reject the traditional null hypothesis of "no effect" but accept the null hypothesis of the equivalence test. +Based on these results, there is a significant effect of "spray" and the differences are not statistically equivalent. We then reject the traditional null hypothesis but fail to reject the equivalence null hypothesis. -\newpage +## Example with R ANOVA Objects + +The `equ_anova` function accepts objects from `stats::aov`, `car::Anova`, and `afex::aov_car`, avoiding the need to extract summary statistics manually. It returns the familiar ANOVA table with the equivalence test appended: -The `equ_ftest` function is very useful because all you need is very basic summary statistics. However, if you are doing all your analyses in R then you can use the `equ_anova` function. This function accepts objects produced from `stats::aov`, `car::Anova` and `afex::aov_car` (or any ANOVA from derived from `afex`). +- `effect`, `df1`, `df2`, `F.value` --- the effect being tested and the components of the traditional F-test. +- `p.null` --- the p-value for the traditional nil-hypothesis test. +- `pes` --- the estimated $\eta^2_p$ for that effect. +- `eqbound` --- the equivalence bound that was applied. +- `p.equ` --- the p-value for the equivalence test. -As a second example, we can use the afex package's data and ANOVA [@afex]. -Again, we will use the equivalence bound of 0.35, -which is a completely arbitrary (and baseless) equivalence bound. -Notice that the output contains 2 p-values: -one for the significance (`p.null`) and another for the equivalence test (`p.equ`). +Because each effect in a within-subjects design is tested against its own error term, each row carries its own $df_2$ and therefore its own denominator for `pes`. Note also that an equivalence test is reported for the intercept; this is rarely a hypothesis of interest and can generally be ignored. ```{r} -# Example using a purely within-subjects design +# Example using a purely within-subjects design # (Maxwell & Delaney, 2004, Chapter 12, Table 12.5, p. 578): library(afex) data(md_12.1) -aovtest2 = aov_ez("id", "rt", md_12.1, within = c("angle", "noise"), - anova_table=list(correction = "none", es = "none")) -equ_anova(aovtest2, - eqb = 0.35) +aovtest2 = aov_ez( + # participant identifier + "id", + # dependent variable + "rt", + # data + md_12.1, + # within-subjects factors + within = c("angle", "noise"), + anova_table = list(correction = "none", es = "none") +) +equ_anova(aovtest2, eqb = 0.35) ``` \newpage -# Equivalence Between Replication Studies +## Example with Specific Contrasts -During the development of this TOSTER update, I was helping advise a team of researchers on a massive replication project for sport and exercise science [@repSES]. -How to determine whether a direct^[Defined as being a as-close-as possible replication to the original study, in contrast to "conceptual" replications.] replication was a successful replication of the original study was contentious topic of conversation among the team. -Inspired by these discussions, I created 2 functions that would utilize the basic principles of SMDs^[The textbook by @borenstein and the some of the works of Wolfgang Vietchbauer, metafor R package author, were a large source of information for developing these functions.] to test for differences between two studies. +As mentioned previously, the ANOVA equivalence testing functions answer only a very broad, somewhat vague, question. The omnibus test asks whether a factor as a whole explains a negligible share of the variance available to it. That is often not the question a researcher actually has. More commonly the hypothesis concerns particular comparisons (e.g., is this condition equivalent to that one?) and, as noted above, an omnibus effect can be negligible while a specific comparison nested within it is not. Testing contrasts directly also sidesteps the bound-justification problem described earlier. A contrast is expressed in the units of the outcome, so the smallest effect size of interest can be argued for on the original measurement scale, where anchor-based and cost-benefit reasoning are available, rather than on the proportion-of-variance scale where they usually are not. -Overall, the concept is simple: if we have estimates of SMDs from two very similar studies we can use the large-sample approximation to compute the sampling variances^[Users can also supply their own sampling variances using the `se1` and `se2` arguments.] to estimate the degree to which the two studies differ from one another (i.e., calculate p-values). The users of TOSTER then have the option to test whether the two SMDs significantly differ, or use TOST to estimate if they are practically equivalent. Additionally, there are two options for comparing SMDs: using the summary statistics or using bootstrapping (assuming original data is available). +TOSTER does not fit contrasts itself, but the "emmeans" package [@emmeans] accommodates non-zero null hypotheses directly and operates on the same fitted model objects^[This can also be accomplished with "marginaleffects" [@marginaleffects]]. Therefore, I wanted to briefly demonstrate how this could be accomplished. Using the the `InsectSprays` ANOVA fitted above, suppose a difference of fewer than five insects is considered too small to matter and we have two specific hypotheses of equivalence regarding groups C, D, and E: -## Example using Summary Statistics - -In this example, let us imagine an "original" study that reports an effect of Cohen's dz -= 0.95 in a paired samples design with 25 subjects. However, a -replication doubled the sample size, found a non-significant effect at -an SMD of 0.2. Are these two studies compatible (the lower the p-value the lower the compatibility)? Or, to put it another -way, should the replication be considered a "failure" to replicate the original study? +```{r} +library(emmeans) +# estimated marginal means from the ANOVA fit earlier +emm = emmeans(aovtest, ~ spray) + +# two comparisons specified in advance as the hypotheses of interest +sprays = contrast( + emm, + method = list( + "C vs D" = c(0, 0, 1, -1, 0, 0), + "C vs E" = c(0, 0, 1, 0, -1, 0) + ) +) -We can use the `compare_smd` function to at least measure how often we -would expect a discrepancy between the original and replication study if -the same underlying effect was being measured (also assuming no -publication bias). +test( + sprays, + # equivalence bound on the original scale (insect counts) + delta = 5, + side = "equivalence", + adjust = "none" +) +``` -We can see from the results below that, if the null hypothesis were -true, we would only expect to see a discrepancy in SMDs between studies at -least this large \~1% of the time. +Spray C is statistically equivalent to spray E (*p* = 0.014) but not to spray D (*p* = 0.090), even though the omnibus test treated "spray" as a single undifferentiated effect. The same conclusion can be read from the interval estimates, which for TOST are taken at $1-2\alpha$: ```{r} -compare_smd(smd1 = 0.95, - n1 = 25, - smd2 = 0.23, - n2 = 50, - paired = TRUE) +confint(sprays, level = 0.90) ``` -Let us also imagine a scenario where a replication team considers a replication successful if the SMDs are within 0.25 units of each other. We can set the `TOST` argument to TRUE, and then set the equivalence bound using `null` argument. +The 90% interval for C versus E lies entirely inside $\pm$ 5, whereas the interval for C versus D extends past the lower bound. -```{r} -compare_smd(smd1 = 0.95, n1 = 25, smd2 = 0.23,n2 = 50, - paired = TRUE, TOST = TRUE, null = .25) -``` +Two notes on this additional non-TOSTER derived workflow. First, whether to adjust for multiplicity is a substantive decision rather than an automatic one; no adjustment is applied above because the two contrasts were specified in advance as the hypotheses of interest (in this case we could consider these independent tests). However, multiplicity corrections (e.g., Holm-Bonferroni) remain valid for equivalence tests, and are worthy of consideration. Second, this approach reaches well beyond the ANOVA. Because `emmeans` works from fitted model objects, the same equivalence contrasts can be applied to mixed-effects models and other designs that fall outside TOSTER's scope. + +\newpage -Based on the imaginary studies we outlined above, we would not reject the null equivalence hypothesis, but reject the null significance hypothesis. Therefore, we would could conclude that there are significant differences between the studies that are not practically equivalent. +# Power Analysis and Sample Size Planning -## Example using Bootstrapping +Researchers planning an equivalence study will need to determine the required sample size. Power for equivalence tests behaves differently than for standard tests: larger samples are generally needed, and power depends on both the true effect size and the width of the equivalence bounds. -The above results are only based on an approximating the differences -between the SMDs. If the raw data is available, then the optimal -solution is the bootstrap. This can be accomplished with the -`boot_compare_smd` function. The only drawback to this function is that TOST is -currently not avaiable, and users would instead have to run 2 one-sided tests -manually using the `null` and `alternative` arguments. +## Power for TOST t-tests -For this example, we will simulate some data. As an alternative approach to TOST, -we can just set the `alpha` to 0.1, and then check to see if the -confidence interval is within the preset equivalence bounds. +The `power_t_TOST` function computes exact power for TOST with one-sample, two-sample, and paired t-tests. It can solve for any one of `n`, `power`, or `alpha` given the other parameters are provided. The `delta` argument specifies the true mean difference (set to 0 if the true effect is exactly zero) and `eqb` specifies the equivalence bounds. + +For example, to determine the sample size needed to achieve 80% power to detect equivalence within bounds of $\pm$ 0.5 (assuming the true difference is zero and $SD$ = 1): ```{r} -set.seed(4522) -boot_test = boot_compare_smd(x1 = rnorm(25,.95), x2 = rnorm(50), - paired = TRUE, alpha = .1) -boot_test +power_t_TOST( + # true mean difference + delta = 0, + # assumed standard deviation + sd = 1, + # equivalence bounds + eqb = 0.5, + alpha = 0.05, + # leaving n unspecified solves for the n giving 80% power + power = 0.8, + type = "two.sample" +) +``` + +## Power for Correlations + +The `power_z_cor` function provides power analysis for equivalence tests on Pearson correlations using Fisher's z-transformation: + +```{r} +power_z_cor( + # true correlation + rho = 0, + # leaving n unspecified solves for the n giving 80% power + power = 0.8, + # equivalence bounds of -0.3 and 0.3 + null = 0.3, + alpha = 0.05, + # equivalence hypothesis + alternative = "equivalence" +) ``` +## Extensions: PowerTOST and Superpower + +For more complex designs (e.g., crossover studies, corssover-replicate designs, group-sequential equivalence trials) the PowerTOST package [@PowerTOST] provides extensive functionality beyond what TOSTER offers. For factorial designs where equivalence contrasts are tested via estimated marginal means, simulation-based power analysis via the Superpower package is recommended [@Lakens_Caldwell_2021]. Both packages complement TOSTER's built-in power tools for common research designs. In some situations, customized simulations may be required to accurately determine power for an equivalence test. + \newpage # Conclusions -In this manuscript I have demonstrated most of the new functions and features within the TOSTER R package. -This constitutes a major update to the package over the past 2 years. -I hope that updates to the package builds upon the original impact of the TOSTER package^[In my opinion, the impact of the @lakens_ori cannot be overstated considering it is cited by over 1000 other papers!], -and has been made TOST more accessible to the average researcher. -In addition, I have added a number of other functions that offer robust alternatives to -the t-test for performing TOST analyses. -I would strongly recommend users of TOSTER to explore these functions, and, at the very least, -compare the robust results to the t-test results to ensure that the conclusions do not change -due to the chosen analysis^[If they do change, then it would be prudent to explore what features in the data might explain this discrepancy.]. -Lastly, to my knowledge, this is the first package to offer equivalence testing options for ANOVAs or for comparing SMDs between studies. -Overall, this package and its functions offer an easily accessible option for researchers to explore equivalence testing, and hopefully improve their statistical analyses. +This paper has described the major updates to the TOSTER R package, expanding its scope from the original t-test and correlation equivalence tests to a comprehensive toolkit for frequentist equivalence testing. The update adds a unified t-test interface with minimal effect testing support, a simplified hypothesis testing interface that integrates with the standard R ecosystem, tools for standardized effect sizes and correlations, robust and resampling-based alternatives, ANOVA equivalence testing, and power analysis for sample size planning. + +Several limitations should be acknowledged. TOSTER only covers a few standard research designs, and it does not handle many analysis scenarios such as those involving multilevel or mixed-effects models. For these settings, researchers should consider packages like "emmeans" [@emmeans] or "marginaleffects" [@marginaleffects], which can accommodate non-zero null hypotheses in more complex modeling frameworks. TOSTER also does not provide Bayesian equivalence testing; researchers interested in Bayesian methods for the null should consult other R packages such as "bayestestR" [@bayestestR]. + +I hope that the updated package continues to build upon the original impact of @lakens_ori and makes equivalence testing more accessible to researchers across disciplines. At the very least, I would encourage users to compare results across methods (e.g., Student's t-test vs. permutation t-test vs. bootstrap t-test) to ensure that conclusions do not entirely depend on the chosen analysis. If the interpretation substantially changes depending on the test, this suggests features of the data --- violations of assumptions, outliers, distributional shape --- that warrant further investigation. \newpage # Additional Information -All analyses/code in this manuscript are from TOSTER v0.6.0: +The TOSTER package can be installed from CRAN or from GitHub: ``` -# Install the exact release with this code -devtools::install_github("Lakens/TOSTER@v0.6.0") +# Install from CRAN +install.packages("TOSTER") + +# Install the development version from GitHub +devtools::install_github("Lakens/TOSTER") ``` + +The supplementary materials for this article are archived on Zenodo (). They include a verification of TOSTER against the results reported by @Campbell_2021 and a set of assumption checks for the procedures described in this article. Each supplement is provided as a Quarto source file with its rendered output, and all analyses were conducted with TOSTER v0.9.0. + ## Acknowledgement(s) {-} -I'd would like to thank everyone from the Lakens' laboratory group for their input and suggestions. +I would like to thank everyone from the Lakens laboratory group for their input and suggestions. I must also thank David Eisner, Jakub Tomek, and James Selig for their feedback on drafts of this manuscript. ## Disclosure statement {-} -The author of this manuscript is the author of the TOSTER package. +The author of this manuscript is the author of the TOSTER package. Citations of this manuscript will benefit his citation count. +## AI Use Disclosure {-} + +During the preparation of the TOSTER package updates and this manuscript, the author used Claude Opus 4.5-5.0 (Anthropic) to assist with editing R code and drafting unit tests. For the manuscript text, Claude Opus was used only for targeted copy-editing — suggesting revisions to specific passages, catching typographical and grammatical errors, and identifying inconsistencies across sections. The manuscript was written by the author, and all AI-assisted output was reviewed, revised, and verified by the author, who takes full responsibility for the content of the package and the manuscript. + ## Funding {-} No funding was provided for this work. @@ -706,7 +1131,7 @@ No funding was provided for this work. Daniel Lakens provided a review of many of the materials that have been incorporated into the update of TOSTER, and was the original author of this package. -Without his help and encouragment, the TOSTER package and this update would not exist. +Without his help and encouragement, the TOSTER package and this update would not exist. ## Nomenclature/Notation {-} @@ -717,14 +1142,13 @@ Without his help and encouragment, the TOSTER package and this update would not - ncp: non-centrality parameter - SESOI: Smallest Effect Size of Interest - SMD: Standardized Mean Difference (e.g., Cohen's d) -- TOST: Two-One Sided Tests +- TOST: Two One-Sided Tests - WMW: Wilcoxon-Mann-Whitney ## Notes {-} -The R package is also (partially) implemented in jamovi as the TOSTER module. +The R package is also (partially) implemented in [jamovi](https://www.jamovi.org/) as the TOSTER module. \newpage # References - diff --git a/papers/Avocado_Update/Avocado_Update.docx b/papers/Avocado_Update/Avocado_Update.docx index 9a0e6d09..94a041bc 100644 Binary files a/papers/Avocado_Update/Avocado_Update.docx and b/papers/Avocado_Update/Avocado_Update.docx differ diff --git a/papers/Avocado_Update/Avocado_Update.pdf b/papers/Avocado_Update/Avocado_Update.pdf index 9f79fc31..82a2b2e3 100644 Binary files a/papers/Avocado_Update/Avocado_Update.pdf and b/papers/Avocado_Update/Avocado_Update.pdf differ diff --git a/papers/Avocado_Update/Avocado_Update.tex b/papers/Avocado_Update/Avocado_Update.tex index 60011d19..28e4849f 100644 --- a/papers/Avocado_Update/Avocado_Update.tex +++ b/papers/Avocado_Update/Avocado_Update.tex @@ -1,5 +1,5 @@ % interactcadsample.tex -% v1.03 - April 2017 +% v1.04 - May 2023 \documentclass[]{interact} @@ -37,13 +37,13 @@ \newenvironment{Shaded}{\begin{snugshade}}{\end{snugshade}} \newcommand{\AlertTok}[1]{\textcolor[rgb]{0.94,0.16,0.16}{#1}} \newcommand{\AnnotationTok}[1]{\textcolor[rgb]{0.56,0.35,0.01}{\textbf{\textit{#1}}}} -\newcommand{\AttributeTok}[1]{\textcolor[rgb]{0.77,0.63,0.00}{#1}} +\newcommand{\AttributeTok}[1]{\textcolor[rgb]{0.13,0.29,0.53}{#1}} \newcommand{\BaseNTok}[1]{\textcolor[rgb]{0.00,0.00,0.81}{#1}} \newcommand{\BuiltInTok}[1]{#1} \newcommand{\CharTok}[1]{\textcolor[rgb]{0.31,0.60,0.02}{#1}} \newcommand{\CommentTok}[1]{\textcolor[rgb]{0.56,0.35,0.01}{\textit{#1}}} \newcommand{\CommentVarTok}[1]{\textcolor[rgb]{0.56,0.35,0.01}{\textbf{\textit{#1}}}} -\newcommand{\ConstantTok}[1]{\textcolor[rgb]{0.00,0.00,0.00}{#1}} +\newcommand{\ConstantTok}[1]{\textcolor[rgb]{0.56,0.35,0.01}{#1}} \newcommand{\ControlFlowTok}[1]{\textcolor[rgb]{0.13,0.29,0.53}{\textbf{#1}}} \newcommand{\DataTypeTok}[1]{\textcolor[rgb]{0.13,0.29,0.53}{#1}} \newcommand{\DecValTok}[1]{\textcolor[rgb]{0.00,0.00,0.81}{#1}} @@ -51,7 +51,7 @@ \newcommand{\ErrorTok}[1]{\textcolor[rgb]{0.64,0.00,0.00}{\textbf{#1}}} \newcommand{\ExtensionTok}[1]{#1} \newcommand{\FloatTok}[1]{\textcolor[rgb]{0.00,0.00,0.81}{#1}} -\newcommand{\FunctionTok}[1]{\textcolor[rgb]{0.00,0.00,0.00}{#1}} +\newcommand{\FunctionTok}[1]{\textcolor[rgb]{0.13,0.29,0.53}{\textbf{#1}}} \newcommand{\ImportTok}[1]{#1} \newcommand{\InformationTok}[1]{\textcolor[rgb]{0.56,0.35,0.01}{\textbf{\textit{#1}}}} \newcommand{\KeywordTok}[1]{\textcolor[rgb]{0.13,0.29,0.53}{\textbf{#1}}} @@ -60,7 +60,7 @@ \newcommand{\OtherTok}[1]{\textcolor[rgb]{0.56,0.35,0.01}{#1}} \newcommand{\PreprocessorTok}[1]{\textcolor[rgb]{0.56,0.35,0.01}{\textit{#1}}} \newcommand{\RegionMarkerTok}[1]{#1} -\newcommand{\SpecialCharTok}[1]{\textcolor[rgb]{0.00,0.00,0.00}{#1}} +\newcommand{\SpecialCharTok}[1]{\textcolor[rgb]{0.81,0.36,0.00}{\textbf{#1}}} \newcommand{\SpecialStringTok}[1]{\textcolor[rgb]{0.31,0.60,0.02}{#1}} \newcommand{\StringTok}[1]{\textcolor[rgb]{0.31,0.60,0.02}{#1}} \newcommand{\VariableTok}[1]{\textcolor[rgb]{0.00,0.00,0.00}{#1}} @@ -71,16 +71,28 @@ \providecommand{\tightlist}{% \setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}} +% From pandoc table feature +\usepackage{longtable,booktabs,array} +\usepackage{calc} % for calculating minipage widths +% Correct order of tables after \paragraph or \subparagraph +\usepackage{etoolbox} +\makeatletter +\patchcmd\longtable{\par}{\if@noskipsec\mbox{}\fi\par}{}{} +\makeatother +% Allow footnotes in longtable head/foot +\IfFileExists{footnotehyper.sty}{\usepackage{footnotehyper}}{\usepackage{footnote}} +\makesavenoteenv{longtable} \usepackage{hyperref} \usepackage[utf8]{inputenc} \def\tightlist{} +\providecommand{\pandocbounded}[1]{#1} \hypersetup{ colorlinks=true, citecolor = cyan, linkcolor=blue, - filecolor=magenta, + filecolor=magenta, urlcolor=blue } @@ -95,201 +107,371 @@ \author{\name{Aaron R. Caldwell$^{a}$} -\affil{$^{a}$Natick, MA, \url{https://orcid.org/0000-0002-4541-6283}} +\affil{$^{a}$Department of Biostatistics, Fay W. Boozman College of +Public Health, University of Arkansas for Medical Sciences Northwest, +Springdale, AR \url{https://orcid.org/0000-0002-4541-6283}} } -\thanks{CONTACT Aaron R. -Caldwell. Email: \href{mailto:arcaldwell49@gmail.com}{\nolinkurl{arcaldwell49@gmail.com}}} \maketitle \begin{abstract} -Equivalence testing is arguably under utilized by experimental -researchers. Due to limited software support for such analyses, and -little education on the topic in graduate programs, the utilization of -equivalence testings still appares to be low. One option for equivalence -testing is the use of two one-sided tests (TOST). The TOSTER R package -and jamovi module, originally developed by Daniel Lakens in 2017, was -created to make TOST more accessible to the average researcher. In the -past two years, I have made significant changes to the TOSTER package in -order to increase its accessibility and provide more robust analysis -options for researchers. In this paper, I will detail the changes to the -package and highlight new analysis options that will make TOST easier -for the average quantitative researcher. +Despite decades of methodological guidance, researchers continue to +misinterpret non-significant results as evidence for the absence of an +effect. Equivalence testing via two one-sided tests (TOST) provides a +principled alternative, but adoption remains limited by software +accessibility and lack of training. The TOSTER R package, originally +developed by Lakens (2017), made TOST accessible to experimental +psychologists. This paper describes a major update to the package that +expands its scope with (1) a unified t-test interface supporting both +equivalence and minimal effect testing, (2) a simplified hypothesis +testing interface returning standard R objects, (3) tools for computing +and testing standardized effect sizes and correlations, (4) robust and +resampling-based alternatives including bootstrap and permutation tests, +(5) equivalence testing for ANOVAs, and (6) power analysis and sample +size planning. Each capability is demonstrated with worked examples. +TOSTER is also available as a jamovi module for researchers who prefer a +graphical interface. \end{abstract} \begin{keywords} -statistics, bootstrap, minimal effects test, NHST, TOST +statistics, bootstrap, minimal effects test, NHST, TOST, R package, +robust statistics \end{keywords} -\hypertarget{introduction}{% -\section{Introduction}\label{introduction}} - -Researchers often erroneously declare that no statistical effect exists -based on a single ``non-significant'' p-value \citep{blandaltman95}. In -many of these cases, the data may corroborate the researcher's claim, -but the interpretation of a null hypothesis significance test (NHST), -wherein the lack of significance is considered evidence of ``no -effect'', is nonetheless incorrect. In order to statistically test for -whether there is practically no effect, researchers could use -equivalence testing. Equivalence testing is used when the goal of a -statistical test is to demonstrate that the difference between two -conditions is too small to be meaningful. For example, if a researcher -wanted to test whether a new drug was no worse than a standard drug, the -null hypothesis would be that the new drug is worse than the standard -drug by more than a meaningful amount, and the alternative hypothesis -would be that the difference between the two drugs is small enough to be -meaningless. A very simple equivalence testing approach is the use of -``two one-sided tests'' (TOST) \citep{schuirmann1987}. - -The TOST procedure is a statistical test of whether a parameter (e.g., -mean difference) is within a specified interval. The TOST procedure can -be used to test the equivalence of two means, two proportions, two -regression coefficients, and even two variances. An upper (\(\Delta_U\)) -and lower (\(\Delta_L\)) equivalence bound is specified based on the -smallest effect size of interest (SESOI). If the TOST is below a -pre-specified alpha level, then the effect can be considered close -enough to zero to be practically equivalent \citep{lakens_ori}. - -Both the complaints about erroneous conclusions regarding equivalence -\citep{blandaltman95} and proposed statistical solutions -\citep{schuirmann1987} have existed for decades now. Yet, the problem -appears to persist in many applied disciplines. I believe the continued -dissonance is due to a general lack of education on equivalence testing -and a struggle for many applied researchers to implement equivalence -testing. In my experience, most researchers have received some degree of -statistical training in their doctoral or master's studies, but it is -rare that any have idea of how to use TOST. It may also be difficult to -implement equivalence testing for many researchers. This may be caused -by most statistical software defaulting to a null hypothesis of zero, or -even completely lacking an ability to change the null hypothesis. -Therefore, I feel the continued development of educational content on -TOST, and software to help with such analyses, would be beneficial to -many quantitative researchers. +\section{Introduction}\label{introduction} + +Researchers routinely interpret non-significant p-values from a +nil-hypothesis (i.e., null hypothesis that the mean difference equals +zero) test as evidence that no effect exists --- a logical error that +has been recognized for decades \citep{blandaltman95}. A non-significant +result means only that the data are compatible with the null hypothesis; +it does not mean the null hypothesis is true. + +Equivalence testing provides a principled framework for evaluating +whether an effect is small enough to be considered negligible. The two +one-sided tests (TOST) procedure is the most widely used approach +\citep{schuirmann1987}. Researchers specify an upper (\(\Delta_U\)) and +lower (\(\Delta_L\)) equivalence bound based on the smallest effect size +of interest (SESOI). Two one-sided tests then evaluate whether the +observed effect falls within those bounds. If both tests reject at a +pre-specified alpha level, the effect can be considered practically +equivalent to zero \citep{lakens_ori}. The TOSTER R package\footnote{All updates to the package can be found on - the package's website \url{https://aaroncaldwell.us/TOSTERpkg}} was -originally developed in by \citet{lakens_ori} to introduce experimental -psychologists to the concept of equivalence testing and provide an -easy-to-use implementation in R. In the years since that publication, I -have made a significant update to the package in order to improve the -user interface and expand the tools available within the package. An -experienced R programmer may have no problem performing equivalence -testing within R, but beginners may struggle with both writing the code -and interpreting the output. If you fall into that category, I would -suggest using jamovi, an open-source statistical software, that has a -TOSTER module to perform equivalence/TOST analyses. Not all the features -listed in this manuscript are available in the jamovi module, but it is -a good starting point for most researchers without statistical -programming experience. - -In this manuscript, I will detail the updates to the TOSTER package, and -give some basic usage examples of some of the new functions. This is -meant to just be an introduction to \emph{how} to perform such analyses, -and provide a little bit of context for when such analyses are -appropriate. For a greater introduction to equivalence testing, I would -suggest reading other methodological tutorials -\citep{lakens_ori, lakens2018equivalence, lakens2020improving, mazzolari2022myths}. - -\hypertarget{tost-with-t-tests}{% -\section{TOST with t-tests}\label{tost-with-t-tests}} - -In an effort to make TOSTER more informative and easier to use, a new -function \texttt{t\_TOST} was created. This function operates very -similarly to base R's \texttt{t.test} function, but performs 3 t-tests -(one two-tailed and two one-tailed tests). In addition, this function -has a generic method where two vectors can be supplied or a formula can -be given (e.g.,\texttt{y\ \textasciitilde{}\ group}). This function also -makes it easier to switch between types of t-tests. All three types (two -sample, one sample, and paired samples) can be performed/calculated from -the same function. Moreover, the output from this function is verbose, -and should make the decisions derived from the function more informative -and user-friendly. - -Also, \texttt{t\_TOST} is not limited to equivalence tests. Minimal -effects testing (MET) is possible. MET is useful for situations where -the hypothesis is about a minimal effect and the \emph{null hypothesis -is equivalence} (see Figure 1) \citep{mazzolari2022myths}. + the package's website that I maintain + \url{https://aaroncaldwell.us/TOSTERpkg}} was originally developed by +\citet{lakens_ori} to introduce experimental psychologists to the +concept of equivalence testing and provide an accessible implementation +in R. The package provided dedicated functions for independent, paired, +and one-sample t-tests, as well as correlations and meta-analytic +equivalence tests. It has been widely adopted, with over 1000 citations +to date. + +However, the original package had a number of limitations. It offered a +function-per-design interface (separate functions for each t-test type), +lacked robust alternatives, provided no support for ANOVA equivalence +testing, and had no tools for comparing effect sizes across studies. +Also, the package did not integrate with standard R workflows and +usually just printed results to the console rather than returning +objects that could be manipulated or plotted. + +This paper provides a tutorial-style introduction to the updated TOSTER +package, organized around its major capabilities: (1) a unified t-test +interface (\texttt{t\_TOST}) that pairs a standard significance test +with an equivalence test and supports minimal effect testing, (2) a +simplified hypothesis testing interface (\texttt{simple\_htest}) that +returns standard \texttt{htest} objects, (3) tools for computing and +testing standardized effect sizes --- including standardized mean +differences (SMDs), rank-based effect sizes, and correlations, (4) +robust and resampling-based alternatives including the Brunner-Munzel +test, bootstrap and permutation t-tests, and log-transformed methods, +(5) equivalence testing for ANOVAs, and (6) power analysis and sample +size planning. Each section motivates when and why a researcher would +use TOSTER's functions before demonstrating how TOSTER actually works. + +TOSTER occupies a specific niche in the R ecosystem in that it is a +frequentist toolkit for equivalence testing of standard designs. +Researchers interested in Bayesian approaches to evidence for the null +have excellent options (e.g., ``bayestestR'' by \citet{bayestestR}). For +equivalence-style contrasts in more complex models (e.g., mixed models) +the ``emmeans'' \citep{emmeans} and ``marginaleffects'' +\citep{marginaleffects} packages can accommodate non-zero null +hypotheses. TOSTER fills the space of accessible, self-contained +equivalence testing for common, albeit simple, research designs. For a +broader introduction to the methodology, see \citet{lakens_ori}, +\citet{lakens2018equivalence}, \citet{lakens2020improving}, +\citet{mazzolari2022myths}, and \citet{Tomek_Caldwell_Eisner_2026}. +TOSTER is also available as a \href{https://www.jamovi.org/}{jamovi} +module for researchers who prefer a graphical interface although it has +limited capabilities compared to the R package. + +\section{Setting Equivalence Bounds}\label{setting-equivalence-bounds} + +There are two questions that I think warrant consideration when using +equivalence testing: 1) what quantity the hypothesis concerns, and 2) +how much of that quantity is too small to matter. The first is a choice +of estimand, the second a choice of bounds. I believe both must be +considered when undertaking equivalence testing because a bound is a +magnitude on the scale of some particular quantity, and the same number +can describe quite different hypotheses depending on what is being +estimated. + +\subsection{Choosing an Estimand}\label{choosing-an-estimand} + +The estimand is the quantity a study is attempting to estimate +\citep{Lundberg_Johnson_Stewart_2021}. In an ideal scenario, the +hypothesis should determine the estimand, and estimand then narrows the +set of appropriate tests. Not considering the estimand is a reliable way +to end up testing the wrong hypothesis. + +This matters more for equivalence testing than for nil-hypothesis +testing. When two distributions are identical, the location-type +quantities in Table \ref{tab:estimands} all take their null values at +once (the mean difference and the pseudo-median are both zero, and the +probability of superiority is exactly 0.5) so a nil test is +comparatively forgiving of an unexamined estimand. An equivalence bound +makes the decision more consequential. It is a specific magnitude on a +specific scale, and there is generally no way to translate a bound on +one scale into a bound on another (at least without making very serious +assumptions). Bounds of \(\pm\) 0.5 placed on a mean difference, on a +median/pseudo-median, and on the SMD describe three different +hypotheses, only one of which is likely to be the intended one. + +Table \ref{tab:estimands} lists the estimands TOSTER can place bounds on +and the functions that target each. Two entries deserve comment. The +trimmed mean, available through the \texttt{tr} argument of the +resampling functions (\texttt{tr\ =\ 0} by default), coincides with the +mean only when the distribution is symmetric; setting \texttt{tr} +therefore changes the estimand rather than merely making the same +estimate more robust. The SMD is a rescaling of the mean difference by a +sample-dependent quantity, which is why it warrants the separate caution +given later in this paper. + +\begin{longtable}[]{@{} + >{\raggedright\arraybackslash}p{(\linewidth - 4\tabcolsep) * \real{0.3684}} + >{\raggedright\arraybackslash}p{(\linewidth - 4\tabcolsep) * \real{0.2763}} + >{\raggedright\arraybackslash}p{(\linewidth - 4\tabcolsep) * \real{0.3553}}@{}} +\caption{\label{tab:estimands}Estimands supported by TOSTER, the scale +on which equivalence bounds are specified for each, and the primary +functions targeting them.}\tabularnewline +\toprule\noalign{} +\begin{minipage}[b]{\linewidth}\raggedright +Estimand +\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright +Scale of the bound +\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright +Primary functions +\end{minipage} \\ +\midrule\noalign{} +\endfirsthead +\toprule\noalign{} +\begin{minipage}[b]{\linewidth}\raggedright +Estimand +\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright +Scale of the bound +\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright +Primary functions +\end{minipage} \\ +\midrule\noalign{} +\endhead +\bottomrule\noalign{} +\endlastfoot +Mean or mean difference & Original units & \texttt{t\_TOST}, +\texttt{tsum\_TOST}, \texttt{simple\_htest} \\ +Mean, with empirically calibrated reference distributions & Original +units & \texttt{boot\_t\_TOST}, \texttt{boot\_t\_test}, +\texttt{perm\_t\_test} \\ +Trimmed mean difference & Original units & \texttt{boot\_t\_TOST}, +\texttt{perm\_t\_test} (via \texttt{tr}) \\ +Ratio of geometric means & Multiplicative ratio & \texttt{log\_TOST}, +\texttt{boot\_log\_TOST} \\ +Pseudo-median (Hodges-Lehmann) & Original units & +\texttt{wilcox\_TOST} \\ +Stochastic superiority & Probability (0 to 1) & +\texttt{brunner\_munzel} \\ +Standardized mean difference & Standard deviation units & +\texttt{smd\_calc}, \texttt{boot\_smd\_calc} \\ +Correlation & Correlation (\(-1\) to 1) & \texttt{z\_cor\_test}, +\texttt{boot\_cor\_test} \\ +Proportion of variance explained & Proportion (0 to 1) & +\texttt{equ\_anova}, \texttt{equ\_ftest} \\ +\end{longtable} + +In applied settings the estimand is not fully pinned down by the choice +of summary statistic either. Decisions about how intercurrent events +(post-randomization events such as dropout) and missing data are handled +determine which population summary is being estimated at all. Two +analyses that both report ``the mean difference'' may be estimating +materially different things if they resolve these questions differently. + +It is prudent to settle on the estimand first and then justify a bound +on its scale, rather than the dubious process selecting a test from +decision tree and adopting whatever quantity it happens to return. This +estimand-first style approach also makes the robust methods described +later in this paper easier to navigate. The robust methods discussed +here are often tests of different quantities, and only some of them +remain answers to a hypothesis about means. + +\subsection{Justifying the Bounds}\label{justifying-the-bounds} + +Before applying any equivalence test, the researcher must specify the +equivalence bounds which defines the range of effect sizes considered +too small to be meaningful. There is no single correct method for +choosing these bounds; the appropriate approach depends entirely on the +research question and domain of research. + +If a researcher has an equivalence hypothesis, they should be able to +articulate what magnitude of effect would be too small to matter in +context. The SESOI must flow from the hypothesis formulated by theory +and context not from a formula. However, there are several general +strategies that have been evaluated \citep{delta2}. Anchor-based methods +tie the bound to an externally meaningful criterion, such as a +clinically meaningful difference or a ``just-noticeable'' difference +\citep{sesoi}. Distribution-based methods define the bound as a fraction +of the measurement error \citep{Jacobson_Truax_1991}, though this +approach is generally not recommended \citep{delta2}. Cost-benefit, also +referred to as health economic methods \citep{delta2}, reasoning sets +the bound at the point where there is a net benefit relative to the cost +of an intervention. Researchers can draw on existing literature or +normative data to identify effect magnitudes that prior work suggests +are negligible. When theory is sufficiently precise, however, the bound +may require no external benchmark at all, and the hypothesis itself +implies what magnitude of effect would be too small to matter. + +Using ``default'' bounds on the SMD (also known as Cohen's d) based on +Cohen's benchmarks (e.g., SMD = 0.2, 0.5, 0.8 to imply small, medium, or +large effects, respectively) without domain-specific justification is +strongly discouraged. Cohen himself stated that these conventions were +``recommended for use only when no better basis for estimating the index +is available'' (p.~25, as cited in \citet{panzarella2021}) and +reportedly came to regret having proposed them at all +\citep{funder2019}. These benchmarks should never be used as universal +thresholds. When applied uncritically, these benchmarks can produce +equivalence bounds that are too wide, too narrow, and likely entirely +disconnected from the substantive research question. + +If a researcher cannot specify meaningful bounds, this itself is +informative as it suggests the equivalence hypothesis is not well enough +developed to test such a hypothesis. In such cases, it may be more +productive to focus on effect estimation and description rather than +leaping to hypothesis tests \citep{scheel_hypothesis}. Throughout the +examples in this paper, equivalence bounds, and the data sets +themselves, are chosen for illustrative purposes; readers should not +treat them as direct recommendations for their own research. + +\section{TOST with t-tests}\label{tost-with-t-tests} + +The t-test is the standard tool for comparing means. Its construction is +simple: we estimate a mean (one-sample), the mean of the paired +differences (paired samples), or the difference in means between two +groups, and then divide that estimate by its standard error. The +resulting t-statistic is compared against a t-distribution to obtain +p-values and confidence intervals. Written generally, the statistic +takes the form \(t = (\hat{\mu} - \mu_0)/SE_{\hat{\mu}}\), where +\(\hat{\mu}\) is the estimate and \(\mu_0\) is the value being tested +against. + +What matters for equivalence testing is that \(\mu_0\) is a choice +rather than a fixed feature of the test. A traditional nil hypothesis +test fixes \(\mu_0 = 0\) and asks whether the mean, or mean difference, +is exactly zero. TOST changes none of the underlying machinery; it +changes only what is substituted for \(\mu_0\). Two one-sided tests are +performed --- one against the lower bound (\(\mu_0 = \Delta_L\)) and one +against the upper bound (\(\mu_0 = \Delta_U\)) --- and equivalence is +concluded only if both reject. Because each test is one-sided at +\(\alpha\), the interval estimate corresponding to the procedure is a +\(1-2\alpha\) (typically 90\%) confidence interval, which is what TOSTER +reports and plots. + +Throughout, the estimand for a t-test is the mean, or mean difference, +on the original scale of measurement. As discussed above, this is a +default rather than an inviolable property of the test, and it is worth +restating here because several of the alternatives described later in +this paper (the rank-based tests in particular) estimate different +quantities entirely, and are not interchangeable substitutes when the +hypothesis concerns means. + +The \texttt{t\_TOST} function in TOSTER provides a unified interface for +equivalence and minimal effect testing with t-tests. It runs a standard +nil significance test alongside the equivalence (or minimal effect) +test, because in practice researchers may want both: ``Is there a +significant effect?'' and ``Can I rule out a meaningful effect?'' The +function handles independent, paired, and one-sample designs through the +\texttt{paired} argument and accepts data via either a formula interface +or raw vectors, making it a direct analog to base R's \texttt{t.test}. +Additionally, the output includes an SMD calculation alongside the +unstandarized mean difference with appropriate, albeit approximate, +confidence intervals. For researchers who only want to test a single +hypothesis at a time, the \texttt{simple\_htest} function (described in +the next section) provides a lighter alternative. + +Minimal effect testing (MET) is also supported. MET is useful when the +hypothesis is that an effect \emph{exceeds} a meaningful threshold. In +the case of MET, the null hypothesis is equivalence, and rejection +implies a practically meaningful effect (see Figure 1) +\citep{mazzolari2022myths}. \begin{figure} \centering -\includegraphics{Avocado_Update_files/figure-latex/hypplot-1.pdf} -\caption{Type of Hypothesis} +\pandocbounded{\includegraphics[keepaspectratio,alt={Types of hypotheses tests supported by two one-sided tests (TOST) procedures.}]{Avocado_Update_files/Avocado_Update_files/figure-latex/hypplot-1.pdf}} +\caption{Types of hypotheses tests supported by two one-sided tests +(TOST) procedures.} \end{figure} \newpage -In these examples of \texttt{t\_TOST}, we will use the \texttt{bugs} -data from the \texttt{jmv} R package and the \texttt{sleep} data. +\subsection{Independent Groups +Example}\label{independent-groups-example} + +Throughout this manuscript, examples use two datasets. The \texttt{bugs} +data from the \texttt{jmv} R package contains participants' ratings (on +a 0--10 scale) of their desire to kill bugs that vary in how disgusting +and frightening they are, and is used for the independent-groups and +one-sample examples. The \texttt{sleep} data, which records the increase +in hours of sleep for the same 10 patients under two drugs, is used for +the paired examples in later sections. Because one participant in +\texttt{bugs} has no recorded gender, I first restrict the data to +participants who reported either female or male gender. \begin{Shaded} \begin{Highlighting}[] \FunctionTok{data}\NormalTok{(}\StringTok{\textquotesingle{}sleep\textquotesingle{}}\NormalTok{)} \FunctionTok{library}\NormalTok{(jmv)} \FunctionTok{data}\NormalTok{(}\StringTok{\textquotesingle{}bugs\textquotesingle{}}\NormalTok{)} +\CommentTok{\# keep participants with a recorded gender} +\NormalTok{bugs\_g }\OtherTok{=} \FunctionTok{droplevels}\NormalTok{(}\FunctionTok{subset}\NormalTok{(bugs, Gender }\SpecialCharTok{\%in\%} \FunctionTok{c}\NormalTok{(}\StringTok{"Female"}\NormalTok{, }\StringTok{"Male"}\NormalTok{)))} \end{Highlighting} \end{Shaded} -\hypertarget{independent-groups}{% -\subsection{Independent Groups}\label{independent-groups}} - -For this example, we will use the sleep data. In this data, there is a -\texttt{group} variable and an outcome \texttt{extra}. - -\begin{Shaded} -\begin{Highlighting}[] -\FunctionTok{head}\NormalTok{(sleep,}\DecValTok{2}\NormalTok{)} -\end{Highlighting} -\end{Shaded} - -\begin{verbatim} -## extra group ID -## 1 0.7 1 1 -## 2 -1.6 1 2 -\end{verbatim} - -We will assume the data are independent (in reality this is paired -data), and that we have equivalence bounds of +/- 0.5 units of -\texttt{extra}. All we need to do is provide the \texttt{formula}, -\texttt{data}, and \texttt{eqb} arguments for the function to run -appropriately. In addition, we can set the \texttt{var.equal} argument -(to assume equal variance), and the \texttt{paired} argument (sets if -the data is paired or not). Both are logical indicators that can be set -to TRUE or FALSE. The \texttt{alpha} is automatically set to 0.05 but -this can also be adjusted by the user depending on the desired -alpha-level\footnote{I strongly recommend users ``justify their alpha'' - \citep{jya1, jya2}, and the justification process can be aided by my - other R package \href{https://aaroncaldwell.us/Superpower}{Superpower}}. - -Standardize mean differences (SMDs) are provided in the output for any -t-test based TOST analysis (e.g., Cohen's d). The Hedges's corrected SMD -\citep{hedges_bias} is automatically calculated, but this can be -overridden with the \texttt{bias\_correction} argument\footnote{Glass's - delta can also be produced in the output by using the \texttt{glass} - argument}. In previous versions of this package, the equivalence -bounds could be set by the SMD (e.g., equivalence bound of 0.5 SD), but -this is an erroneous approach since the bound would be dependent upon -the \emph{sample} variance. However, users can opt for such an analysis -by setting \texttt{eqbound\_type} to SMD, which will produce a -noticeable warning to the R console. - -The \texttt{hypothesis} argument is automatically set to ``EQU'' for -equivalence, but if a minimal effect is of interest then ``MET'' can be -supplied. +For the first example, we compare female and male participants' ratings +for the low disgust, high fear (\texttt{LDHF}) bug with equivalence +bounds (set by the \texttt{eqb} argument) of \(\pm\) 1 point on the +rating scale. The \texttt{smd\_ci} argument can also be set to use one +of four possible calculations for the SMD confidence interval. In the +example below, I have opted to go with the normal approximation for +computational ease; such approximations tend provide adequate coverage +\citep{Viechtbauer_2007}. The formula interface works almost identically +to \texttt{t.test}: \begin{Shaded} \begin{Highlighting}[] -\CommentTok{\# Formula Interface} -\NormalTok{res1 }\OtherTok{=} \FunctionTok{t\_TOST}\NormalTok{(}\AttributeTok{formula =}\NormalTok{ extra }\SpecialCharTok{\textasciitilde{}}\NormalTok{ group, }\AttributeTok{data =}\NormalTok{ sleep, } - \AttributeTok{eqb =}\NormalTok{ .}\DecValTok{5}\NormalTok{, }\AttributeTok{smd\_ci =} \StringTok{"t"}\NormalTok{)} -\CommentTok{\# x \& y Interface} -\NormalTok{res1a }\OtherTok{=} \FunctionTok{t\_TOST}\NormalTok{(}\AttributeTok{x =} \FunctionTok{subset}\NormalTok{(sleep,group}\SpecialCharTok{==}\DecValTok{1}\NormalTok{)}\SpecialCharTok{$}\NormalTok{extra,} - \AttributeTok{y =} \FunctionTok{subset}\NormalTok{(sleep,group}\SpecialCharTok{==}\DecValTok{2}\NormalTok{)}\SpecialCharTok{$}\NormalTok{extra, }\AttributeTok{eqb =}\NormalTok{.}\DecValTok{5}\NormalTok{)} +\NormalTok{res1 }\OtherTok{=} \FunctionTok{t\_TOST}\NormalTok{(} + \CommentTok{\# difference in "Gender" of outcome "LDHF"} + \AttributeTok{formula =}\NormalTok{ LDHF }\SpecialCharTok{\textasciitilde{}}\NormalTok{ Gender,} + \CommentTok{\# data} + \AttributeTok{data =}\NormalTok{ bugs\_g,} + \CommentTok{\# equivalence bound} + \AttributeTok{eqb =} \DecValTok{1}\NormalTok{,} + \CommentTok{\# sets type of SMD confidence interval} + \AttributeTok{smd\_ci =} \StringTok{"z"} +\NormalTok{)} \end{Highlighting} \end{Shaded} -Once the function has run, we can print the results with the -\texttt{print} method. This provides a verbose summary of the results. +The \texttt{print} method provides a verbose summary including the +two-tailed test, both one-sided equivalence tests, and the SMD (Hedges' +\(g\) by default): \begin{Shaded} \begin{Highlighting}[] @@ -301,652 +483,1498 @@ \subsection{Independent Groups}\label{independent-groups}} ## ## Welch Two Sample t-test ## -## The equivalence test was non-significant, t(17.78) = -1.272, p = 8.9e-01 -## The null hypothesis test was non-significant, t(17.78) = -1.861, p = 7.94e-02 +## The equivalence test was non-significant, t(58.15) = -0.87, p = 0.2 +## The null hypothesis test was non-significant, t(58.15) = 0.921, p = 0.36 ## NHST: don't reject null significance hypothesis that the effect is equal to zero ## TOST: don't reject null equivalence hypothesis ## ## TOST Results -## t df p.value -## t-test -1.861 17.78 0.079 -## TOST Lower -1.272 17.78 0.890 -## TOST Upper -2.450 17.78 0.012 +## t df p.value +## t-test 0.9213 58.15 0.361 +## TOST Lower 2.7084 58.15 0.004 +## TOST Upper -0.8658 58.15 0.195 ## ## Effect Sizes -## Estimate SE C.I. Conf. Level -## Raw -1.5800 0.8491 [-3.0534, -0.1066] 0.9 -## Hedges's g(av) -0.7965 0.5992 [-1.8362, 0.2433] 0.9 +## Estimate SE C.I. Conf. Level +## Raw 0.5155 0.5596 [-0.4198, 1.4508] 0.9 +## Hedges's g(av) 0.2037 0.2270 [-0.1697, 0.5771] 0.9 ## Note: SMD confidence intervals are an approximation. See vignette("SMD_calcs"). +## Equivalence Bounds: Raw [-1, 1]; Hedges's g(av) [-0.3989, 0.3989] \end{verbatim} -\newpage - -Another nice feature is the generic \texttt{plot} method that can -provide a visual summary of the results. Most of the plots in this -package were inspired by the -\href{https://cran.r-project.org/package=concurve}{concurve} R package -\citep{rafi2020}. There are two types of plots that can be produced. The -first, and default, is the consonance density plot -(\texttt{type\ =\ "cd"}). +A greater description of the results can be accomplished with +\texttt{describe} method. \begin{Shaded} \begin{Highlighting}[] -\FunctionTok{plot}\NormalTok{(res1, }\AttributeTok{type =} \StringTok{"cd"}\NormalTok{)} +\FunctionTok{cat}\NormalTok{(}\FunctionTok{describe}\NormalTok{(res1))} \end{Highlighting} \end{Shaded} -\begin{figure} -\centering -\includegraphics{Avocado_Update_files/figure-latex/cdplot-1.pdf} -\caption{Example of consonance density plot.} -\end{figure} +Using the Welch Two Sample t-test, a null hypothesis significance test +(NHST), and a equivalence test, via two one-sided tests (TOST), were +performed with an alpha-level of 0.05. These tested the null hypotheses +that true mean difference is equal to 0 (NHST), and true mean difference +is more extreme than -1 and 1 (TOST). Both the equivalence test (p = +0.195), and the NHST (p = 0.361) were not significant (mean difference = +0.516 90\% C.I.{[}-0.42, 1.451{]}; Hedges's g(av) = 0.204 90\% +C.I.{[}-0.17, 0.577{]}). Therefore, the results are inconclusive: +neither null hypothesis can be rejected. \newpage -The shading pattern can be modified with the \texttt{ci\_shades}. +The default visualization provided by the generic \texttt{plot} method +for \texttt{t\_TOST} provides a simple visualization of both effect +sizes and their respective confidence intervals alongside the +equivalence bounds. Test information is also printed at the top of the +plot. \begin{Shaded} \begin{Highlighting}[] -\FunctionTok{plot}\NormalTok{(res1, }\AttributeTok{type =} \StringTok{"cd"}\NormalTok{,} - \AttributeTok{ci\_shades =} \FunctionTok{c}\NormalTok{(.}\DecValTok{9}\NormalTok{,.}\DecValTok{95}\NormalTok{))} +\FunctionTok{plot}\NormalTok{(res1)} \end{Highlighting} \end{Shaded} \begin{figure} \centering -\includegraphics{Avocado_Update_files/figure-latex/shadeplot-1.pdf} -\caption{Demonstrating the shading in plot method.} +\pandocbounded{\includegraphics[keepaspectratio,alt={Results of the independent-samples equivalence test visualized with the default plot method. The top panel displays the raw mean difference with its 90\% confidence interval, and the bottom panel displays the standardized effect size (Hedges's gav) with its 90\% confidence interval. In both panels, the dashed vertical lines indicate the equivalence bounds (raw: -1 to 1; standardized: approximately -0.4 to 0.4), and the point estimate is marked by a filled circle. A 90\% confidence interval is used because it corresponds to the two one-sided tests (TOST) procedure at an alpha level of 0.05.}]{Avocado_Update_files/Avocado_Update_files/figure-latex/genericplot-1.pdf}} +\caption{Results of the independent-samples equivalence test visualized +with the default plot method. The top panel displays the raw mean +difference with its 90\% confidence interval, and the bottom panel +displays the standardized effect size (Hedges's g\textsubscript{av}) +with its 90\% confidence interval. In both panels, the dashed vertical +lines indicate the equivalence bounds (raw: -1 to 1; standardized: +approximately -0.4 to 0.4), and the point estimate is marked by a filled +circle. A 90\% confidence interval is used because it corresponds to the +two one-sided tests (TOST) procedure at an alpha level of 0.05.} \end{figure} -\newpage - -Consonance plots, where all confidence intervals can be simultaneous -plotted, can also be produced. The advantage here is multiple confidence -interval lines can plotted at once. +Also when the generic \texttt{plot} method has the \texttt{type} +argument set to ``cd'' this produces a consonance density plot, inspired +by the ``concurve'' R package \citep{rafi2020}, that shows the estimate, +confidence intervals, and equivalence bounds simultaneously: \begin{Shaded} \begin{Highlighting}[] -\FunctionTok{plot}\NormalTok{(res1, }\AttributeTok{type =} \StringTok{"c"}\NormalTok{,} - \AttributeTok{ci\_lines =} \FunctionTok{c}\NormalTok{(.}\DecValTok{9}\NormalTok{,.}\DecValTok{95}\NormalTok{))} +\FunctionTok{plot}\NormalTok{(res1, }\AttributeTok{type =} \StringTok{"cd"}\NormalTok{)} \end{Highlighting} \end{Shaded} \begin{figure} \centering -\includegraphics{Avocado_Update_files/figure-latex/conplot-1.pdf} -\caption{Example of consonance plot.} +\pandocbounded{\includegraphics[keepaspectratio,alt={Consonance density plot for the independent-samples equivalence test. The top panel displays the standardized effect size (Hedges's gav) and the bottom panel displays the raw mean difference. In each panel, the consonance density curve represents the distribution of confidence intervals across all levels, with color-coded regions corresponding to the 68\%, 90\%, 95\%, and 99.9\% confidence intervals. The point estimate is marked by a filled circle along the x-axis. The dashed vertical lines indicate the equivalence bounds (standardized: approximately -0.4 to 0.4; raw: -1 to 1). This visualization conveys the full range of effect sizes compatible with the data at varying confidence levels, rather than relying on a single confidence interval. Wider, less certain intervals (e.g., 99.9\%) extend further from the point estimate, while narrower intervals (e.g., 68\%) cluster near it.}]{Avocado_Update_files/Avocado_Update_files/figure-latex/cdplot-1.pdf}} +\caption{Consonance density plot for the independent-samples equivalence +test. The top panel displays the standardized effect size (Hedges's +g\textsubscript{av}) and the bottom panel displays the raw mean +difference. In each panel, the consonance density curve represents the +distribution of confidence intervals across all levels, with color-coded +regions corresponding to the 68\%, 90\%, 95\%, and 99.9\% confidence +intervals. The point estimate is marked by a filled circle along the +x-axis. The dashed vertical lines indicate the equivalence bounds +(standardized: approximately -0.4 to 0.4; raw: -1 to 1). This +visualization conveys the full range of effect sizes compatible with the +data at varying confidence levels, rather than relying on a single +confidence interval. Wider, less certain intervals (e.g., 99.9\%) extend +further from the point estimate, while narrower intervals (e.g., 68\%) +cluster near it.} \end{figure} -\newpage - -\hypertarget{paired-sample}{% -\subsection{Paired Sample}\label{paired-sample}} - -To perform TOST on paired samples, the process does not change much. We -could process the test the same way by providing a formula. All we would -need to then is change \texttt{paired} to TRUE. +Other plot types are available: \texttt{type\ =\ "c"} produces a +consonance plot showing multiple confidence interval levels, and shading +can be customized with the \texttt{ci\_shades} argument. + +\subsection{One-Sample t-test with Asymmetric +Bounds}\label{one-sample-t-test-with-asymmetric-bounds} + +When the equivalence bounds are not symmetric around the null, two +values can be supplied to \texttt{eqb}. This is common when the research +question implies asymmetric consequences. Similarly, we may want to test +the mean itself rather than a mean difference. This harkens back to the +original use of the t-test by Gosset at Guinness Brewery, where the +concern was whether a single sample mean fell within acceptable limits. +Here we test whether the mean LDHF rating falls between 5.5 and 8.5, +while the nil hypothesis test is performed against a hypothesized value +of 7.5 (set with the \texttt{mu} argument). Note that the equivalence +bounds are specified on the original scale of the data (i.e., they are +values of the mean, not distances from \texttt{mu}), and the raw +estimate and its confidence interval are reported on that same scale. +The SMD, in contrast, is calculated relative to \texttt{mu} (i.e., +\((\bar{x} - \mu)/s\)), so its bounds are expressed as standardized +distances from \texttt{mu}; the printed output notes this whenever +\texttt{mu} is not zero: \begin{Shaded} \begin{Highlighting}[] -\NormalTok{res2 }\OtherTok{=} \FunctionTok{t\_TOST}\NormalTok{(}\AttributeTok{formula =}\NormalTok{ extra }\SpecialCharTok{\textasciitilde{}}\NormalTok{ group,} - \AttributeTok{data =}\NormalTok{ sleep,} - \AttributeTok{paired =} \ConstantTok{TRUE}\NormalTok{,} - \AttributeTok{eqb =}\NormalTok{ .}\DecValTok{5}\NormalTok{)} -\NormalTok{res2} +\NormalTok{res4 }\OtherTok{=} \FunctionTok{t\_TOST}\NormalTok{(} + \CommentTok{\# single sample, vector from which to estimate mean} + \AttributeTok{x =}\NormalTok{ bugs}\SpecialCharTok{$}\NormalTok{LDHF,} + \CommentTok{\# set nil significance test to 7.5} + \AttributeTok{mu =} \FloatTok{7.5}\NormalTok{,} + \CommentTok{\# set TOST bounds to 5.5 and 8.5} + \AttributeTok{eqb =} \FunctionTok{c}\NormalTok{(}\FloatTok{5.5}\NormalTok{, }\FloatTok{8.5}\NormalTok{)} +\NormalTok{)} +\NormalTok{res4} \end{Highlighting} \end{Shaded} \begin{verbatim} ## -## Paired t-test +## One Sample t-test ## -## The equivalence test was non-significant, t(9) = -2.777, p = 9.89e-01 -## The null hypothesis test was significant, t(9) = -4.062, p = 2.83e-03 -## NHST: reject null significance hypothesis that the effect is equal to zero -## TOST: don't reject null equivalence hypothesis +## The equivalence test was significant, t(90) = -4.2, p < 0.01 +## The null hypothesis test was non-significant, t(90) = -0.458, p = 0.65 +## NHST: don't reject null significance hypothesis that the effect is equal to 7.5 +## TOST: reject null equivalence hypothesis ## ## TOST Results -## t df p.value -## t-test -4.062 9 0.003 -## TOST Lower -2.777 9 0.989 -## TOST Upper -5.348 9 < 0.001 +## t df p.value +## t-test -0.4577 90 0.648 +## TOST Lower 7.1156 90 < 0.001 +## TOST Upper -4.2444 90 < 0.001 ## ## Effect Sizes -## Estimate SE C.I. Conf. Level -## Raw -1.580 0.389 [-2.293, -0.867] 0.9 -## Hedges's g(z) -1.174 0.411 [-1.8046, -0.4977] 0.9 +## Estimate SE C.I. Conf. Level +## Raw 7.37912 0.2641 [6.9402, 7.818] 0.9 +## Hedges's g -0.04758 0.1049 [-0.2185, 0.1236] 0.9 ## Note: SMD confidence intervals are an approximation. See vignette("SMD_calcs"). +## Equivalence Bounds: Raw [5.5, 8.5]; Hedges's g [-0.7939, 0.397] +## Note: raw estimate, confidence interval, and bounds are on the original +## scale; the Hedges's g and its bounds are relative to mu = 7.5. \end{verbatim} -\newpage - -However, we may have two vectors of data that are paired. So instead we -may want to just provide those separately rather than using a data set -and setting the formula. This can be demonstrated with the ``bugs'' -data. +The same interface handles paired designs by setting +\texttt{paired\ =\ TRUE}. SMDs are reported automatically; Hedges's +correction is applied by default but can be toggled with +\texttt{bias\_correction}, and Glass's delta can be requested via the +\texttt{glass} argument. Setting equivalence bounds in SMD units (via +\texttt{eqbound\_type\ =\ "SMD"}) is possible but discouraged because +the bound becomes dependent on sample variance (see the Standardized +Effect Sizes section below). + +\subsection{Checking Assumptions}\label{checking-assumptions} + +The parametric t-tests implemented in \texttt{t\_TOST} assume +independent observations, approximately normal residuals (or +differences, in the paired and one-sample cases), and, for Student's +form, equal variances between groups; Welch's correction relaxes the +equal-variance assumption and is the default. The residual normality +assumption matters most in small samples, where the central limit +theorem provides limited protection. Visual diagnostics are generally +more informative than formal tests: QQ plots of residuals or differences +for normality, side-by-side boxplots or density overlays for variance +comparison, and inspection of residual plots or boxplots for extreme or +influential observations. A worked diagnostic workflow for each design +is provided in the \href{https://doi.org/10.5281/zenodo.22776189}{online +supplement}. When assumptions are seriously in doubt, the bootstrap and +permutation alternatives discussed in later sections provide valid +inference under relaxed ----- though not eliminated ----- distributional +requirements. + +\subsection{Using Summary Statistics}\label{using-summary-statistics} + +When only summary statistics are available (e.g., from a published +article), the \texttt{tsum\_TOST} function performs the same tests using +sample means, standard deviations, sample sizes, and (for paired +designs) the correlation between measures\footnote{The + \texttt{extract\_r\_paired} function can be used if the correlation + between paired observations is not readily available.}: \begin{Shaded} \begin{Highlighting}[] -\NormalTok{res3 }\OtherTok{=} \FunctionTok{t\_TOST}\NormalTok{(}\AttributeTok{x =}\NormalTok{ bugs}\SpecialCharTok{$}\NormalTok{LDHF,} - \AttributeTok{y =}\NormalTok{ bugs}\SpecialCharTok{$}\NormalTok{LDLF,} - \AttributeTok{paired =} \ConstantTok{TRUE}\NormalTok{,} - \AttributeTok{eqb =} \DecValTok{1}\NormalTok{)} -\NormalTok{res3} +\NormalTok{res\_tsum }\OtherTok{=} \FunctionTok{tsum\_TOST}\NormalTok{(} + \CommentTok{\# sample mean} + \AttributeTok{m1 =} \FunctionTok{mean}\NormalTok{(bugs}\SpecialCharTok{$}\NormalTok{LDHF, }\AttributeTok{na.rm =} \ConstantTok{TRUE}\NormalTok{),} + \CommentTok{\# sample standard deviation} + \AttributeTok{sd1 =} \FunctionTok{sd}\NormalTok{(bugs}\SpecialCharTok{$}\NormalTok{LDHF, }\AttributeTok{na.rm =} \ConstantTok{TRUE}\NormalTok{),} + \CommentTok{\# sample size} + \AttributeTok{n1 =} \FunctionTok{length}\NormalTok{(}\FunctionTok{na.omit}\NormalTok{(bugs}\SpecialCharTok{$}\NormalTok{LDHF)),} + \CommentTok{\# equivalence rather than minimal effects test} + \AttributeTok{hypothesis =} \StringTok{"EQU"}\NormalTok{,} + \CommentTok{\# sets type of SMD confidence interval} + \AttributeTok{smd\_ci =} \StringTok{"t"}\NormalTok{,} + \CommentTok{\# equivalence bounds} + \AttributeTok{eqb =} \FunctionTok{c}\NormalTok{(}\FloatTok{5.5}\NormalTok{, }\FloatTok{8.5}\NormalTok{)} +\NormalTok{)} + +\NormalTok{res\_tsum} \end{Highlighting} \end{Shaded} \begin{verbatim} ## -## Paired t-test +## One-sample t-test ## -## The equivalence test was non-significant, t(90) = 2.655, p = 9.95e-01 -## The null hypothesis test was significant, t(90) = 6.649, p = 2.22e-09 +## The equivalence test was significant, t(90) = -4.244, p = 2.66e-05 +## The null hypothesis test was significant, t(90) = 27.942, p = 3.91e-46 ## NHST: reject null significance hypothesis that the effect is equal to zero -## TOST: don't reject null equivalence hypothesis +## TOST: reject null equivalence hypothesis ## ## TOST Results ## t df p.value -## t-test 6.649 90 < 0.001 -## TOST Lower 10.642 90 < 0.001 -## TOST Upper 2.655 90 0.995 +## t-test 27.942 90 < 0.001 +## TOST Lower 7.116 90 < 0.001 +## TOST Upper -4.244 90 < 0.001 ## ## Effect Sizes -## Estimate SE C.I. Conf. Level -## Raw 1.6648 0.2504 [1.2487, 2.081] 0.9 -## Hedges's g(z) 0.6911 0.1167 [0.4987, 0.8802] 0.9 +## Estimate SE C.I. Conf. Level +## Raw 7.379 0.2641 [6.9402, 7.818] 0.9 +## Hedges's g 2.905 0.2395 [2.4289, 3.3804] 0.9 ## Note: SMD confidence intervals are an approximation. See vignette("SMD_calcs"). +## Equivalence Bounds: Raw [5.5, 8.5]; Hedges's g [2.1832, 3.3741] \end{verbatim} -\newpage - -Additionally, a MET, instead of equivalence testing, can be performed -with the \texttt{hypothesis} argument set to ``MET''. With this setting, -the hypothesis being tested is whether the effect is \emph{greater} than -the equivalence bound. +\section{Simplified Hypothesis +Testing}\label{simplified-hypothesis-testing} + +The \texttt{t\_TOST} function is designed to be comprehensive in that it +runs three tests, computes standardized effect sizes, and produces +verbose output. This is useful for exploration or situations where +researchers \emph{always} want to pair a traditional nil significance +test with an equivalence test. However, sometimes a researcher has a +single specific hypothesis to test, or simply wants less verbose output +(e.g., SMD calculation is not wanted). The \texttt{simple\_htest} +function provides a lighter interface for this purpose. It returns a +standard R \texttt{htest} object (the same class returned by +\texttt{t.test()} and \texttt{wilcox.test()}) but with expanded +\texttt{alternative} options that include \texttt{"equivalence"} and +\texttt{"minimal.effect"}. This means researchers can perform +equivalence testing with the same familiar interface they already use +for standard hypothesis tests\footnote{In fact, users can mostly replace + \texttt{t.test()} and \texttt{wilcox.test()} with + \texttt{simple\_htest} as it also allows for the standard alternative + hypotheses of two-sided, greater, less. If you have a hypothesis that + would traditionally utilize a t-test or Wilcoxon-Mann-Whitney (WMW) + test, then you can jump right to using \texttt{simple\_htest} in + TOSTER}. + +Alongside \texttt{simple\_htest}, a set of helper functions makes it +easy to work with any \texttt{htest} object: \texttt{as\_htest} converts +verbose TOST output to the simpler format, \texttt{describe\_htest} +generates formatted text for reporting, \texttt{df\_htest} converts +results to data frames for tabulation, and \texttt{plot\_htest\_est} +produces estimate plots with equivalence bounds. Checking assumptions +would follow the same workflow as \texttt{t\_TOST}, as both are using +t-tests, as discussed in the +\href{https://doi.org/10.5281/zenodo.22776189}{online supplement}. + +\subsection{The simplified function}\label{the-simplified-function} + +The \texttt{simple\_htest} function supports \texttt{t.test} and +\texttt{wilcox.test} as the underlying test (via the \texttt{test} +argument) and all five alternative hypotheses: \texttt{"two.sided"}, +\texttt{"less"}, \texttt{"greater"}, \texttt{"equivalence"}, and +\texttt{"minimal.effect"}. The \texttt{mu} parameter specifies +equivalence bounds. This single value creates symmetric bounds (e.g., if +1 is provided at \texttt{mu} with \texttt{alternative\ =\ "equivalence"} +then the equivalence region will be {[}-1,1{]}), or two values can be +given for asymmetric bounds. \begin{Shaded} \begin{Highlighting}[] -\NormalTok{res3a }\OtherTok{=} \FunctionTok{t\_TOST}\NormalTok{(}\AttributeTok{x =}\NormalTok{ bugs}\SpecialCharTok{$}\NormalTok{LDHF,} - \AttributeTok{y =}\NormalTok{ bugs}\SpecialCharTok{$}\NormalTok{LDLF,} - \AttributeTok{paired =} \ConstantTok{TRUE}\NormalTok{,} - \AttributeTok{hypothesis =} \StringTok{"MET"}\NormalTok{,} - \AttributeTok{eqb =} \DecValTok{1}\NormalTok{)} -\NormalTok{res3a} +\NormalTok{res\_sh1 }\OtherTok{=} \FunctionTok{simple\_htest}\NormalTok{(} +\NormalTok{ extra }\SpecialCharTok{\textasciitilde{}}\NormalTok{ group,} + \AttributeTok{data =}\NormalTok{ sleep,} + \AttributeTok{paired =} \ConstantTok{TRUE}\NormalTok{,} + \CommentTok{\# equivalence hypothesis} + \AttributeTok{alternative =} \StringTok{"equivalence"}\NormalTok{,} + \CommentTok{\# symmetric bounds of {-}0.5 and 0.5} + \AttributeTok{mu =} \FloatTok{0.5} +\NormalTok{)} +\NormalTok{res\_sh1} \end{Highlighting} \end{Shaded} \begin{verbatim} ## -## Paired t-test -## -## The minimal effect test was significant, t(90) = 10.642, p = 4.69e-03 -## The null hypothesis test was significant, t(90) = 6.649, p = 2.22e-09 -## NHST: reject null significance hypothesis that the effect is equal to zero -## TOST: reject null MET hypothesis -## -## TOST Results -## t df p.value -## t-test 6.649 90 < 0.001 -## TOST Lower 10.642 90 1 -## TOST Upper 2.655 90 0.005 +## Paired t-test ## -## Effect Sizes -## Estimate SE C.I. Conf. Level -## Raw 1.6648 0.2504 [1.2487, 2.081] 0.9 -## Hedges's g(z) 0.6911 0.1167 [0.4987, 0.8802] 0.9 -## Note: SMD confidence intervals are an approximation. See vignette("SMD_calcs"). +## data: extra by group +## t = -2.7766, df = 9, p-value = 0.9892 +## alternative hypothesis: equivalence +## null values: +## mean difference mean difference +## -0.5 0.5 +## 90 percent confidence interval: +## -2.2930053 -0.8669947 +## sample estimates: +## mean of the differences (z = '1' - '2') +## -1.58 \end{verbatim} -The data would indicate that we should accept the MET hypothesis. - -\newpage - -\hypertarget{one-sample-t-test}{% -\subsection{One Sample t-test}\label{one-sample-t-test}} - -In other cases we may have a one sample test. If that is the case, only -\texttt{x} argument for the data is needed. This is useful in situations -where you may have hypotheses to test about a single samples mean. In -order for the two-sample test to be correct, we also need to supply the -\texttt{mu} argument. In the example below, we hypothesize that the mean -of \texttt{LDHF} is not more than 1.5 points greater or less than 7. -With the way the \texttt{mu} and \texttt{eqb} arguments are set, we are -testing whether the mean of \texttt{LDHF} is significantly different -from 7.5 (two-tailed tests) and (\(\pm\)) than 1.5 points 7.5 as well -(equivalence bounds at 5.5 and 8.5). +Additionally, tests other that TOST can be applied with this function. +The traditional nil-hypothesis tests, non-inferiority, or even +superiority-by-a-margin hypotheses can all be tested with this function. +For example, let's say we want to test that a treatment group in the +sleep data was just non-inferior to the other treatment rather than +equivalent. This can be accomplished by just setting the direction with +the \texttt{alternative} argument and the margin of non-inferiority by +the \texttt{mu} argument. \begin{Shaded} \begin{Highlighting}[] -\NormalTok{res4 }\OtherTok{=} \FunctionTok{t\_TOST}\NormalTok{(}\AttributeTok{x =}\NormalTok{ bugs}\SpecialCharTok{$}\NormalTok{LDHF,} - \AttributeTok{hypothesis =} \StringTok{"EQU"}\NormalTok{,} - \AttributeTok{mu =} \FloatTok{7.5}\NormalTok{,} - \AttributeTok{eqb =} \FunctionTok{c}\NormalTok{(}\FloatTok{5.5}\NormalTok{,}\FloatTok{8.5}\NormalTok{))} -\NormalTok{res4} +\NormalTok{res\_sh2 }\OtherTok{=} \FunctionTok{simple\_htest}\NormalTok{(} +\NormalTok{ extra }\SpecialCharTok{\textasciitilde{}}\NormalTok{ group,} + \AttributeTok{data =}\NormalTok{ sleep,} + \AttributeTok{paired =} \ConstantTok{TRUE}\NormalTok{,} + \CommentTok{\# non{-}inferiority rather than equivalence} + \AttributeTok{alternative =} \StringTok{"greater"}\NormalTok{,} + \CommentTok{\# margin of non{-}inferiority} + \AttributeTok{mu =} \SpecialCharTok{{-}}\FloatTok{0.5} +\NormalTok{)} +\NormalTok{res\_sh2} \end{Highlighting} \end{Shaded} \begin{verbatim} ## -## One Sample t-test -## -## The equivalence test was significant, t(90) = -4.244, p = 2.66e-05 -## The null hypothesis test was non-significant, t(90) = -0.458, p = 6.48e-01 -## NHST: don't reject null significance hypothesis that the effect is equal to 7.5 -## TOST: reject null equivalence hypothesis +## Paired t-test ## -## TOST Results -## t df p.value -## t-test -0.4577 90 0.648 -## TOST Lower 7.1156 90 < 0.001 -## TOST Upper -4.2444 90 < 0.001 -## -## Effect Sizes -## Estimate SE C.I. Conf. Level -## Raw -0.1209 0.2641 [6.9402, 7.818] 0.9 -## Hedges's g 2.9047 0.2395 [2.5058, 3.2949] 0.9 -## Note: SMD confidence intervals are an approximation. See vignette("SMD_calcs"). +## data: extra by group +## t = -2.7766, df = 9, p-value = 0.9892 +## alternative hypothesis: true mean difference is greater than -0.5 +## 95 percent confidence interval: +## -2.293005 Inf +## sample estimates: +## mean of the differences (z = '1' - '2') +## -1.58 \end{verbatim} -We would conclude that \texttt{LDHF} is practically equivalent to the -hypothesized mean (7.5). +Notice how the output, in either hypothesis test above, is a single +clean \texttt{htest} object. This is much more concise than the verbose +\texttt{t\_TOST} output shown previously on purpose. If you want to +perform additional tests (such as a complementary nil significance +tests) then that has to be done separately. However, there are some +methods (described below) that make this \texttt{htest} format easy to +deal with when reporting statistical test results. -\newpage +\subsection{Describing and Tabulating +Results}\label{describing-and-tabulating-results} + +For writing up results, \texttt{describe\_htest} generates a formatted +text string following typical scientific reporting conventions: + +\begin{Shaded} +\begin{Highlighting}[] +\FunctionTok{cat}\NormalTok{(}\FunctionTok{describe\_htest}\NormalTok{(res\_sh1))} +\end{Highlighting} +\end{Shaded} -\hypertarget{using-summary-statistics}{% -\subsection{Using Summary Statistics}\label{using-summary-statistics}} +The Paired t-test is not statistically significant (t(9) = -2.78, p = +0.989, mean of the differences (z = `1' - `2') = -1.58, 90\% +C.I.{[}-2.29, -0.867{]}) at a 0.05 alpha-level. The null hypothesis +cannot be rejected. At the desired error rate, it cannot be stated that +the true mean difference is between -0.5 and 0.5. -In some cases you may only have access to the summary statistics (e.g., -when reviewing an article or attempting to perform a meta-analysis). -Therefore, I created a function, \texttt{tsum\_TOST}, to perform the -same tests just based on the summary statistics. This involves providing -the function with a number of different arguments. +\subsection{Plotting Results}\label{plotting-results} -\begin{itemize} -\tightlist -\item - \texttt{n1\ \&\ n2} the sample sizes (only n1 needs to be provided for - one sample case) -\item - \texttt{m1\ \&\ m2} the sample means -\item - \texttt{sd1\ \&\ sd2} the sample standard deviation -\item - \texttt{r12} the correlation between each if paired is set to - TRUE\footnote{The \texttt{extract\_r\_paired} function can be used if - the correlation between paired observations is not readily - available.} -\end{itemize} +A visual summary of the estimate and confidence interval can be produced +with \texttt{plot\_htest\_est}. For equivalence and minimal effect +tests, the equivalence bounds are shown as dashed vertical lines: + +\begin{Shaded} +\begin{Highlighting}[] +\FunctionTok{plot\_htest\_est}\NormalTok{(res\_sh1)} +\end{Highlighting} +\end{Shaded} + +\begin{figure} +\centering +\pandocbounded{\includegraphics[keepaspectratio,alt={Estimate plot for an equivalence test via simple\_htest.}]{Avocado_Update_files/Avocado_Update_files/figure-latex/shplot1-1.pdf}} +\caption{Estimate plot for an equivalence test via simple\_htest.} +\end{figure} -The results from the \texttt{bugs} example can be replicated with the -\texttt{tsum\_TOST}: +\newpage + +\section{Standardized Effect Sizes}\label{standardized-effect-sizes} + +This section provides a unified treatment of the standardized effect +size tools in TOSTER and I cover SMDs, correlation coefficients, and +tools for comparing both between studies. Before demonstrating these +tools, it is worth discussing the limitations of standardized effect +sizes, because these limitations are especially important for +equivalence testing. + +\subsection{A Brief Warning on Standardized Effect +Sizes}\label{a-brief-warning-on-standardized-effect-sizes} + +Standardized effect sizes --- Cohen's \(d\), correlation coefficients, +standardized regression coefficients --- are appealing because they +allow comparison across studies and scales, are required by many +journals, and serve as the primary currency of meta-analysis. However, +they have well-documented problems that are especially relevant to +equivalence testing. + +SMDs are sensitive to the sample variance. The ``same'' real-world +effect produces different \(d\) values across populations and study +designs. The ubiquitously reported Cohen's \(d\) conflates the magnitude +of the mean difference with the precision of measurement, which means +that a narrow equivalence bound on \(d\) may correspond to a very +different raw-scale bound depending on the variability of the sample +\citep{Caldwell2020, baguley2009}. This makes it unclear what, +substantively, is being declared ``equivalent''. Are we claiming the +means are close, or that the means are close relative to the variance? +The choice of denominator (pooled SD, control SD, within-subject SD) +further complicates matters. + +Correlations have analogous issues. \citet{tukey1969} noted that +correlations are influenced by the range of both variables, so the +``same'' bivariate relationship produces different coefficients +depending on sample selection. A correlation of 0.3 in a +restricted-range sample may correspond to a much larger association in +the full population. Standardized regression coefficients share these +vulnerabilities. These depend on the variances of both the predictor and +outcome, which makes them unstable across samples and difficult to +interpret substantively \citep{greenland1991}. + +The implication for equivalence testing is straightforward. When the +measurement scale is meaningful, researchers should generally prefer +\emph{unstandardized} (raw-scale) equivalence bounds. When standardized +bounds are used, the choice should be justified with reference to the +specific population and measurement context, not borrowed from generic +benchmarks. + +With these caveats in mind, the following subsections describe the tools +TOSTER provides for computing and testing standardized effect sizes +assuming they are appropriate. + +\subsection{Standardized Mean Difference +Functions}\label{standardized-mean-difference-functions} + +The \texttt{smd\_calc} function computes an SMD --- Cohen's \(d\), +Hedges' \(g\) (bias-corrected), or Glass's \(\Delta\) --- with +confidence intervals and \emph{optional} hypothesis testing (utilizing a +z-test: \(z = (d - \delta_0)/SE_d\), where \(d\) is the sample SMD +estimate, \(\delta_0\) is the null value being tested, and \(SE_d\) is +its standard error.). It supports one-sample, paired, and two-sample +designs, and can return either an \texttt{htest} object or a data frame. +The SMD is already reported in \texttt{t\_TOST} output, but +\texttt{smd\_calc} allows standalone computation and supports +equivalence testing directly on the effect size. This may be useful as a +complementary function when using \texttt{simple\_htest} as the primary +statistical testing function. + +When estimation rather than testing is the goal, \texttt{smd\_calc} can +be called with \texttt{alternative\ =\ "none"} (the default), which +returns only the point estimate and confidence interval without +performing a hypothesis test. This is the recommended usage when the +primary objective is to report the magnitude of the effect. \begin{Shaded} \begin{Highlighting}[] -\NormalTok{res\_tsum }\OtherTok{=} \FunctionTok{tsum\_TOST}\NormalTok{(} - \AttributeTok{m1 =} \FunctionTok{mean}\NormalTok{(bugs}\SpecialCharTok{$}\NormalTok{LDHF, }\AttributeTok{na.rm=}\ConstantTok{TRUE}\NormalTok{), }\AttributeTok{sd1 =} \FunctionTok{sd}\NormalTok{(bugs}\SpecialCharTok{$}\NormalTok{LDHF, }\AttributeTok{na.rm=}\ConstantTok{TRUE}\NormalTok{),} - \AttributeTok{n1 =} \FunctionTok{length}\NormalTok{(}\FunctionTok{na.omit}\NormalTok{(bugs}\SpecialCharTok{$}\NormalTok{LDHF)),} - \AttributeTok{hypothesis =} \StringTok{"EQU"}\NormalTok{, }\AttributeTok{smd\_ci =} \StringTok{"t"}\NormalTok{, }\AttributeTok{eqb =} \FunctionTok{c}\NormalTok{(}\FloatTok{5.5}\NormalTok{, }\FloatTok{8.5}\NormalTok{)} +\FunctionTok{smd\_calc}\NormalTok{(} + \AttributeTok{formula =}\NormalTok{ extra }\SpecialCharTok{\textasciitilde{}}\NormalTok{ group,} + \AttributeTok{data =}\NormalTok{ sleep,} + \AttributeTok{paired =} \ConstantTok{TRUE}\NormalTok{,} + \CommentTok{\# apply Hedges\textquotesingle{} correction} + \AttributeTok{bias\_correction =} \ConstantTok{TRUE}\NormalTok{,} + \CommentTok{\# apply the repeated measures correction} + \AttributeTok{rm\_correction =} \ConstantTok{TRUE}\NormalTok{,} + \CommentTok{\# return an htest object rather than a data frame} + \AttributeTok{output =} \StringTok{"htest"} \NormalTok{)} - -\NormalTok{res\_tsum} \end{Highlighting} \end{Shaded} \begin{verbatim} ## -## One-sample t-Test +## Paired Sample Standardized Mean Difference (SMD; Hedges's +## g[rm]=('1'-'2')/SD_rm) ## -## The equivalence test was significant, t(90) = -4.244, p = 2.66e-05 -## The null hypothesis test was significant, t(90) = 27.942, p = 3.91e-46 -## NHST: reject null significance hypothesis that the effect is equal to zero -## TOST: reject null equivalence hypothesis -## -## TOST Results -## t df p.value -## t-test 27.942 90 < 0.001 -## TOST Lower 7.116 90 < 0.001 -## TOST Upper -4.244 90 < 0.001 +## data: extra by group ## -## Effect Sizes -## Estimate SE C.I. Conf. Level -## Raw 7.379 0.2641 [6.9402, 7.818] 0.9 -## Hedges's g 2.905 0.2395 [2.4289, 3.3804] 0.9 -## Note: SMD confidence intervals are an approximation. See vignette("SMD_calcs"). +## alternative hypothesis: none +## 95 percent confidence interval: +## -1.39802439 -0.07479266 +## sample estimates: +## SMD (g[rm]) +## -0.7513666 \end{verbatim} -\newpage +When hypothesis testing on the SMD is desired, \texttt{smd\_calc} +supports equivalence and minimal-effect alternatives directly: -\hypertarget{robust-methods-for-equivalence-testing}{% -\section{Robust Methods for Equivalence -Testing}\label{robust-methods-for-equivalence-testing}} - -In some cases, the use of t-test may be less than ideal. Any serious -violation to the assumptions of a t-test (e.g., normality or -homoscedasticity) could greatly inflate the type 1 error rate of TOST. -Therefore, it may be useful to explore alternatives to the t-test for -TOST that either do not have those assumptions or are robust to -violating those assumptions. - -The TOSTER package currently provides 4 robust alternatives to the -t-test for TOST. First, there is the \texttt{wilcox\_TOST} function -which uses the Wilcoxon-Mann-Whitney (WMW) type tests (i.e., -\texttt{wilcox.test}) to perform TOST as a test of symmetry. Second, -there is the \texttt{boot\_t\_TOST} function which uses the bootstrap -method outlined by \citet{efron93}. Third, there is the -\texttt{log\_TOST} function which performs log-transformed t-tests, -which is a parametric approach commonly used in pharmaceutical -bioequivalence studies on ratio data \citep{he2022}. Fourth, there is -the \texttt{boot\_log\_TOST} function which uses the same bootstrap -method outlined by \citet{efron93} but on the log-transformed data, -which is more robust than parametric log t-test \citep{he2022}. - -In the following sections, I will briefly outline the available robust -TOST functions within the TOSTER package. - -\hypertarget{tests-of-symmetry-rank-based-tests}{% -\subsection{Tests of Symmetry (rank based -tests)}\label{tests-of-symmetry-rank-based-tests}} - -The WMW group of tests (e.g., Mann-Whitney U-test) provide a -non-parametric test of differences between groups, or within samples, -based on \emph{ranks}. This provides a test of location shift, which is -a fancy way of saying differences in the center of the distribution -(i.e., in parametric tests the location is mean). Within the TOST -framework, there are two separate tests of directional location shift to -determine if the location shift is within (equivalence) or outside -(minimal effect) the equivalence bounds. Many researchers mistakenly -think these are tests of medians, but this is not the case (See -\citet{median_test} for details). Using a WMW-based TOST is useful for -testing whether the differences between groups/conditions is symmetric -around the equivalence bounds\footnote{Care should be taken when - considering paired samples; a test on the rank transformed data - \citep{kornbrot1990rank} or another robust test may be more prudent.}. -For equivalence testing, the TOST would be testing whether there is -asymmetry towards no effect with a null hypothesis of symmetry at the -equivalence bound. - -In the TOSTER package, we accomplish this ``test of symmetry'' with the -\texttt{wilcox\_TOST} function. This function operates in an extremely -similar implementation to the \texttt{t\_TOST} function. The exact -calculations utilized in this function can be explored via the -documentation of the \texttt{wilcox.test} function. A standardized mean -difference (SMD) is \emph{not} calculated in this function since this -would be an inappropriate measure of effect size alongside the -non-parametric test statistics. Instead, a standardized effect size -(SES) is calculated for \emph{all} types of comparisons (e.g., two -sample, one sample, and paired samples). The function can produce a -rank-biserial correlation \citep{Kerby_2014}, a WMW Odds -\citep{wmwodds}, or a ``common language effect size'' \citep{Kerby_2014} -(Also known as the non-parametric probability of superiority, or -concordance probability).\footnote{There is no plotting capability at - this time for the output of this function.} +\begin{Shaded} +\begin{Highlighting}[] +\FunctionTok{smd\_calc}\NormalTok{(} + \AttributeTok{formula =}\NormalTok{ extra }\SpecialCharTok{\textasciitilde{}}\NormalTok{ group,} + \AttributeTok{data =}\NormalTok{ sleep,} + \AttributeTok{paired =} \ConstantTok{TRUE}\NormalTok{,} + \CommentTok{\# apply Hedges\textquotesingle{} correction} + \AttributeTok{bias\_correction =} \ConstantTok{TRUE}\NormalTok{,} + \CommentTok{\# apply the repeated measures correction} + \AttributeTok{rm\_correction =} \ConstantTok{TRUE}\NormalTok{,} + \CommentTok{\# equivalence hypothesis} + \AttributeTok{alternative =} \StringTok{"equivalence"}\NormalTok{,} + \CommentTok{\# equivalence bounds on the SMD} + \AttributeTok{null.value =} \FunctionTok{c}\NormalTok{(}\SpecialCharTok{{-}}\FloatTok{0.5}\NormalTok{, }\FloatTok{0.5}\NormalTok{),} + \CommentTok{\# return an htest object rather than a data frame} + \AttributeTok{output =} \StringTok{"htest"} +\NormalTok{)} +\end{Highlighting} +\end{Shaded} -\newpage +\begin{verbatim} +## +## Paired Sample Standardized Mean Difference (SMD; Hedges's +## g[rm]=('1'-'2')/SD_rm) +## +## data: extra by group +## z = -0.78495, p-value = 0.7838 +## alternative hypothesis: equivalence +## null values: +## lower bound upper bound +## -0.5 0.5 +## 90 percent confidence interval: +## -1.2894564 -0.1789204 +## sample estimates: +## SMD (g[rm]) +## -0.7513666 +\end{verbatim} -As an example, we can use the sleep data to make a non-parametric -comparison of equivalence. +However, the parametric z-test used by \texttt{smd\_calc} relies on +distributional assumptions about the sampling distribution of the SMD +that may not hold in practice. When a hypothesis test on the SMD is the +goal, bootstrapping via \texttt{boot\_smd\_calc} is recommended because +it provides more robust confidence intervals and p-values. \begin{Shaded} \begin{Highlighting}[] -\NormalTok{test1 }\OtherTok{=} \FunctionTok{wilcox\_TOST}\NormalTok{(}\AttributeTok{formula =}\NormalTok{ extra }\SpecialCharTok{\textasciitilde{}}\NormalTok{ group,} - \AttributeTok{data =}\NormalTok{ sleep,} - \AttributeTok{paired =} \ConstantTok{FALSE}\NormalTok{,} - \AttributeTok{eqb =}\NormalTok{ .}\DecValTok{5}\NormalTok{)} -\FunctionTok{print}\NormalTok{(test1)} +\FunctionTok{boot\_smd\_calc}\NormalTok{(} + \AttributeTok{formula =}\NormalTok{ extra }\SpecialCharTok{\textasciitilde{}}\NormalTok{ group,} + \AttributeTok{data =}\NormalTok{ sleep,} + \AttributeTok{paired =} \ConstantTok{TRUE}\NormalTok{,} + \CommentTok{\# apply Hedges\textquotesingle{} correction} + \AttributeTok{bias\_correction =} \ConstantTok{TRUE}\NormalTok{,} + \CommentTok{\# apply the repeated measures correction} + \AttributeTok{rm\_correction =} \ConstantTok{TRUE}\NormalTok{,} + \CommentTok{\# equivalence hypothesis} + \AttributeTok{alternative =} \StringTok{"equivalence"}\NormalTok{,} + \CommentTok{\# equivalence bounds on the SMD} + \AttributeTok{null.value =} \FunctionTok{c}\NormalTok{(}\SpecialCharTok{{-}}\FloatTok{0.5}\NormalTok{, }\FloatTok{0.5}\NormalTok{)} +\NormalTok{)} \end{Highlighting} \end{Shaded} \begin{verbatim} ## -## Wilcoxon rank sum test with continuity correction +## Paired Sample bootstrapped Standardized Mean Difference (SMD; Hedges's +## g[rm]=('1'-'2')/SD_rm) ## -## The equivalence test was non-significant W = 20.000, p = 8.94e-01 -## The null hypothesis test was non-significant W = 25.500, p = 6.93e-02 -## NHST: don't reject null significance hypothesis that the effect is equal to zero -## TOST: don't reject null equivalence hypothesis +## data: extra by group +## z-observed = -0.78495, p-value = 0.9005 +## alternative hypothesis: equivalence +## null values: +## lower bound upper bound +## -0.5 0.5 +## 90 percent confidence interval: +## -1.3215945 -0.4499223 +## sample estimates: +## SMD (g[rm]) +## -0.7513666 +\end{verbatim} + +\subsubsection{Checking Assumptions}\label{checking-assumptions-1} + +The SMD functions inherit the assumptions of the underlying t-test and +therefore the visual diagnostics from the t-test discussion above apply +directly. However, two considerations are specific to standardized +effect sizes. First, outliers and skew affect both the numerator (mean +difference) and the denominator (standard deviation) of the SMD, which +can amplify their influence on the estimate; the \texttt{tr} +trimmed-means argument available in the \texttt{boot\_smd\_calc} +function is particularly worth considering when the raw data show +extreme values. Second, the asymptotic z-test in \texttt{smd\_calc} +relies on an approximation to the sampling distribution of the SMD that +can be very inaccurate in small samples, which is the primary motivation +for preferring \texttt{boot\_smd\_calc} when hypothesis testing is the +goal. + +\subsection{Equivalence Tests for +Correlations}\label{equivalence-tests-for-correlations} + +Researchers sometimes need to test that a correlation is practically +zero. The \texttt{z\_cor\_test} function provides a asymptotic approach +using the Fisher z-transformation. However, this is only an approximate +method and is generally not recommended as the primary inferential tool +for equivalence testing on correlations. + +\begin{Shaded} +\begin{Highlighting}[] +\FunctionTok{z\_cor\_test}\NormalTok{(} + \AttributeTok{x =}\NormalTok{ bugs}\SpecialCharTok{$}\NormalTok{LDLF,} + \AttributeTok{y =}\NormalTok{ bugs}\SpecialCharTok{$}\NormalTok{LDHF,} + \CommentTok{\# type of correlation coefficient} + \AttributeTok{method =} \StringTok{"pearson"}\NormalTok{,} + \CommentTok{\# two{-}sided nil hypothesis test} + \AttributeTok{alternative =} \StringTok{"t"} +\NormalTok{)} +\end{Highlighting} +\end{Shaded} + +\begin{verbatim} ## -## TOST Results -## Test Statistic p.value -## NHST 25.5 0.069 -## TOST Lower 34.0 0.894 -## TOST Upper 20.0 0.013 +## Pearson's product-moment correlation with approximate SE ## -## Effect Sizes -## Estimate C.I. Conf. Level -## Median of Differences -1.346 [-3.4, -0.1] 0.9 -## Rank-Biserial Correlation -0.490 [-0.7493, -0.1005] 0.9 +## data: bugs$LDLF and bugs$LDHF +## z = 6.169, N = 91, p-value = 6.871e-10 +## alternative hypothesis: true correlation is not equal to 0 +## 95 percent confidence interval: +## 0.4208204 0.6996192 +## sample estimates: +## r +## 0.5767783 \end{verbatim} -Based on these results, we would have conclude there is no significant -difference but not equivalent differences either (i.e., inconclusive -result). +Because the z-test relies on distributional approximations that can be +inaccurate --- particularly with small samples --- bootstrapping via +\texttt{boot\_cor\_test} is recommended for more robust inference. The +\texttt{boot\_cor\_test} function supports all three major correlation +methods (Pearson, Kendall, and Spearman) as well as the Winsorized +\citep{Wilcox_1993} and percentage bend \citep{Wilcox_1994} correlation +coefficients as robust alternatives, and returns standard \texttt{htest} +objects that integrate with the helper functions described above. -\newpage +\begin{Shaded} +\begin{Highlighting}[] +\NormalTok{res\_boot\_cor }\OtherTok{=} \FunctionTok{boot\_cor\_test}\NormalTok{(} + \AttributeTok{x =}\NormalTok{ bugs}\SpecialCharTok{$}\NormalTok{LDLF,} + \AttributeTok{y =}\NormalTok{ bugs}\SpecialCharTok{$}\NormalTok{LDHF,} + \CommentTok{\# type of correlation coefficient} + \AttributeTok{method =} \StringTok{"pearson"}\NormalTok{,} + \CommentTok{\# equivalence hypothesis} + \AttributeTok{alternative =} \StringTok{"equivalence"}\NormalTok{,} + \CommentTok{\# equivalence bounds of {-}0.4 and 0.4} + \AttributeTok{null =} \FloatTok{0.4} +\NormalTok{)} -\hypertarget{bootstrap-tost}{% -\subsection{Bootstrap TOST}\label{bootstrap-tost}} +\FunctionTok{print}\NormalTok{(res\_boot\_cor)} +\end{Highlighting} +\end{Shaded} -The bootstrap refers to resampling with replacement and can be used for -statistical estimation and inference. Bootstrapping techniques are very -useful because they are considered somewhat robust to the violations of -assumptions for a simple t-test and provide better estimations of SMDs -\citep{Kirby2013}. Therefore, I added a bootstrapping function, -\texttt{boot\_t\_TOST}, to the package to provide another robust -alternative to the \texttt{t\_TOST} function. +\begin{verbatim} +## +## Bootstrapped Pearson's product-moment correlation (BCa) +## +## data: bugs$LDLF and bugs$LDHF +## N = 91, p-value = 0.9809 +## alternative hypothesis: equivalence +## null values: +## correlation correlation +## 0.4 -0.4 +## 90 percent confidence interval: +## 0.4410134 0.6891551 +## sample estimates: +## r +## 0.5767783 +\end{verbatim} -In this function we provide a percentile bootstrap solution outlined by -\citet{efron93} (see chapter 16, page 220). The bootstrapped p-values -are derived from the ``studentized'' version of a test of mean -differences \citep{efron93}. Overall, the results should be similar to -the results of \texttt{t\_TOST}. \textbf{However}, for paired samples, -the Cohen's d(rm) effect size \emph{cannot} be calculated by this -function. +\begin{Shaded} +\begin{Highlighting}[] +\FunctionTok{cat}\NormalTok{(}\FunctionTok{describe\_htest}\NormalTok{(res\_boot\_cor))} +\end{Highlighting} +\end{Shaded} -\hypertarget{two-sample-algorithm}{% -\subsubsection{Two Sample Algorithm}\label{two-sample-algorithm}} +The Bootstrapped Pearson's product-moment correlation (BCa) is not +statistically significant (p = 0.981, r = 0.577, 90\% C.I.{[}0.441, +0.689{]}) at a 0.05 alpha-level. The null hypothesis cannot be rejected. +At the desired error rate, it cannot be stated that the true correlation +is between 0.4 and -0.4. + +If only summary statistics are available, an approximate method is +provided through \texttt{corsum\_test}, which uses the Fisher +z-transformation to compute confidence intervals and p-values. + +\subsubsection{Checking Assumptions}\label{checking-assumptions-2} + +Correlation-based inference in \texttt{z\_cor\_test} and +\texttt{boot\_cor\_test} assumes independent paired observations and, +for Pearson's coefficient, a roughly linear relationship between +variables with approximately symmetric marginal distributions; Spearman +and Kendall relax the linearity requirement to monotonicity, making them +appropriate when the relationship is non-linear but directionally +consistent. The bootstrap version in \texttt{boot\_cor\_test} further +relaxes distributional assumptions about the marginals but remains +sensitive to observations that exert disproportionate influence on the +estimate. Visual diagnostics are the primary tools: scatterplots with a +loess smoother to assess linearity or monotonicity, marginal density +plots or QQ plots to check distributional shape, and +jackknife-after-bootstrap plots to identify individual observations +driving bootstrap variability. A worked diagnostic workflow is provided +in the \href{https://doi.org/10.5281/zenodo.22776189}{online +supplement}. + +\subsection{Comparing Standardized Effect Sizes Between +Studies}\label{comparing-standardized-effect-sizes-between-studies} + +When evaluating whether a replication study produced results consistent +with the original, researchers need a way to formally compare effect +sizes. The \texttt{compare\_smd} function tests whether two SMD +estimates (e.g., original study compared to replication study) differ +more than would be expected by sampling variability alone. + +Consider an original study reporting Cohen's \(d_z\) = 0.95 with 25 +participants and a replication with \(d\) = 0.23 and 50 participants. A +researcher might wonder if these these estimates compatible, and it +would be prudent to formally test this. Let's say these researchers +determine that equivalence between studies would be SMDs within 0.25 of +each other. We can then perform a significance and equivalence test +between the two original and replication study estimates. -The steps by which the bootstrapping occurs are fairly simple. +\begin{Shaded} +\begin{Highlighting}[] +\CommentTok{\# Significance test} +\FunctionTok{compare\_smd}\NormalTok{(} + \CommentTok{\# SMD and sample size of the original study} + \AttributeTok{smd1 =} \FloatTok{0.95}\NormalTok{,} + \AttributeTok{n1 =} \DecValTok{25}\NormalTok{,} + \CommentTok{\# SMD and sample size of the replication} + \AttributeTok{smd2 =} \FloatTok{0.23}\NormalTok{,} + \AttributeTok{n2 =} \DecValTok{50}\NormalTok{,} + \CommentTok{\# both estimates come from paired designs} + \AttributeTok{paired =} \ConstantTok{TRUE}\NormalTok{,} + \CommentTok{\# nil hypothesis test} + \AttributeTok{null =} \DecValTok{0}\NormalTok{,} + \CommentTok{\# significance hypothesis} + \AttributeTok{alternative =} \StringTok{"two.sided"} +\NormalTok{)} +\end{Highlighting} +\end{Shaded} -\begin{enumerate} -\def\labelenumi{\arabic{enumi}.} -\item - Form B bootstrap data sets from x* and y* wherein x* is sampled with - replacement from \(\tilde x_1,\tilde x_2, ... \tilde x_n\) and y* is - sampled with replacement from - \(\tilde y_1,\tilde y_2, ... \tilde y_n\) -\item - t is then evaluated on each sample, but the mean of each sample (y or - x) and the overall average (z) are subtracted from each (i.e., null - distribution is formed) -\end{enumerate} +\begin{verbatim} +## +## Difference in Cohen's dz (paired) +## +## data: Summary Statistics +## z = 2.5685, p-value = 0.01021 +## alternative hypothesis: true difference in SMDs is not equal to 0 +## sample estimates: +## difference in SMDs +## 0.72 +\end{verbatim} -\[ -t(z^{*b}) = \frac {(\bar x^*-\bar x - \bar z) - (\bar y^*-\bar y - \bar z)}{\sqrt {sd_y^*/n_y + sd_x^*/n_x}} -\] +\begin{Shaded} +\begin{Highlighting}[] +\CommentTok{\# Equivalence test} +\FunctionTok{compare\_smd}\NormalTok{(} + \CommentTok{\# SMD and sample size of the original study} + \AttributeTok{smd1 =} \FloatTok{0.95}\NormalTok{,} + \AttributeTok{n1 =} \DecValTok{25}\NormalTok{,} + \CommentTok{\# SMD and sample size of the replication} + \AttributeTok{smd2 =} \FloatTok{0.23}\NormalTok{,} + \AttributeTok{n2 =} \DecValTok{50}\NormalTok{,} + \CommentTok{\# both estimates come from paired designs} + \AttributeTok{paired =} \ConstantTok{TRUE}\NormalTok{,} + \CommentTok{\# equivalence bounds on the difference in SMDs} + \AttributeTok{null =}\NormalTok{ .}\DecValTok{25}\NormalTok{,} + \CommentTok{\# equivalence hypothesis} + \AttributeTok{alternative =} \StringTok{"equivalence"} +\NormalTok{)} +\end{Highlighting} +\end{Shaded} -\begin{enumerate} -\def\labelenumi{\arabic{enumi}.} -\setcounter{enumi}{2} -\tightlist -\item - An approximate p-value can then be calculated as the number of - bootstrapped results greater than the observed t-statistic from the - sample. -\end{enumerate} +\begin{verbatim} +## +## Difference in Cohen's dz (paired) +## +## data: Summary Statistics +## z = 1.6767, p-value = 0.9532 +## alternative hypothesis: equivalence +## null values: +## difference in SMDs difference in SMDs +## 0.25 -0.25 +## sample estimates: +## difference in SMDs +## 0.72 +\end{verbatim} -\[ -p_{boot} = \frac {\#t(z^{*b}) \ge t_{sample}}{B} -\] +Based on these results, we would reject the null significance hypothesis +(conclude the SMDs differ) but fail to reject the equivalence null +hypothesis (we cannot conclude the SMDs are practically equivalent). +When raw data are available, \texttt{boot\_compare\_smd} provides a +bootstrap alternative (see the +\href{https://aaroncaldwell.us/TOSTERpkg/articles/SMD_calcs.html\#comparing-smds}{package +vignettes} for details). + +For comparing correlation coefficients between independent studies, the +\texttt{compare\_cor} function provides an analogous test. It uses +either the Fisher z-transformation (default) or the Kraatz +(Anderson-Hauck) method to compare two correlation coefficients. + +\begin{Shaded} +\begin{Highlighting}[] +\FunctionTok{compare\_cor}\NormalTok{(} + \CommentTok{\# correlation and degrees of freedom of the first study} + \AttributeTok{r1 =} \FloatTok{0.45}\NormalTok{,} + \AttributeTok{df1 =} \DecValTok{48}\NormalTok{,} + \CommentTok{\# correlation and degrees of freedom of the second study} + \AttributeTok{r2 =} \FloatTok{0.25}\NormalTok{,} + \AttributeTok{df2 =} \DecValTok{78}\NormalTok{,} + \CommentTok{\# equivalence hypothesis} + \AttributeTok{alternative =} \StringTok{"equivalence"}\NormalTok{,} + \CommentTok{\# equivalence bounds on the difference in correlations} + \AttributeTok{null =} \FloatTok{0.25} +\NormalTok{)} +\end{Highlighting} +\end{Shaded} + +\begin{verbatim} +## +## Difference between two independent correlations (Fisher's z transform) +## +## data: Summary Statistics +## z = -0.14114, p-value = 0.4439 +## alternative hypothesis: equivalence +## null values: +## difference between correlations difference between correlations +## 0.25 -0.25 +## sample estimates: +## difference between correlations +## 0.2 +\end{verbatim} -The same process is completed for the one sample case but with the one -sample solution for the equation outlined by \(t(z^{*b})\). The paired -sample case in this bootstrap procedure is equivalent to the one sample -solution because the test is based on the difference scores. +When raw data are available for both studies, +\texttt{boot\_compare\_cor} provides a bootstrap alternative that avoids +the distributional approximations underlying the Fisher z and Kraatz +methods. + +The comparison functions \texttt{compare\_smd} and \texttt{compare\_cor} +inherit the assumptions of the underlying effect size estimates they +combine. Because both studies contribute to the comparison, violations +in either study propagate into the test. When raw data are available, +the bootstrap alternatives (\texttt{boot\_compare\_smd} and +\texttt{boot\_compare\_cor}) are preferred because they avoid the Fisher +z and related asymptotic approximations, which can be inaccurate +particularly when effect sizes are large or sample sizes are modest. +When only summary statistics are available, readers should report the +diagnostic context of the original and replication studies where +possible. \newpage -\hypertarget{example-of-bootsrapping}{% -\subsubsection{Example of Bootsrapping}\label{example-of-bootsrapping}} +\section{Robust Methods for Equivalence +Testing}\label{robust-methods-for-equivalence-testing} + +When t-test assumptions (normality, homoscedasticity) are seriously +violated, or when the mean difference is a poor summary of the effect +(e.g., with heavy skew or ordinal psychometric scales) alternative +approaches are worth considering. I have organized TOSTER into three +robust alternative categories: rank-based tests, resampling methods, and +log-transformed methods. + +\subsection{Rank-Based Tests}\label{rank-based-tests} + +Rank-based tests operate on the ranks of the data rather than the raw +values, which is why they are typically described as non-parametric. It +is worth emphasizing that this label applies to the test, not the data. +The underlying observations may still come from any distribution, and +rank-based methods should not be treated as automatic substitutes for a +t-test when normality is in doubt. These tests are not tests of means or +medians \citep{median_test, karch2021}; they target different estimands +(i.e., the quantity a study is attempting to estimate), and the choice +between a rank-based test and a t-test should be driven by which +estimand is of scientific interest. + +\subsubsection{Wilcoxon-Mann-Whitney +Tests}\label{wilcoxon-mann-whitney-tests} + +The Wilcoxon-Mann-Whitney (WMW) family is the rank-sum test for two +independent groups and the signed-rank test for paired and one-sample +designs. It provides non-parametric tests based on ranks. Within the +TOST framework, TOSTER performs two directional tests to determine +whether the effect lies within (equivalence) or outside (minimal effect) +the equivalence bounds. What that effect is depends on an assumption +that researchers often do not realize they are making, and there are +persistent misconceptions worth addressing directly. The three +subsections below separate what the WMW tests evaluate with no +additional assumptions, what they evaluate under a location-shift +assumption, and what \texttt{wilcox\_TOST} actually places bounds on. + +\paragraph{Without a location-shift assumption: a test of stochastic +equality}\label{without-a-location-shift-assumption-a-test-of-stochastic-equality} + +Many researchers believe the WMW tests are tests of medians. They are +not. With no assumption beyond independence and exchangeability, the WMW +test evaluates stochastic equality which has the null hypothesis that a +randomly drawn observation from one group is equally likely to exceed, +or to be exceeded by, a randomly drawn observation from the other, + +\[ +H_0: \space P(X > Y) + \frac{1}{2} \cdot P(X = Y) = 0.5 +\] -We can use the sleep data to see an example of the bootstrapped results. -If you plot the bootstrap samples, it will show how the resampling via -bootstrapping indicates the instability of Hedges' d(z). Just looking at -the printed results you will notice some differences between confidence -intervals from the bootstrapped result and the t-test. +As \citet{Fay_Malinovsky_2018} demonstrate, the effect size accompanying +the test is therefore most naturally expressed as stochastic superiority +(or dominance) rather than as a difference in central tendency. Nothing +about this null hypothesis refers to a mean or a median. + +\paragraph{Under a location-shift assumption: a test of central +tendency}\label{under-a-location-shift-assumption-a-test-of-central-tendency} + +The location-shift assumption holds that the two distributions are +identical in every respect except location. Under this assumption, and +only under it, stochastic equality and equality of medians coincide, and +the Hodges-Lehmann estimator can be read as an estimate of the median +difference. This is the interpretation most readers have in mind when +they reach for a WMW test. + +When the assumption fails, the two interpretations can come apart +dramatically. \citet{median_test} demonstrate striking counterexamples: +groups can have equal medians yet produce a significant WMW test, very +different medians yet a non-significant WMW test, or even significance +in the direction opposite the median comparison. Critically, nothing in +the test output signals that the assumption has failed, and the p-value +and the Hodges-Lehmann estimate are reported the same way regardless. +The diagnostic described below is therefore not optional if a +central-tendency interpretation is intended. + +\paragraph{\texorpdfstring{What \texttt{wilcox\_TOST} places bounds +on}{What wilcox\_TOST places bounds on}}\label{what-wilcox_tost-places-bounds-on} + +In TOSTER, \texttt{wilcox\_TOST} applies the equivalence bounds to the +pseudo-median, which corresponds to the mean or median difference only +under the location-shift assumption. This has a direct practical +consequence for setting bounds: if you are not prepared to assert +location shift, the pseudo-median is your estimand, and the smallest +effect size of interest must be justified on that scale rather than +imported from reasoning about mean differences. + +If the hypothesis genuinely concerns means, \texttt{perm\_t\_test} or +\texttt{boot\_t\_test} are the more appropriate tools. If it concerns +stochastic superiority, \texttt{brunner\_munzel} provides a clearer +framework and a directly interpretable effect size. \begin{Shaded} \begin{Highlighting}[] -\FunctionTok{set.seed}\NormalTok{(}\DecValTok{891111}\NormalTok{)} -\NormalTok{test1 }\OtherTok{=} \FunctionTok{boot\_t\_TOST}\NormalTok{(}\AttributeTok{formula =}\NormalTok{ extra }\SpecialCharTok{\textasciitilde{}}\NormalTok{ group,} - \AttributeTok{data =}\NormalTok{ sleep,} - \AttributeTok{paired =} \ConstantTok{TRUE}\NormalTok{,} - \AttributeTok{eqb =}\NormalTok{ .}\DecValTok{5}\NormalTok{,} - \AttributeTok{R =} \DecValTok{999}\NormalTok{)} - - +\NormalTok{test1 }\OtherTok{=} \FunctionTok{wilcox\_TOST}\NormalTok{(} + \AttributeTok{formula =}\NormalTok{ extra }\SpecialCharTok{\textasciitilde{}}\NormalTok{ group,} + \AttributeTok{data =}\NormalTok{ sleep,} + \AttributeTok{paired =} \ConstantTok{TRUE}\NormalTok{,} + \CommentTok{\# equivalence bounds on the pseudo{-}median} + \AttributeTok{eqb =}\NormalTok{ .}\DecValTok{5} +\NormalTok{)} \FunctionTok{print}\NormalTok{(test1)} \end{Highlighting} \end{Shaded} \begin{verbatim} ## -## Bootstrapped Paired t-test +## Wilcoxon signed rank test with continuity correction ## -## The equivalence test was non-significant, t(9) = -2.777, p = 1e+00 -## The null hypothesis test was significant, t(9) = -4.062, p = 0e+00 +## The equivalence test was non-significant V = 0.000, p = 9.96e-01 +## The null hypothesis test was significant V = 0.000, p = 9.09e-03 ## NHST: reject null significance hypothesis that the effect is equal to zero ## TOST: don't reject null equivalence hypothesis ## ## TOST Results -## t df p.value -## t-test -4.062 9 < 0.001 -## TOST Lower -2.777 9 1 -## TOST Upper -5.348 9 < 0.001 +## Test Statistic p.value +## NHST 0 0.009 +## TOST Lower 2 0.996 +## TOST Upper 0 0.003 ## ## Effect Sizes -## Estimate SE C.I. Conf. Level -## Raw -1.580 0.3699 [-2.26, -1.038] 0.9 -## Hedges's g(z) -1.174 0.6491 [-2.7507, -0.9285] 0.9 -## Note: percentile bootstrap method utilized. +## Estimate C.I. Conf. Level +## Median of Differences -1.4 [-2.7, -1.15] 0.9 +## Rank-Biserial Correlation -1.0 [-1, -0.4492] 0.9 \end{verbatim} +Based on these results, we would conclude there is a significant +difference and the results are also not equivalent. But again, the +estimate we are testing is the pseudo-median, not the mean or median +difference, so this conclusion may not be relevant to the research +question at hand. + +\paragraph{Checking Assumptions}\label{checking-assumptions-3} + +The WMW tests assume independent observations and exchangeability under +the null, the latter meaning that group labels carry no information +about outcomes if there is no effect. Those two assumptions are all that +the stochastic-equality interpretation requires. The two assumptions +below determine whether the stronger central-tendency interpretation is +available, and each has a straightforward visual diagnostic. + +The location-shift assumption is that the two group distributions differ +only in location, not in shape or spread. This is what allows WMW +results to be interpreted as a test of the median difference via the +Hodges-Lehmann estimator. It is best diagnosed by overlaying the +empirical cumulative distribution functions (ECDFs) of the two groups. +Under location shift, the curves are horizontal translations of one +another, so the horizontal distance between them is constant across the +range of the data (Figure \ref{fig:ecdfshift}A). Departures appear as a +gap that widens, narrows, or reverses sign, and in the clearest cases as +curves that cross (Figure \ref{fig:ecdfshift}B). In panel B, the two +groups there differ in both location and spread, so there is no single +number that describes ``the shift,'' and the Hodges-Lehmann estimate +that \texttt{wilcox\_TOST} reports does not correspond to a difference +in medians. + +For the signed-rank variants used by \texttt{wilcox\_TOST} and +\texttt{simple\_htest}, the difference distribution must additionally be +symmetric about the null value for the pseudo-median to coincide with +the mean or median difference. Asymmetry is readily checked with a +symmetry plot of the paired differences (Figure \ref{fig:symmplot}). As +with the location-shift case, visible departures suggest that the test's +output (i.e., the pseudo-median and associated p-value) does not map +cleanly onto a hypothesis about central tendency. + +\begin{figure} +\centering +\pandocbounded{\includegraphics[keepaspectratio,alt={Empirical cumulative distribution functions for two simulated groups, with double-headed arrows marking the horizontal distance between the curves at the 10th, 50th, and 90th percentiles. (A) The location-shift assumption holds: the distributions differ only in location, the arrows are of equal length, and the Hodges-Lehmann estimator can be read as a median difference. (B) The assumption is violated: the groups differ in spread as well as location, so the horizontal gap varies in magnitude and reverses sign across the distribution, and the curves cross. In panel B there is no single shift to estimate, and a central-tendency interpretation of the WMW test is not available.}]{Avocado_Update_files/Avocado_Update_files/figure-latex/ecdfshift-1.pdf}} +\caption{\label{fig:ecdfshift}Empirical cumulative distribution +functions for two simulated groups, with double-headed arrows marking +the horizontal distance between the curves at the 10th, 50th, and 90th +percentiles. (A) The location-shift assumption holds: the distributions +differ only in location, the arrows are of equal length, and the +Hodges-Lehmann estimator can be read as a median difference. (B) The +assumption is violated: the groups differ in spread as well as location, +so the horizontal gap varies in magnitude and reverses sign across the +distribution, and the curves cross. In panel B there is no single shift +to estimate, and a central-tendency interpretation of the WMW test is +not available.} +\end{figure} + +\begin{figure} +\centering +\pandocbounded{\includegraphics[keepaspectratio,alt={Symmetry plot of the paired differences from the sleep dataset, pairing each observation's distance above the median with the corresponding distance below. Under symmetry, points fall along the 45-degree reference line (dashed); systematic departures --- points consistently above or below the line --- indicate asymmetry. The signed-rank variant of WMW requires this symmetry for the pseudo-median to coincide with the mean or median of the differences.}]{Avocado_Update_files/Avocado_Update_files/figure-latex/symmplot-1.pdf}} +\caption{\label{fig:symmplot}Symmetry plot of the paired differences +from the sleep dataset, pairing each observation's distance above the +median with the corresponding distance below. Under symmetry, points +fall along the 45-degree reference line (dashed); systematic departures +--- points consistently above or below the line --- indicate asymmetry. +The signed-rank variant of WMW requires this symmetry for the +pseudo-median to coincide with the mean or median of the differences.} +\end{figure} + \newpage -\hypertarget{log-tost}{% -\subsection{Log TOST}\label{log-tost}} - -The natural logarithmic (log) transformation is often utilized to -stabilize the variance of a measure, and it often provides the best -approximation of the normal distribution \citep{logtest}. However, -another, less often reported, advantage of the log transformation is -that the back transformation of the differences of the log-transformed -data is a \emph{ratio} \citep{logtest}. For example, if we had a two -samples (x \& y) with an geometric mean\footnote{The mean of - log-transformed data is the \emph{geometric} not \emph{arithmetic} - mean. I highly recommend reading \citet{logtest} and - \citet{caldwell2019basic} for more details} or 7 and 10.5, x and y -respectively in the code below, we could represent the differences as -ratio of y:x where y is 1.5 times greater than x. +\subsubsection{Brunner-Munzel Test}\label{brunner-munzel-test} + +The Brunner-Munzel test \citep{brunner2000} estimates the relative +effect \(\hat{p} = P(X > Y) + 0.5 \cdot P(X = Y)\), sometimes referred +to as the probability of superiority or stochastic superiority. As +mentioned in the WMW section, this is the probability that a randomly +chosen observation from one group exceeds a randomly chosen observation +from the other, with ties split evenly. This estimand is interpretable +without distributional assumptions, unlike the WMW test which requires a +location-shift assumption to say anything about location differences. +\citet{karch2021} argues it should be preferred as the default +non-parametric procedure. Its main advantage over WMW is that the null +hypothesis of stochastic equality does not require the two distributions +to be identical (i.e., the nonparametric Behrens--Fisher problem). WMW's +Type I error rate can depart from nominal when the groups are +stochastically equal but differ in variance or shape; the +Brunner--Munzel test remains valid in that setting and provides a +directly interpretable effect size. + +Stochastic superiority tests, like the Brunner-Munzel test, may be +particularly well-suited to Likert-type scales which are ubiquitous in +psychological research. For a single ordinal item, the spacing between +response categories carries no guaranteed meaning, and a mean difference +therefore has a strained interpretation. For example, what, concretely, +does a 0.4-unit mean difference on a five-point Likert-type scale +communicate? The stochastic superiority estimand sidesteps this +interpretation difficulty. The probability that a randomly selected +participant from one group outscores a randomly selected participant +from the other is interpretable on its own terms, with no knowledge of +the scale required. We are not suggesting that using t-tests will always +mislead in these contexts but it is a concern that should not be quickly +dismissed either \citep{Liddell_Kruschke_2018}. Additionally, even if we +assume traditional parametric methods are robust to the ordinal nature +of the data, the preserved error rate is not the same as interpretive +clarity. For researchers whose primary outcomes live on ordinal scales, +the Brunner-Munzel test and its associated effect size --- as well as +ordinal models more generally \citep{Burkner_Vuorre_2019} --- may offer +a more natural and defensible default. + +The \texttt{brunner\_munzel} function supports equivalence and minimal +effect testing via \texttt{alternative}, with bounds on the probability +scale via \texttt{mu}. Results can be reported on different scales +(\texttt{"probability"}, \texttt{"difference"}, \texttt{"logodds"}, or +\texttt{"odds"}), and three test methods are available: \texttt{"t"} +(default), \texttt{"logit"} (range-preserving CIs), and \texttt{"perm"} +(studentized permutation; \citet{neubert2007}). Below, the test is +applied to the same female and male \texttt{LDHF} ratings used in the +independent-groups t-test example, which, as bounded rating-scale +responses, are a natural candidate for this estimand. \begin{Shaded} \begin{Highlighting}[] -\NormalTok{x }\OtherTok{=} \DecValTok{7}\NormalTok{; y }\OtherTok{=} \FloatTok{10.5} -\FunctionTok{log}\NormalTok{(y) }\SpecialCharTok{{-}} \FunctionTok{log}\NormalTok{(x)} +\NormalTok{bm\_test }\OtherTok{=} \FunctionTok{brunner\_munzel}\NormalTok{(} + \AttributeTok{formula =}\NormalTok{ LDHF }\SpecialCharTok{\textasciitilde{}}\NormalTok{ Gender,} + \AttributeTok{data =}\NormalTok{ bugs\_g,} + \CommentTok{\# equivalence hypothesis} + \AttributeTok{alternative =} \StringTok{"equivalence"}\NormalTok{,} + \CommentTok{\# equivalence bounds } + \CommentTok{\# on the stochastic superiority scale} + \AttributeTok{mu =} \FunctionTok{c}\NormalTok{(}\FloatTok{0.3}\NormalTok{, }\FloatTok{0.7}\NormalTok{)} +\NormalTok{)} +\FunctionTok{print}\NormalTok{(bm\_test)} \end{Highlighting} \end{Shaded} \begin{verbatim} -## [1] 0.4054651 +## +## Two-sample Brunner-Munzel test +## +## data: LDHF by Gender +## t = -1.9498, df = 71.988, p-value = 0.02755 +## alternative hypothesis: equivalence +## null values: +## lower bound upper bound +## 0.3 0.7 +## 90 percent confidence interval: +## 0.4748075 0.6823434 +## sample estimates: +## P(Female>Male) + .5*P(Female=Male) +## 0.5785755 \end{verbatim} +\paragraph{Checking Assumptions}\label{checking-assumptions-4} + +The Brunner-Munzel test has few assumption requirements. It requires +independent observations within and between groups, and (for the +t-approximation used by default) sample sizes sufficient for the +asymptotic approximation to be reasonable. Unlike proportional-odds +models, the constant-odds-ratio assumption is not required. The relative +effect estimated within the Brunner-Munzel test is defined directly from +the two marginal distributions and carries the same interpretation ----- +the probability that a random observation from one group exceeds one +from the other ----- regardless of whether the shapes of the +distributions. However, I would still recommend visual inspection of the +data and their distribution since it is useful for understanding the +data, but there is no distributional assumption that these checks are +verifying. Additionally, I would strongly recommend using the +studentized permutation variant (\texttt{method\ =\ "perm"}) with small +samples as the t-approximation method may be less trustworthy. + +\newpage + +\subsection{Resampling Methods}\label{resampling-methods} + +When the goal is to test hypotheses about means, resampling methods are +powerful tools that allow distributional assumptions to be relaxed. +TOSTER implements botha bootstrap and a permutation approach through the +\texttt{boot\_t\_test} and the \texttt{perm\_t\_test}, respectively. The +methods might slightly differ in inferential logic but both evulate the +same estimand (the difference in means) as the Student's t-test, but +with fewer distributional constraints. + +The test statistic itself is unchanged for either the bootstrap or +permutation t-test. The only thing that changes is how the null +distribution is handled. In the conventional t-test, the null +distribution of the mean difference is derived analytically under the +assumption that the data are drawn from a normal distribution, with +equal variances assumed in Student's t-test and unequal variances +accommodated in Welch's t-test. The bootstrap approximates the sampling +distribution of the same statistic by resampling from the observed data +with replacement, whereas the permutation approach constructs an exact +or near-exact null distribution by shuffling group labels (two-sample) +or flipping signs (one-sample and paired). In both cases, the researcher +continues to ask the same question about means; only the calibration of +the reference distribution differs. + +Distributional requirements are relaxed, though not eliminated, because +the reference distribution is generated from the data rather than +assumed. The bootstrap relies on asymptotic arguments and assumes that +the empirical distribution is a reasonable stand-in for the population +distribution. It performs well with moderate-to-large samples and skewed +or heavy-tailed data, but can struggle with very small samples or +extreme outliers. The permutation approach is exact under the null +hypothesis of exchangeability, meaning group labels carry no information +about outcomes. In its basic form this exactness requires identical +distributions under the null, which implicitly assumes equal variances. +The studentized permutation test \citep{janssen1997, chung2013} +addresses this limitation by permuting a scale-invariant statistic +(essentially the Welch t-statistic), yielding asymptotically valid +inference even under heteroscedasticity. +\citet{Arboretti_Pesarin_Salmaso_2020} extended this logic to the +equivalence testing setting, showing that the studentized permutation of +TOST maintains nominal Type I error rates when variances differ across +groups. In short, these methods are assumption-lighter rather than +assumption-free. I would strongly recommend that users still consider +whether these assumptions are reasonable for their design. + +Also, as a quick word of caution, a common reflex when normality seems +implausible is to switch to the WMW or other rank-based tests. However, +as stated throughout this manuscript, these tests answer a different +question and offer a different estimate. As discussed earlier in this +manuscript, rank-based procedures test hypotheses about stochastic +ordering or pseudo-medians rather than means. When the scientific +question is genuinely about means ----- as it often is in applied +research where effect sizes and interventions are naturally expressed on +the original scale ----- bootstrap and permutation t-tests should +generally be preferred over rank-based methods for handling such +violations of assumptions. The rank-based tests are useful, but as +answer different questions, and should never be considered as robust +substitutes for tests of means. + +The choice of the bootstrap or the permutation t-test involves weighing +the tradeoffs between tests. The studentized permutation test has the +strongest theoretical footing for two-sample mean comparisons under +heteroscedasticity, and is particularly attractive for equivalence +testing \citep{Arboretti_Pesarin_Salmaso_2020}. In general, the use of +bootstrap methods offers greater flexibility because it extends +naturally to statistics beyond the mean difference, provides readily +interpretable confidence intervals via CI inversion \citep{Thulin_2024}, +and ensures consistency between reported intervals and p-values. In +small samples, permutation approaches tend to have better finite-sample +calibration because the null distribution is constructed exactly (or +nearly so) from the data at hand, whereas the bootstrap's asymptotic +justification can produce liberal tests with very small sample sizes. +When outliers are a concern, both methods accept the \texttt{tr} +argument for trimmed means, which reduces the influence of extreme +observations. As a rough heuristic, researchers comparing two +independent, randomized groups may find the studentized permutation test +most defensible, while those wanting a single framework that yields +coherent intervals and p-values across a range of designs may prefer the +bootstrap. Both are substantial improvements over ignoring assumption +violations of the t-test, and both return standard \texttt{htest} +objects that integrate with the TOST framework for equivalence testing. + +\subsubsection{Bootstrap t-test}\label{bootstrap-t-test} + +The bootstrap t-test (\texttt{boot\_t\_test}) in TOSTER defaults to the +studentized bootstrap (\texttt{boot\_ci\ =\ "stud"}) because this +matches the original bootstrap t-test proposed by \citet{efron93} +(Chapter 16), which is the procedure \texttt{boot\_t\_TOST} implements. +In this approach, the t-statistic itself is resampled rather than the +raw mean difference, and confidence intervals are constructed from the +bootstrap distribution of these pivotal quantities. Other CI methods +(percentile, basic, and BCa) remain available via the \texttt{boot\_ci} +argument, but the studentized default preserves consistency with the +\citet{efron93} formulation on which this function was based upon. It +also ensures that the reported p-value and confidence interval are +derived from the same bootstrap distribution, so the two will always +agree\footnote{Previous versions of the package used the studentized + p-value regardless of the selected CI method, which could produce + disagreement between reported intervals and p-values.}. + \begin{Shaded} \begin{Highlighting}[] -\FunctionTok{log}\NormalTok{(y}\SpecialCharTok{/}\NormalTok{x)} +\FunctionTok{set.seed}\NormalTok{(}\DecValTok{4522}\NormalTok{)} +\FunctionTok{boot\_t\_test}\NormalTok{(} + \AttributeTok{formula =}\NormalTok{ extra }\SpecialCharTok{\textasciitilde{}}\NormalTok{ group,} + \AttributeTok{data =}\NormalTok{ sleep,} + \AttributeTok{paired =} \ConstantTok{TRUE}\NormalTok{,} + \CommentTok{\# equivalence hypothesis} + \AttributeTok{alternative =} \StringTok{"equivalence"}\NormalTok{,} + \CommentTok{\# equivalence bounds} + \AttributeTok{mu =} \FunctionTok{c}\NormalTok{(}\SpecialCharTok{{-}}\FloatTok{0.5}\NormalTok{, }\FloatTok{0.5}\NormalTok{),} + \CommentTok{\# number of bootstrap resamples} + \AttributeTok{R =} \DecValTok{999} +\NormalTok{)} \end{Highlighting} \end{Shaded} \begin{verbatim} -## [1] 0.4054651 +## +## Bootstrapped Paired t-test (studentized) +## +## data: extra by group +## t-observed = -2.7766, df = 9, p-value = 1 +## alternative hypothesis: equivalence +## null values: +## mean difference mean difference +## -0.5 0.5 +## 90 percent confidence interval: +## -2.853166 -1.071659 +## sample estimates: +## mean of the differences (z = '1' - '2') +## -1.58 \end{verbatim} +The output of \texttt{boot\_t\_test} follows the familiar \texttt{htest} +format. The reported p-value is the larger of the two one-sided tests +against the equivalence bounds, and the confidence interval is the +studentized bootstrap CI for the mean difference. Because the p-value is +tied to this interval via CI inversion, a researcher reporting both will +find the two tell a consistent story. The interval will fall within the +equivalence bounds if and only if the equivalence test rejects. For +situations where both a nil hypothesis test and an equivalence test are +desired simultaneously with bootstrapping, \texttt{boot\_t\_TOST} +returns a \texttt{TOSTt} object with bootstrapped SMD estimates: + \begin{Shaded} \begin{Highlighting}[] -\FunctionTok{exp}\NormalTok{(}\FunctionTok{log}\NormalTok{(y) }\SpecialCharTok{{-}} \FunctionTok{log}\NormalTok{(x))} +\FunctionTok{set.seed}\NormalTok{(}\DecValTok{891111}\NormalTok{)} +\NormalTok{test1 }\OtherTok{=} \FunctionTok{boot\_t\_TOST}\NormalTok{(} + \AttributeTok{formula =}\NormalTok{ extra }\SpecialCharTok{\textasciitilde{}}\NormalTok{ group,} + \AttributeTok{data =}\NormalTok{ sleep,} + \AttributeTok{paired =} \ConstantTok{TRUE}\NormalTok{,} + \CommentTok{\# equivalence bounds} + \AttributeTok{eqb =}\NormalTok{ .}\DecValTok{5}\NormalTok{,} + \CommentTok{\# number of bootstrap resamples} + \AttributeTok{R =} \DecValTok{999} +\NormalTok{)} +\FunctionTok{print}\NormalTok{(test1)} \end{Highlighting} \end{Shaded} \begin{verbatim} -## [1] 1.5 +## +## Bootstrapped Paired t-test +## +## The equivalence test was non-significant, t(9) = -2.777, p = 9.99e-01 +## The null hypothesis test was significant, t(9) = -4.062, p = 0e+00 +## NHST: reject null significance hypothesis that the effect is equal to zero +## TOST: don't reject null equivalence hypothesis +## +## TOST Results +## t df p.value +## t-test -4.062 9 < 0.001 +## TOST Lower -2.777 9 0.999 +## TOST Upper -5.348 9 < 0.001 +## +## Effect Sizes +## Estimate SE C.I. Conf. Level +## Raw -1.580 0.3699 [-2.8527, -1.0364] 0.9 +## Hedges's g(z) -1.174 0.6491 [-1.3975, 0.9998] 0.9 +## Note: studentized bootstrap ci method utilized. +## Equivalence Bounds: Raw [-0.5, 0.5]; Hedges's g(z) [-0.4065, 0.4065] \end{verbatim} +The bootstrapped SMDs are a useful feature in their own right. Analytic +confidence intervals for standardized effect sizes rely on +approximations, which assume normality and can behave poorly with small +or skewed samples. Bootstrap intervals for SMDs sidestep these +assumptions by resampling the full estimation pipeline, yielding +intervals that inherit the robustness properties of the bootstrap itself +\citep{Kirby2013}. + +\paragraph{Checking Assumptions}\label{checking-assumptions-5} + +The bootstrap t-test makes fewer distributional assumptions than its +conventional Student's t-test but is not assumption-free. It requires +independent observations and assumes the empirical distribution is a +reasonable stand-in for the population distribution. The latter is an +assumption that holds better in moderate-to-large samples than in small +ones. The studentized bootstrap is reasonably robust to skewness and +heavy tails, but remains sensitive to outliers and other high-influence +observations, which can be drawn repeatedly across replicates and +disproportionately shape the bootstrap distribution. Useful visual +checks include the distribution of the data (histograms, boxplots) to +identify extreme values, the bootstrap distribution itself to flag +problematic skewness or gaps, and the jackknife-after-bootstrap plot to +identify individual observations that dominate the bootstrap +variability. The \texttt{tr} argument for trimmed means provides a +straightforward robustness option when outliers are a concern. +Diagnostic workflows for all three designs are demonstrated in the +\href{https://doi.org/10.5281/zenodo.22776189}{online supplement}. + +\subsubsection{Permutation t-test}\label{permutation-t-test} + +When \texttt{R\ =\ NULL}, the \texttt{perm\_t\_test} function enumerates +all possible permutations for an exact test, but otherwise it draws +random permutations (size of which is determined by the \texttt{R} +argument in the function) with the ``+1'' correction +\citep{phipson2010}. By default the test is studentized +(\texttt{perm\_se\ =\ TRUE}), consistent with the recommendations +discussed in the methods section above. The \texttt{perm\_se\ =\ FALSE} +option is available primarily to match the behavior of other R packages +that provide permutation tests that do not studentize by default (e.g., +the permutation implementation in the ``coin'' R package). + \begin{Shaded} \begin{Highlighting}[] -\NormalTok{y}\SpecialCharTok{/}\NormalTok{x} +\FunctionTok{set.seed}\NormalTok{(}\DecValTok{8812}\NormalTok{)} +\FunctionTok{perm\_t\_test}\NormalTok{(} + \AttributeTok{formula =}\NormalTok{ extra }\SpecialCharTok{\textasciitilde{}}\NormalTok{ group,} + \AttributeTok{data =}\NormalTok{ sleep,} + \AttributeTok{paired =} \ConstantTok{TRUE}\NormalTok{,} + \CommentTok{\# equivalence hypothesis} + \AttributeTok{alternative =} \StringTok{"equivalence"}\NormalTok{,} + \CommentTok{\# equivalence bounds} + \AttributeTok{mu =} \FunctionTok{c}\NormalTok{(}\SpecialCharTok{{-}}\FloatTok{0.5}\NormalTok{, }\FloatTok{0.5}\NormalTok{),} + \CommentTok{\# number of random permutations} + \AttributeTok{R =} \DecValTok{999} +\NormalTok{)} \end{Highlighting} \end{Shaded} \begin{verbatim} -## [1] 1.5 +## +## Randomization Permutation Paired t-test +## +## data: extra by group +## t-observed = -2.7766, df = 9, p-value = 0.999 +## alternative hypothesis: equivalence +## null values: +## difference in means difference in means +## -0.5 0.5 +## 90 percent confidence interval: +## -2.1720 -0.9956 +## sample estimates: +## mean of the differences (z = '1' - '2') +## -1.58 \end{verbatim} -The log transformation thereby acts as a useful tool help tame data into -conforming to the normality assumption, and makes the interpretation -fairly simple. In addition, some regulatory agencies, such as the United -States Food and Drug Administration (FDA) \citep{fda}, specifically -require bioequivalence studies to report the geometric means and make -statistical comparisons on the log transformed data \citep{he2022}. In -pharmaceutical reserach, bioequivalence testing involves determining -whether two drugs, a test drug and a reference drug, have the same rate -and extent of absorption in the body. This is typically accomplished by -testing whether the blood concentrations of the drug after -administration of the test drug are sufficiently close to the blood -concentrations after administration of the reference drug. If the two -drugs are bioequivalent, they can be used interchangeably. The area -under the curve (AUC) is the measure of the extent of absorption, and -the peak concentration is the measure of the rate of absorption. In -order to determine bioequivalence, the AUC and peak concentration of the -test drug must be within a certain percentage of the AUC and peak -concentration of the reference drug. - -In my personal experience as a physiologist, it is not uncommon that -biological/physiological phenomenon present have longer right-tailed -distributions, and are often adequately normalized with a natural log -transformation. The additional advantage is the how equivalence bounds -can, almost, be universally applied when making comparisons on the log -scale. The FDA considers to drugs to be bioequivalent when the maximal -concentration and AUC differences between drugs are less than 1.25. To -put it another way, ratio between two means must be between 1.25 and 0.8 -(i.e., 1/1.25) \citep{fda}. - -Therefore, I have implemented two functions to allow for the comparison -of data that is believed to be left skewed (long right tail), and is on -a ratio scale\footnote{Ratio scale means the outcome is measured on a - numerical scale that has equal distances between adjacent values and - true zero.}. The first function is a parametric t-test on the log -transformed scale while the second function is a bootstrapping test -which is more robust than parametric version \citep{he2022}. - -\hypertarget{example-of-log-tost}{% -\subsubsection{Example of Log TOST}\label{example-of-log-tost}} - -The \texttt{log\_TOST} function is almost exactly the same as the -\texttt{t\_TOST} function. First, the primary differences is that it -only accepts paired and two sample comparisons. One sample tests are not -support (i.e., there is no ratio to calculate). Second, standardized -mean differences are not calculated, but a ratio of means is instead -reported \citep{lajeunesse2015bias}\footnote{Also, referred to as a - ``response ratio'' in ecology. Like an SMD, the response ratio can be - utilized in meta-analysis.}. Third, the default equivalence bounds are -by default set to the FDA standards (i.e., \texttt{eqb\ =\ 1.25}), but -can be changed by the user\footnote{Only one value needs to be supplied - to eqb; the reciprocal value of eqb is taken as the other equivalence - bound. For example, if \texttt{eqb\ \ =\ 0.85} then the upper - equivalence bound is 1/0.85 (\textasciitilde1.333)}. - -As an example we can use the \texttt{mtcars} data to compare the type of -transmission (\texttt{am}) effects on the gas mileage (\texttt{mpg}). We -can see from the data below there are significant, non-equivalent, -differences in mpg between transmission types. +Running the bootstrap and permutation equivalence tests on the same +paired sleep data using matching equivalence bounds produces broadly +similar conclusions, as would be expected. The two approaches can, +however, diverge in small samples, under strong heteroscedasticity, or +in the presence of influential outliers, which is where the choice +between them becomes substantively important. Users interested in +robustness to outliers can additionally supply the \texttt{tr} argument +to either function to use trimmed means, which downweight extreme +observations while preserving a location-based interpretation on the +original scale. + +\paragraph{Checking Assumptions}\label{checking-assumptions-6} + +The permutation t-test carries different assumptions depending on +design. For the two-sample case, the studentized version is valid under +exchangeability of observations across groups under the null and +provides asymptotic validity even when variances differ between groups. +For paired and one-sample designs, the sign-flip procedure additionally +requires that the distribution of differences (or one-sample +observations) is symmetric around the null value. Asymmetry makes the +paired permutation t-test approximate rather than exact, but +studentization provides some asymptotic protection. Symmetry is a +commonly overlooked assumption for paired permutation tests and is +easily checked with a symmetry plot of the differences, as demonstrated +for the WMW signed-rank case above. For two-sample designs, overlaid +empirical cumulative density functions and separate density plots help +assess whether group shapes are comparable enough for exchangeability +under the null to be credible. Diagnostic workflows for all three +designs are demonstrated in the +\href{https://doi.org/10.5281/zenodo.22776189}{online supplement}. As +with the bootstrap, these checks reflect assumptions that are relaxed +relative to Student's t-test but not eliminated. + +\newpage + +\subsection{Log-Transformed Methods}\label{log-transformed-methods} + +The natural log transformation stabilizes variance and approximates +normality for right-skewed data \citep{logtest}. An additional advantage +is that differences on the log scale back-transform to ratios, making +interpretation straightforward: if two samples have geometric means of 7 +and 10.5, the ratio is 1.5 (i.e., 10.5/7). This property is central to +pharmaceutical bioequivalence, where the FDA requires comparisons on the +log-transformed scale with equivalence bounds of 0.80 to 1.25 for the +ratio of geometric means \citep{fda, he2022}. + +An alternative to \texttt{log\_TOST} is to log-transform data manually +and analyze with \texttt{t\_TOST}, \texttt{simple\_htest}, or the +resampling methods. Differences on the log scale can then be interpreted +as ``sympercents'' --- symmetric percentage differences on the +\(100 \cdot \ln(x) - ln(y)\) scale \citep{cole2000} --- which are +symmetric in a way that ordinary percentage differences are not because +percentage changes are calculated from different bases. For example, a +10\% loss and a 10\% gain do not cancel out, whereas +10 and -10 +sympercents are exactly equal in magnitude.\footnote{A concrete + illustration that I give my students: if a stock falls 10\% on Tuesday + and rises 10\% from Tuesday on Wednesday, you still have a loss on of + your original investment. Fortunately, sympercents do not have this + asymmetry.} + +\subsubsection{Log TOST}\label{log-tost} + +The \texttt{log\_TOST} function accepts paired and two-sample +comparisons (one-sample tests are not supported since there is no ratio +to calculate). Instead of an SMD, a ratio of means is reported +\citep{lajeunesse2015bias}. The default equivalence bounds are set to +the FDA standard (\texttt{eqb\ =\ 1.25}; the reciprocal is taken as the +other bound). \begin{Shaded} \begin{Highlighting}[] @@ -977,14 +2005,10 @@ \subsubsection{Example of Log TOST}\label{example-of-log-tost}} \newpage -\hypertarget{example-of-bootstrap-log-tost}{% -\subsubsection{Example of Bootstrap Log -TOST}\label{example-of-bootstrap-log-tost}} +\subsubsection{Bootstrap Log TOST}\label{bootstrap-log-tost} -The bootstrap version of \texttt{log\_TOST}, \texttt{boot\_log\_TOST}, -uses the same bootstrapping method detailed above -(\texttt{boot\_t\_TOST}), but it uses the log-transformed values and -produces the ratio of means as the effect size. +The bootstrap version uses the same bootstrap methods as +\texttt{boot\_t\_test} on the log-transformed values: \begin{Shaded} \begin{Highlighting}[] @@ -996,7 +2020,7 @@ \subsubsection{Example of Bootstrap Log ## ## Bootstrapped Log Welch Two Sample t-test ## -## The equivalence test was non-significant, t(23.96) = -1.363, p = 9.57e-01 +## The equivalence test was non-significant, t(23.96) = -1.363, p = 9.54e-01 ## The null hypothesis test was significant, t(23.96) = -3.826, p = 0e+00 ## NHST: reject null significance hypothesis that the effect is equal to 1 ## TOST: don't reject null equivalence hypothesis @@ -1004,98 +2028,194 @@ \subsubsection{Example of Bootstrap Log ## TOST Results ## t df p.value ## t-test -3.826 23.96 < 0.001 -## TOST Lower -1.363 23.96 0.957 +## TOST Lower -1.363 23.96 0.954 ## TOST Upper -6.288 23.96 < 0.001 ## ## Effect Sizes ## Estimate SE C.I. Conf. Level -## log(Means Ratio) -0.3466 0.08634 [-0.4871, -0.2039] 0.9 -## Means Ratio 0.7071 0.06119 [0.6144, 0.8156] 0.9 -## Note: percentile bootstrap method utilized. +## log(Means Ratio) -0.3466 0.08621 [-0.4932, -0.1893] 0.9 +## Means Ratio 0.7071 0.06116 [0.6106, 0.8275] 0.9 +## Note: studentized bootstrap ci method utilized. +## Equivalence Bounds: log(Means Ratio) [-0.2231, 0.2231]; Means Ratio [0.8, 1.25] \end{verbatim} From this analysis, we would conclude there is a significant effect that is not practically equivalent. +\subsubsection{Checking Assumptions}\label{checking-assumptions-7} + +The log-transformed methods inherit the assumptions of the underlying +test applied to the transformed data. The \texttt{log\_TOST} function +carries forward the t-test assumptions, and \texttt{boot\_log\_TOST} +carries forward the bootstrap t-test assumptions. However, all these +assumptions (i.e., normality, symmetry, and homogeneity of variance) +should be assessed on the log scale rather than the original scale, +since that is where inference now takes place. Similarly, the visual +diagnostics should be computed on log-transformed data. This points to a +broader practical use of log transformation. When the symmetry +assumption of the sign-flip permutation test is violated because paired +differences are right-skewed on the original scale, the differences of +logs are often approximately symmetric, and \texttt{perm\_t\_test} on +log-transformed values becomes a reasonable option. In such cases the +equivalence bounds could be specified on the log scale and interpreted +as log ratios (or sympercents) using any of the other t-test functions +in TOSTER. + \newpage -\hypertarget{equivalence-testing-with-anovas}{% \section{Equivalence Testing with -ANOVAs}\label{equivalence-testing-with-anovas}} - -Many researchers utilize ANOVA as an omnibus test for the -absence/presence of effects before inspecting multiple pairwise -comparisons. This is very useful when implementing factorial designs -wherein multiple experimental factors are tested and/or manipulated. As -\citet{Campbell_2021} suggest, the lack of a significant result at the -ANOVA-level does not necessarily indicate that a factor or interaction -of factors have no effect. However, \citet{Campbell_2021} only suggest -an equivalence test for one-way ANOVAs and therefore exclude -multi-factor or factorial ANOVAs. Therefore, I have extended the work of -\citet{Campbell_2021} to include functions that allow for equivalence -testing of the partial \(\eta^2\) (eta-squared) effect size from ANOVAs. - -\hypertarget{f-test-calculations}{% -\subsection{F-test Calculations}\label{f-test-calculations}} - -Statistical equivalence testing\footnote{Also called ``omnibus - non-inferiority testing'' by \citet{Campbell_2021}} for \emph{F}-tests -are special use case of the cumulative distribution function of the -non-central \emph{F} distribution. As \citet{Campbell_2021} states, this -type of statistical test answers the question: ``Can we reject the -hypothesis that the total proportion of variance in outcome Y -attributable to X is greater than or equal to the equivalence bound -\(\Delta\)?'' - -\hypertarget{hypothesis-tests}{% -\subsubsection{Hypothesis Tests}\label{hypothesis-tests}} +ANOVAs}\label{equivalence-testing-with-anovas} -\[ -H_0 = 1 > \eta^2_p \geq \Delta -\] +Many researchers use an ANOVA as an omnibus test before inspecting +pairwise comparisons, particularly in factorial designs. As +\citet{Campbell_2021} note, the lack of a significant ANOVA result does +not indicate that a factor in a design has no effect. Equivalence +testing for ANOVAs addresses this directly by asking whether the +variance attributable to a factor is small enough to be declared +negligible. + +\subsection{Partial Eta-Squared and the Equivalence +Hypothesis}\label{partial-eta-squared-and-the-equivalence-hypothesis} + +The effect size used throughout this section is ``partial eta-squared'' +(\(\eta^2_p\)), \[ -H_1 = 0 \geq \eta^2_p < \Delta +\eta^2_p = \frac{SS_{\text{effect}}}{SS_{\text{effect}} + SS_{\text{error}}} \] -In TOSTER, I have gone a tad farther than \citet{Campbell_2021}, and -have included a calculation for a generalization of the non-centrality -parameter that allows the equivalence test for \emph{F}-tests to be -applied to variety of designs. +The proportion of variance attributable to an effect once the variance +attributable to the other effects in the model has been removed. It is +not the same quantity as \(\eta^2\), which divides by the total sum of +squares and the two coincide only in a one-way design. In +within-subjects designs, \(SS_{\text{error}}\) refers to the error term +against which that particular effect is tested, so each effect in a +factorial model carries its own denominator. -\citet{Campbell_2021} calculate the \emph{p}-value as: +Because \(\eta^2_p\) cannot be negative, there is no lower bound to test +against. Oddly enough, this means the equivalence tests for ANOVAs and +F-tests in TOSTER do not involve TOST. Instead it is only a single +one-sided test, which \citet{Campbell_2021} describe accurately as an +``omnibus non-inferiority test''. \[ -p = p_f(F; J-1, N-J, \frac{N \cdot \Delta}{1-\Delta}) +H_0: \eta^2_p \geq \Delta \qquad \text{versus} \qquad H_1: \eta^2_p < \Delta \] -The non-centrality parameter (ncp = \(\lambda\)) can be calculated with -the equivalence bound and the degrees of freedom: +In this case, rejecting \(H_0\) supports the claim that the effect in +question explains less than the prespecified \(\Delta\) of the variance. +There are two caveats on that interpretation worth discussing. First, +this equivalence test is a statement about an effect as a whole rather +than about any particular contrast or comparison within it. An omnibus +effect can be negligible while a specific pairwise comparison nested +inside it is not, so equivalence at the level of the F-test does not +license equivalence claims about individual group differences. Second, +as with any equivalence test, failing to reject \(H_0\) is not evidence +that the effect is sufficiently large. It means only that the data +remain compatible with an effect at or beyond the bound. + +The test itself is computed from the cumulative distribution function of +the non-central F distribution. \citet{Campbell_2021} derived the +p-value for a one-way ANOVA with \(J\) groups and \(N\) total +observations as \[ -\lambda_{eq} = \frac{\Delta}{1-\Delta} \cdot(df_1 + df_2 +1) +p = p_F \left( F; \space J-1, \space N-J, \space \frac{N \cdot \Delta}{1 - \Delta} \right) \] -\newpage - -The \emph{p}-value for the equivalence test (\(p_{eq}\)) could then be -calculated from traditional ANOVA results and the distribution function: +and evaluated the Type I error and power of the procedure by simulation. +With TOSTER I then generalized the non-centrality parameter so that the +same logic extends to multi-factor, factorial, and within-subjects +designs, \[ -p_{eq} = p_f(F; df_1, df_2, \lambda_{eq}) +\lambda_{eq} = \frac{\Delta}{1 - \Delta} \cdot (df_1 + df_2 + 1), \qquad p_{eq} = p_F(F; \space df_1, \space df_2, \space \lambda_{eq}) \] -\hypertarget{example-of-equivalence-anova-testing}{% -\subsection{Example of Equivalence ANOVA -Testing}\label{example-of-equivalence-anova-testing}} - -Using the \texttt{InsectSprays} data set in R and the base R -\texttt{aov} function, I can demonstrate how this omnibus equivalence -testing can be applied with TOSTER. From the initial analysis we an see -a clear ``significant'' effect (very small p-value) of the inspect -spray. However, we \emph{may} be interested in testing if the effect is -practically equivalent. I will arbitrarily set the equivalence bound to -a partial eta-squared of 0.35 (\(H_0: \eta^2_p > 0.35\)). +where \(df_1\) and \(df_2\) are the numerator and denominator degrees of +freedom for the effect being tested. For a one-way design +\(df_1 + df_2 + 1 = (J-1) + (N-J) + 1 = N\), so the generalization +reduces exactly to the expression given by \citet{Campbell_2021}. A +fuller description is provided in the +\href{https://aaroncaldwell.us/TOSTERpkg/articles/the_ftestTOSTER.html}{package +documentation}. + +The quantity \(df_1 + df_2 + 1\) is the effective sample size of the +error stratum in which an effect is tested, which is not in general the +total number of observations. In a mixed design, for example, it +recovers the number of subjects for a between-subjects effect. I +evaluated the generalization by simulation for one-way within-subjects, +factorial between-subjects, and mixed designs, and the equivalence test +maintained its nominal Type I error rate at the boundary of the null +hypothesis in each. Readers who want the simulation code, the full +results, and a longer discussion of interpretation will find them in the +\href{https://doi.org/10.5281/zenodo.22776189}{online supplement}. + +The equivalence test inherits the standard ANOVA assumptions, which +should be checked on the fitted model itself rather than on the +equivalence output. The \texttt{performance::check\_model()} function +provides a comprehensive visual diagnostic suite for most linear model +objects in R in a single call; the +\href{https://doi.org/10.5281/zenodo.22776189}{online supplement} +demonstrates its use. + +However, TOSTER's current implementation is sensitive to violations to +the assumption of sphericity. For within-subjects factors with more than +two levels, \texttt{equ\_anova} currently uses the uncorrected +univariate degrees of freedom and does not apply Greenhouse-Geisser or +Huynh-Feldt corrections, even when the fitted object was created with a +correction requested. My simulations show that the equivalence test can +become substantially anti-conservative when sphericity is badly +violated. Sphericity should therefore be assessed on the fitted model, +and results treated cautiously when it is in doubt; the supplement +quantifies the size of the problem. + +\subsection{\texorpdfstring{Choosing a Bound on +\(\eta^2_p\)}{Choosing a Bound on \textbackslash eta\^{}2\_p}}\label{choosing-a-bound-on-eta2_p} + +In my opinion, the bounds on \(\eta^2_p\) are harder to justify than +bounds on the original measurement scale (much like the SMD), and the +difficulty is worth confronting before running an equivalence ANOVA +test. + +The first problem is that \(\eta^2_p\) is not comparable across designs. +Its denominator depends on which other effects appear in the model and, +in within-subjects designs, on the error term against which the effect +is tested. A \(\eta^2_p\) of 0.06 for a one-way between-subjects factor +and a \(\eta^2_p\) of 0.06 for an interaction in a repeated-measures +model are not estimates of the same quantity. A bound therefore cannot +simply be borrowed from a published study unless that study used the +same design and the same model. This may be more of a problem for +repeated-measures designs where subject variance is excluded from the +denominator entirely. A bound on \(\eta^2_p\) is consequently not a +bound on the share of total variance in the data, and the gap between +the two widens as the number of levels of the within-subjects factor +falls. The supplement quantifies the discrepancy. + +The second problem is that a proportion of variance has little direct +substantive meaning. Unlike a mean difference expressed in the units of +the outcome, there is rarely an anchor-based or cost-benefit argument +that delivers a number on this scale directly. Researchers who find +Cohen's \(f\) more intuitive can move between the two with +\(f^2 = \eta^2_p / (1 - \eta^2_p)\), and the \texttt{power\_eq\_f} +function can be used to determine the degrees of freedom required to +achieve a given power for a specified bound, or the power attainable for +a given design. The choosing-bounds section of the package's F-test +vignette discusses the problem in more detail. Additionally, I would +recommend that, in most situations where an ANOVA is utilized for +multi-group or even factorial designs, that equivalence testing is often +best accomplished with specific contrasts (example below). + +The bound of \(\Delta = 0.35\) used in both examples below is +deliberately large. It was chosen so that the demonstrations produce +interpretable output rather than because it represents a defensible +threshold, and it should not be read as a default. + +\subsection{Example with Summary +Statistics}\label{example-with-summary-statistics} + +Using the \texttt{InsectSprays} data and the \texttt{equ\_ftest} +function, which accepts summary F-test statistics directly: \begin{Shaded} \begin{Highlighting}[] @@ -1116,15 +2236,16 @@ \subsection{Example of Equivalence ANOVA ## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 \end{verbatim} -We can then use the information in the table above to perform an -equivalence test using the \texttt{equ\_ftest} function. This function -returns an object of the S3 class \texttt{htest} and the output will -look very familiar to that of the t-test. The main difference is the -estimates, and confidence interval, are for partial \(\eta^2_p\). - \begin{Shaded} \begin{Highlighting}[] -\FunctionTok{equ\_ftest}\NormalTok{(}\AttributeTok{Fstat =} \FloatTok{34.70228}\NormalTok{, }\AttributeTok{df1 =} \DecValTok{5}\NormalTok{, }\AttributeTok{df2 =} \DecValTok{66}\NormalTok{, }\AttributeTok{eqb =} \FloatTok{0.35}\NormalTok{)} +\FunctionTok{equ\_ftest}\NormalTok{(} + \CommentTok{\# F statistic and degrees of freedom from the ANOVA table} + \AttributeTok{Fstat =} \FloatTok{34.70228}\NormalTok{,} + \AttributeTok{df1 =} \DecValTok{5}\NormalTok{,} + \AttributeTok{df2 =} \DecValTok{66}\NormalTok{,} + \CommentTok{\# equivalence bound on partial eta{-}squared} + \AttributeTok{eqb =} \FloatTok{0.35} +\NormalTok{)} \end{Highlighting} \end{Shaded} @@ -1140,37 +2261,59 @@ \subsection{Example of Equivalence ANOVA ## [1] 0.724439 \end{verbatim} -Based on the results above we would conclude there is a significant -effect of ``spray'' and the differences due to spray are \emph{not} -statistically equivalent. In essence, we reject the traditional null -hypothesis of ``no effect'' but accept the null hypothesis of the -equivalence test. +Based on these results, there is a significant effect of ``spray'' and +the differences are not statistically equivalent. We then reject the +traditional null hypothesis but fail to reject the equivalence null +hypothesis. -\newpage +\subsection{Example with R ANOVA +Objects}\label{example-with-r-anova-objects} -The \texttt{equ\_ftest} function is very useful because all you need is -very basic summary statistics. However, if you are doing all your -analyses in R then you can use the \texttt{equ\_anova} function. This -function accepts objects produced from \texttt{stats::aov}, -\texttt{car::Anova} and \texttt{afex::aov\_car} (or any ANOVA from -derived from \texttt{afex}). +The \texttt{equ\_anova} function accepts objects from +\texttt{stats::aov}, \texttt{car::Anova}, and \texttt{afex::aov\_car}, +avoiding the need to extract summary statistics manually. It returns the +familiar ANOVA table with the equivalence test appended: -As a second example, we can use the afex package's data and ANOVA -\citep{afex}. Again, we will use the equivalence bound of 0.35, which is -a completely arbitrary (and baseless) equivalence bound. Notice that the -output contains 2 p-values: one for the significance (\texttt{p.null}) -and another for the equivalence test (\texttt{p.equ}). +\begin{itemize} +\tightlist +\item + \texttt{effect}, \texttt{df1}, \texttt{df2}, \texttt{F.value} --- the + effect being tested and the components of the traditional F-test. +\item + \texttt{p.null} --- the p-value for the traditional nil-hypothesis + test. +\item + \texttt{pes} --- the estimated \(\eta^2_p\) for that effect. +\item + \texttt{eqbound} --- the equivalence bound that was applied. +\item + \texttt{p.equ} --- the p-value for the equivalence test. +\end{itemize} + +Because each effect in a within-subjects design is tested against its +own error term, each row carries its own \(df_2\) and therefore its own +denominator for \texttt{pes}. Note also that an equivalence test is +reported for the intercept; this is rarely a hypothesis of interest and +can generally be ignored. \begin{Shaded} \begin{Highlighting}[] -\CommentTok{\# Example using a purely within{-}subjects design } +\CommentTok{\# Example using a purely within{-}subjects design} \CommentTok{\# (Maxwell \& Delaney, 2004, Chapter 12, Table 12.5, p. 578):} \FunctionTok{library}\NormalTok{(afex)} \FunctionTok{data}\NormalTok{(md\_12}\FloatTok{.1}\NormalTok{)} -\NormalTok{aovtest2 }\OtherTok{=} \FunctionTok{aov\_ez}\NormalTok{(}\StringTok{"id"}\NormalTok{, }\StringTok{"rt"}\NormalTok{, md\_12}\FloatTok{.1}\NormalTok{, }\AttributeTok{within =} \FunctionTok{c}\NormalTok{(}\StringTok{"angle"}\NormalTok{, }\StringTok{"noise"}\NormalTok{), } - \AttributeTok{anova\_table=}\FunctionTok{list}\NormalTok{(}\AttributeTok{correction =} \StringTok{"none"}\NormalTok{, }\AttributeTok{es =} \StringTok{"none"}\NormalTok{))} -\FunctionTok{equ\_anova}\NormalTok{(aovtest2,} - \AttributeTok{eqb =} \FloatTok{0.35}\NormalTok{)} +\NormalTok{aovtest2 }\OtherTok{=} \FunctionTok{aov\_ez}\NormalTok{(} + \CommentTok{\# participant identifier} + \StringTok{"id"}\NormalTok{,} + \CommentTok{\# dependent variable} + \StringTok{"rt"}\NormalTok{,} + \CommentTok{\# data} +\NormalTok{ md\_12}\FloatTok{.1}\NormalTok{,} + \CommentTok{\# within{-}subjects factors} + \AttributeTok{within =} \FunctionTok{c}\NormalTok{(}\StringTok{"angle"}\NormalTok{, }\StringTok{"noise"}\NormalTok{),} + \AttributeTok{anova\_table =} \FunctionTok{list}\NormalTok{(}\AttributeTok{correction =} \StringTok{"none"}\NormalTok{, }\AttributeTok{es =} \StringTok{"none"}\NormalTok{)} +\NormalTok{)} +\FunctionTok{equ\_anova}\NormalTok{(aovtest2, }\AttributeTok{eqb =} \FloatTok{0.35}\NormalTok{)} \end{Highlighting} \end{Shaded} @@ -1184,213 +2327,301 @@ \subsection{Example of Equivalence ANOVA \newpage -\hypertarget{equivalence-between-replication-studies}{% -\section{Equivalence Between Replication -Studies}\label{equivalence-between-replication-studies}} - -During the development of this TOSTER update, I was helping advise a -team of researchers on a massive replication project for sport and -exercise science \citep{repSES}. How to determine whether a -direct\footnote{Defined as being a as-close-as possible replication to - the original study, in contrast to ``conceptual'' replications.} -replication was a successful replication of the original study was -contentious topic of conversation among the team. Inspired by these -discussions, I created 2 functions that would utilize the basic -principles of SMDs\footnote{The textbook by \citet{borenstein} and the - some of the works of Wolfgang Vietchbauer, metafor R package author, - were a large source of information for developing these functions.} to -test for differences between two studies. - -Overall, the concept is simple: if we have estimates of SMDs from two -very similar studies we can use the large-sample approximation to -compute the sampling variances\footnote{Users can also supply their own - sampling variances using the \texttt{se1} and \texttt{se2} arguments.} -to estimate the degree to which the two studies differ from one another -(i.e., calculate p-values). The users of TOSTER then have the option to -test whether the two SMDs significantly differ, or use TOST to estimate -if they are practically equivalent. Additionally, there are two options -for comparing SMDs: using the summary statistics or using bootstrapping -(assuming original data is available). - -\hypertarget{example-using-summary-statistics}{% -\subsection{Example using Summary -Statistics}\label{example-using-summary-statistics}} - -In this example, let us imagine an ``original'' study that reports an -effect of Cohen's dz = 0.95 in a paired samples design with 25 subjects. -However, a replication doubled the sample size, found a non-significant -effect at an SMD of 0.2. Are these two studies compatible (the lower the -p-value the lower the compatibility)? Or, to put it another way, should -the replication be considered a ``failure'' to replicate the original -study? - -We can use the \texttt{compare\_smd} function to at least measure how -often we would expect a discrepancy between the original and replication -study if the same underlying effect was being measured (also assuming no -publication bias). - -We can see from the results below that, if the null hypothesis were -true, we would only expect to see a discrepancy in SMDs between studies -at least this large \textasciitilde1\% of the time. +\subsection{Example with Specific +Contrasts}\label{example-with-specific-contrasts} + +As mentioned previously, the ANOVA equivalence testing functions answer +only a very broad, somewhat vague, question. The omnibus test asks +whether a factor as a whole explains a negligible share of the variance +available to it. That is often not the question a researcher actually +has. More commonly the hypothesis concerns particular comparisons (e.g., +is this condition equivalent to that one?) and, as noted above, an +omnibus effect can be negligible while a specific comparison nested +within it is not. Testing contrasts directly also sidesteps the +bound-justification problem described earlier. A contrast is expressed +in the units of the outcome, so the smallest effect size of interest can +be argued for on the original measurement scale, where anchor-based and +cost-benefit reasoning are available, rather than on the +proportion-of-variance scale where they usually are not. + +TOSTER does not fit contrasts itself, but the ``emmeans'' package +\citep{emmeans} accommodates non-zero null hypotheses directly and +operates on the same fitted model objects\footnote{This can also be + accomplished with ``marginaleffects'' \citep{marginaleffects}}. +Therefore, I wanted to briefly demonstrate how this could be +accomplished. Using the the \texttt{InsectSprays} ANOVA fitted above, +suppose a difference of fewer than five insects is considered too small +to matter and we have two specific hypotheses of equivalence regarding +groups C, D, and E: \begin{Shaded} \begin{Highlighting}[] -\FunctionTok{compare\_smd}\NormalTok{(}\AttributeTok{smd1 =} \FloatTok{0.95}\NormalTok{,} - \AttributeTok{n1 =} \DecValTok{25}\NormalTok{,} - \AttributeTok{smd2 =} \FloatTok{0.23}\NormalTok{,} - \AttributeTok{n2 =} \DecValTok{50}\NormalTok{,} - \AttributeTok{paired =} \ConstantTok{TRUE}\NormalTok{)} +\FunctionTok{library}\NormalTok{(emmeans)} +\CommentTok{\# estimated marginal means from the ANOVA fit earlier} +\NormalTok{emm }\OtherTok{=} \FunctionTok{emmeans}\NormalTok{(aovtest, }\SpecialCharTok{\textasciitilde{}}\NormalTok{ spray)} + +\CommentTok{\# two comparisons specified in advance as the hypotheses of interest} +\NormalTok{sprays }\OtherTok{=} \FunctionTok{contrast}\NormalTok{(} +\NormalTok{ emm,} + \AttributeTok{method =} \FunctionTok{list}\NormalTok{(} + \StringTok{"C vs D"} \OtherTok{=} \FunctionTok{c}\NormalTok{(}\DecValTok{0}\NormalTok{, }\DecValTok{0}\NormalTok{, }\DecValTok{1}\NormalTok{, }\SpecialCharTok{{-}}\DecValTok{1}\NormalTok{, }\DecValTok{0}\NormalTok{, }\DecValTok{0}\NormalTok{),} + \StringTok{"C vs E"} \OtherTok{=} \FunctionTok{c}\NormalTok{(}\DecValTok{0}\NormalTok{, }\DecValTok{0}\NormalTok{, }\DecValTok{1}\NormalTok{, }\DecValTok{0}\NormalTok{, }\SpecialCharTok{{-}}\DecValTok{1}\NormalTok{, }\DecValTok{0}\NormalTok{)} +\NormalTok{ )} +\NormalTok{)} + +\FunctionTok{test}\NormalTok{(} +\NormalTok{ sprays,} + \CommentTok{\# equivalence bound on the original scale (insect counts)} + \AttributeTok{delta =} \DecValTok{5}\NormalTok{,} + \AttributeTok{side =} \StringTok{"equivalence"}\NormalTok{,} + \AttributeTok{adjust =} \StringTok{"none"} +\NormalTok{)} \end{Highlighting} \end{Shaded} \begin{verbatim} +## contrast estimate SE df t.ratio p.value +## C vs D -2.83 1.6 66 -1.353 0.0903 +## C vs E -1.42 1.6 66 -2.238 0.0143 ## -## Difference in Cohen's dz (paired) -## -## data: Summary Statistics -## z = 2.5685, p-value = 0.01021 -## alternative hypothesis: true difference in SMDs is not equal to 0 -## sample estimates: -## difference in SMDs -## 0.72 +## Statistics are tests of equivalence with a threshold of 5 +## P values are left-tailed \end{verbatim} -Let us also imagine a scenario where a replication team considers a -replication successful if the SMDs are within 0.25 units of each other. -We can set the \texttt{TOST} argument to TRUE, and then set the -equivalence bound using \texttt{null} argument. +Spray C is statistically equivalent to spray E (\emph{p} = 0.014) but +not to spray D (\emph{p} = 0.090), even though the omnibus test treated +``spray'' as a single undifferentiated effect. The same conclusion can +be read from the interval estimates, which for TOST are taken at +\(1-2\alpha\): \begin{Shaded} \begin{Highlighting}[] -\FunctionTok{compare\_smd}\NormalTok{(}\AttributeTok{smd1 =} \FloatTok{0.95}\NormalTok{, }\AttributeTok{n1 =} \DecValTok{25}\NormalTok{, }\AttributeTok{smd2 =} \FloatTok{0.23}\NormalTok{,}\AttributeTok{n2 =} \DecValTok{50}\NormalTok{,} - \AttributeTok{paired =} \ConstantTok{TRUE}\NormalTok{, }\AttributeTok{TOST =} \ConstantTok{TRUE}\NormalTok{, }\AttributeTok{null =}\NormalTok{ .}\DecValTok{25}\NormalTok{)} +\FunctionTok{confint}\NormalTok{(sprays, }\AttributeTok{level =} \FloatTok{0.90}\NormalTok{)} \end{Highlighting} \end{Shaded} \begin{verbatim} +## contrast estimate SE df lower.CL upper.CL +## C vs D -2.83 1.6 66 -5.50 -0.162 +## C vs E -1.42 1.6 66 -4.09 1.254 ## -## Difference in Cohen's dz (paired) -## -## data: Summary Statistics -## z = 1.6767, p-value = 0.9532 -## alternative hypothesis: true difference in SMDs is less than 0.25 -## sample estimates: -## difference in SMDs -## 0.72 +## Confidence level used: 0.9 \end{verbatim} -Based on the imaginary studies we outlined above, we would not reject -the null equivalence hypothesis, but reject the null significance -hypothesis. Therefore, we would could conclude that there are -significant differences between the studies that are not practically -equivalent. +The 90\% interval for C versus E lies entirely inside \(\pm\) 5, whereas +the interval for C versus D extends past the lower bound. + +Two notes on this additional non-TOSTER derived workflow. First, whether +to adjust for multiplicity is a substantive decision rather than an +automatic one; no adjustment is applied above because the two contrasts +were specified in advance as the hypotheses of interest (in this case we +could consider these independent tests). However, multiplicity +corrections (e.g., Holm-Bonferroni) remain valid for equivalence tests, +and are worthy of consideration. Second, this approach reaches well +beyond the ANOVA. Because \texttt{emmeans} works from fitted model +objects, the same equivalence contrasts can be applied to mixed-effects +models and other designs that fall outside TOSTER's scope. + +\newpage -\hypertarget{example-using-bootstrapping}{% -\subsection{Example using -Bootstrapping}\label{example-using-bootstrapping}} +\section{Power Analysis and Sample Size +Planning}\label{power-analysis-and-sample-size-planning} -The above results are only based on an approximating the differences -between the SMDs. If the raw data is available, then the optimal -solution is the bootstrap. This can be accomplished with the -\texttt{boot\_compare\_smd} function. The only drawback to this function -is that TOST is currently not avaiable, and users would instead have to -run 2 one-sided tests manually using the \texttt{null} and -\texttt{alternative} arguments. +Researchers planning an equivalence study will need to determine the +required sample size. Power for equivalence tests behaves differently +than for standard tests: larger samples are generally needed, and power +depends on both the true effect size and the width of the equivalence +bounds. -For this example, we will simulate some data. As an alternative approach -to TOST, we can just set the \texttt{alpha} to 0.1, and then check to -see if the confidence interval is within the preset equivalence bounds. +\subsection{Power for TOST t-tests}\label{power-for-tost-t-tests} + +The \texttt{power\_t\_TOST} function computes exact power for TOST with +one-sample, two-sample, and paired t-tests. It can solve for any one of +\texttt{n}, \texttt{power}, or \texttt{alpha} given the other parameters +are provided. The \texttt{delta} argument specifies the true mean +difference (set to 0 if the true effect is exactly zero) and +\texttt{eqb} specifies the equivalence bounds. + +For example, to determine the sample size needed to achieve 80\% power +to detect equivalence within bounds of \(\pm\) 0.5 (assuming the true +difference is zero and \(SD\) = 1): \begin{Shaded} \begin{Highlighting}[] -\FunctionTok{set.seed}\NormalTok{(}\DecValTok{4522}\NormalTok{)} -\NormalTok{boot\_test }\OtherTok{=} \FunctionTok{boot\_compare\_smd}\NormalTok{(}\AttributeTok{x1 =} \FunctionTok{rnorm}\NormalTok{(}\DecValTok{25}\NormalTok{,.}\DecValTok{95}\NormalTok{), }\AttributeTok{x2 =} \FunctionTok{rnorm}\NormalTok{(}\DecValTok{50}\NormalTok{), } - \AttributeTok{paired =} \ConstantTok{TRUE}\NormalTok{, }\AttributeTok{alpha =}\NormalTok{ .}\DecValTok{1}\NormalTok{)} -\NormalTok{boot\_test} +\FunctionTok{power\_t\_TOST}\NormalTok{(} + \CommentTok{\# true mean difference} + \AttributeTok{delta =} \DecValTok{0}\NormalTok{,} + \CommentTok{\# assumed standard deviation} + \AttributeTok{sd =} \DecValTok{1}\NormalTok{,} + \CommentTok{\# equivalence bounds} + \AttributeTok{eqb =} \FloatTok{0.5}\NormalTok{,} + \AttributeTok{alpha =} \FloatTok{0.05}\NormalTok{,} + \CommentTok{\# leaving n unspecified solves for the n giving 80\% power} + \AttributeTok{power =} \FloatTok{0.8}\NormalTok{,} + \AttributeTok{type =} \StringTok{"two.sample"} +\NormalTok{)} \end{Highlighting} \end{Shaded} \begin{verbatim} ## -## Bootstrapped Differences in SMDs (paired) +## Two-sample TOST power calculation ## -## data: Bootstrapped -## z (observed) = 2.887, p-value = 0.006003 -## alternative hypothesis: true difference in SMDs is not equal to 0 -## 90 percent confidence interval: -## 0.4070761 1.3508435 -## sample estimates: -## difference in SMDs -## 0.8058872 +## power = 0.8 +## beta = 0.2 +## alpha = 0.05 +## n = 69.19782 +## delta = 0 +## sd = 1 +## bounds = -0.5, 0.5 +## +## NOTE: n is number in *each* group \end{verbatim} +\subsection{Power for Correlations}\label{power-for-correlations} + +The \texttt{power\_z\_cor} function provides power analysis for +equivalence tests on Pearson correlations using Fisher's +z-transformation: + +\begin{Shaded} +\begin{Highlighting}[] +\FunctionTok{power\_z\_cor}\NormalTok{(} + \CommentTok{\# true correlation} + \AttributeTok{rho =} \DecValTok{0}\NormalTok{,} + \CommentTok{\# leaving n unspecified solves for the n giving 80\% power} + \AttributeTok{power =} \FloatTok{0.8}\NormalTok{,} + \CommentTok{\# equivalence bounds of {-}0.3 and 0.3} + \AttributeTok{null =} \FloatTok{0.3}\NormalTok{,} + \AttributeTok{alpha =} \FloatTok{0.05}\NormalTok{,} + \CommentTok{\# equivalence hypothesis} + \AttributeTok{alternative =} \StringTok{"equivalence"} +\NormalTok{)} +\end{Highlighting} +\end{Shaded} + +\begin{verbatim} +## +## Approximate Power for Pearson Product-Moment Correlation (z-test) +## +## n = 92.38991 +## rho = 0 +## alpha = 0.05 +## beta = 0.2 +## power = 0.8 +## null = 0.3, -0.3 +## alternative = equivalence +\end{verbatim} + +\subsection{Extensions: PowerTOST and +Superpower}\label{extensions-powertost-and-superpower} + +For more complex designs (e.g., crossover studies, corssover-replicate +designs, group-sequential equivalence trials) the PowerTOST package +\citep{PowerTOST} provides extensive functionality beyond what TOSTER +offers. For factorial designs where equivalence contrasts are tested via +estimated marginal means, simulation-based power analysis via the +Superpower package is recommended \citep{Lakens_Caldwell_2021}. Both +packages complement TOSTER's built-in power tools for common research +designs. In some situations, customized simulations may be required to +accurately determine power for an equivalence test. + \newpage -\hypertarget{conclusions}{% -\section{Conclusions}\label{conclusions}} - -In this manuscript I have demonstrated most of the new functions and -features within the TOSTER R package. This constitutes a major update to -the package over the past 2 years. I hope that updates to the package -builds upon the original impact of the TOSTER package\footnote{In my - opinion, the impact of the \citet{lakens_ori} cannot be overstated - considering it is cited by over 1000 other papers!}, and has been made -TOST more accessible to the average researcher. In addition, I have -added a number of other functions that offer robust alternatives to the -t-test for performing TOST analyses. I would strongly recommend users of -TOSTER to explore these functions, and, at the very least, compare the -robust results to the t-test results to ensure that the conclusions do -not change due to the chosen analysis\footnote{If they do change, then - it would be prudent to explore what features in the data might explain - this discrepancy.}. Lastly, to my knowledge, this is the first package -to offer equivalence testing options for ANOVAs or for comparing SMDs -between studies. Overall, this package and its functions offer an easily -accessible option for researchers to explore equivalence testing, and -hopefully improve their statistical analyses. +\section{Conclusions}\label{conclusions} + +This paper has described the major updates to the TOSTER R package, +expanding its scope from the original t-test and correlation equivalence +tests to a comprehensive toolkit for frequentist equivalence testing. +The update adds a unified t-test interface with minimal effect testing +support, a simplified hypothesis testing interface that integrates with +the standard R ecosystem, tools for standardized effect sizes and +correlations, robust and resampling-based alternatives, ANOVA +equivalence testing, and power analysis for sample size planning. + +Several limitations should be acknowledged. TOSTER only covers a few +standard research designs, and it does not handle many analysis +scenarios such as those involving multilevel or mixed-effects models. +For these settings, researchers should consider packages like +``emmeans'' \citep{emmeans} or ``marginaleffects'' +\citep{marginaleffects}, which can accommodate non-zero null hypotheses +in more complex modeling frameworks. TOSTER also does not provide +Bayesian equivalence testing; researchers interested in Bayesian methods +for the null should consult other R packages such as ``bayestestR'' +\citep{bayestestR}. + +I hope that the updated package continues to build upon the original +impact of \citet{lakens_ori} and makes equivalence testing more +accessible to researchers across disciplines. At the very least, I would +encourage users to compare results across methods (e.g., Student's +t-test vs.~permutation t-test vs.~bootstrap t-test) to ensure that +conclusions do not entirely depend on the chosen analysis. If the +interpretation substantially changes depending on the test, this +suggests features of the data --- violations of assumptions, outliers, +distributional shape --- that warrant further investigation. \newpage -\hypertarget{additional-information}{% -\section{Additional Information}\label{additional-information}} +\section{Additional Information}\label{additional-information} -All analyses/code in this manuscript are from TOSTER v0.6.0: +The TOSTER package can be installed from CRAN or from GitHub: \begin{verbatim} -# Install the exact release with this code -devtools::install_github("Lakens/TOSTER@v0.6.0") +# Install from CRAN +install.packages("TOSTER") + +# Install the development version from GitHub +devtools::install_github("Lakens/TOSTER") \end{verbatim} -\hypertarget{acknowledgements}{% -\subsection*{Acknowledgement(s)}\label{acknowledgements}} +The supplementary materials for this article are archived on Zenodo +(\url{https://doi.org/10.5281/zenodo.22776189}). They include a +verification of TOSTER against the results reported by +\citet{Campbell_2021} and a set of assumption checks for the procedures +described in this article. Each supplement is provided as a Quarto +source file with its rendered output, and all analyses were conducted +with TOSTER v0.9.0. + +\subsection*{Acknowledgement(s)}\label{acknowledgements} \addcontentsline{toc}{subsection}{Acknowledgement(s)} -I'd would like to thank everyone from the Lakens' laboratory group for -their input and suggestions. +I would like to thank everyone from the Lakens laboratory group for +their input and suggestions. I must also thank David Eisner, Jakub +Tomek, and James Selig for their feedback on drafts of this manuscript. -\hypertarget{disclosure-statement}{% -\subsection*{Disclosure statement}\label{disclosure-statement}} +\subsection*{Disclosure statement}\label{disclosure-statement} \addcontentsline{toc}{subsection}{Disclosure statement} The author of this manuscript is the author of the TOSTER package. Citations of this manuscript will benefit his citation count. -\hypertarget{funding}{% -\subsection*{Funding}\label{funding}} +\subsection*{AI Use Disclosure}\label{ai-use-disclosure} +\addcontentsline{toc}{subsection}{AI Use Disclosure} + +During the preparation of the TOSTER package updates and this +manuscript, the author used Claude Opus 4.5-5.0 (Anthropic) to assist +with editing R code and drafting unit tests. For the manuscript text, +Claude Opus was used only for targeted copy-editing --- suggesting +revisions to specific passages, catching typographical and grammatical +errors, and identifying inconsistencies across sections. The manuscript +was written by the author, and all AI-assisted output was reviewed, +revised, and verified by the author, who takes full responsibility for +the content of the package and the manuscript. + +\subsection*{Funding}\label{funding} \addcontentsline{toc}{subsection}{Funding} No funding was provided for this work. -\hypertarget{notes-on-contributors}{% -\subsection*{Notes on contributor(s)}\label{notes-on-contributors}} +\subsection*{Notes on contributor(s)}\label{notes-on-contributors} \addcontentsline{toc}{subsection}{Notes on contributor(s)} Daniel Lakens provided a review of many of the materials that have been incorporated into the update of TOSTER, and was the original author of -this package. Without his help and encouragment, the TOSTER package and +this package. Without his help and encouragement, the TOSTER package and this update would not exist. -\hypertarget{nomenclaturenotation}{% -\subsection*{Nomenclature/Notation}\label{nomenclaturenotation}} +\subsection*{Nomenclature/Notation}\label{nomenclaturenotation} \addcontentsline{toc}{subsection}{Nomenclature/Notation} \begin{itemize} @@ -1411,17 +2642,16 @@ \subsection*{Nomenclature/Notation}\label{nomenclaturenotation}} \item SMD: Standardized Mean Difference (e.g., Cohen's d) \item - TOST: Two-One Sided Tests + TOST: Two One-Sided Tests \item WMW: Wilcoxon-Mann-Whitney \end{itemize} -\hypertarget{notes}{% -\subsection*{Notes}\label{notes}} +\subsection*{Notes}\label{notes} \addcontentsline{toc}{subsection}{Notes} -The R package is also (partially) implemented in jamovi as the TOSTER -module. +The R package is also (partially) implemented in +\href{https://www.jamovi.org/}{jamovi} as the TOSTER module. \newpage diff --git a/papers/Avocado_Update/Avocado_Update_files/Avocado_Update_files/figure-docx/cdplot-1.png b/papers/Avocado_Update/Avocado_Update_files/Avocado_Update_files/figure-docx/cdplot-1.png new file mode 100644 index 00000000..acbc152c Binary files /dev/null and b/papers/Avocado_Update/Avocado_Update_files/Avocado_Update_files/figure-docx/cdplot-1.png differ diff --git a/papers/Avocado_Update/Avocado_Update_files/Avocado_Update_files/figure-docx/genericplot-1.png b/papers/Avocado_Update/Avocado_Update_files/Avocado_Update_files/figure-docx/genericplot-1.png new file mode 100644 index 00000000..0d39e217 Binary files /dev/null and b/papers/Avocado_Update/Avocado_Update_files/Avocado_Update_files/figure-docx/genericplot-1.png differ diff --git a/papers/Avocado_Update/Avocado_Update_files/Avocado_Update_files/figure-docx/hypplot-1.png b/papers/Avocado_Update/Avocado_Update_files/Avocado_Update_files/figure-docx/hypplot-1.png new file mode 100644 index 00000000..60927646 Binary files /dev/null and b/papers/Avocado_Update/Avocado_Update_files/Avocado_Update_files/figure-docx/hypplot-1.png differ diff --git a/papers/Avocado_Update/Avocado_Update_files/Avocado_Update_files/figure-docx/shplot1-1.png b/papers/Avocado_Update/Avocado_Update_files/Avocado_Update_files/figure-docx/shplot1-1.png new file mode 100644 index 00000000..6c498c07 Binary files /dev/null and b/papers/Avocado_Update/Avocado_Update_files/Avocado_Update_files/figure-docx/shplot1-1.png differ diff --git a/papers/Avocado_Update/Avocado_Update_files/Avocado_Update_files/figure-docx/symmplot-1.png b/papers/Avocado_Update/Avocado_Update_files/Avocado_Update_files/figure-docx/symmplot-1.png new file mode 100644 index 00000000..9a4e3ce7 Binary files /dev/null and b/papers/Avocado_Update/Avocado_Update_files/Avocado_Update_files/figure-docx/symmplot-1.png differ diff --git a/papers/Avocado_Update/Avocado_Update_files/Avocado_Update_files/figure-latex/cdplot-1.pdf b/papers/Avocado_Update/Avocado_Update_files/Avocado_Update_files/figure-latex/cdplot-1.pdf new file mode 100644 index 00000000..27ca4289 Binary files /dev/null and b/papers/Avocado_Update/Avocado_Update_files/Avocado_Update_files/figure-latex/cdplot-1.pdf differ diff --git a/papers/Avocado_Update/Avocado_Update_files/Avocado_Update_files/figure-latex/ecdfshift-1.pdf b/papers/Avocado_Update/Avocado_Update_files/Avocado_Update_files/figure-latex/ecdfshift-1.pdf new file mode 100644 index 00000000..94af70ce Binary files /dev/null and b/papers/Avocado_Update/Avocado_Update_files/Avocado_Update_files/figure-latex/ecdfshift-1.pdf differ diff --git a/papers/Avocado_Update/Avocado_Update_files/Avocado_Update_files/figure-latex/fig-symmplot-1.pdf b/papers/Avocado_Update/Avocado_Update_files/Avocado_Update_files/figure-latex/fig-symmplot-1.pdf new file mode 100644 index 00000000..d4a112ef Binary files /dev/null and b/papers/Avocado_Update/Avocado_Update_files/Avocado_Update_files/figure-latex/fig-symmplot-1.pdf differ diff --git a/papers/Avocado_Update/Avocado_Update_files/Avocado_Update_files/figure-latex/genericplot-1.pdf b/papers/Avocado_Update/Avocado_Update_files/Avocado_Update_files/figure-latex/genericplot-1.pdf new file mode 100644 index 00000000..46c16edb Binary files /dev/null and b/papers/Avocado_Update/Avocado_Update_files/Avocado_Update_files/figure-latex/genericplot-1.pdf differ diff --git a/papers/Avocado_Update/Avocado_Update_files/Avocado_Update_files/figure-latex/hypplot-1.pdf b/papers/Avocado_Update/Avocado_Update_files/Avocado_Update_files/figure-latex/hypplot-1.pdf new file mode 100644 index 00000000..d26ea9a3 Binary files /dev/null and b/papers/Avocado_Update/Avocado_Update_files/Avocado_Update_files/figure-latex/hypplot-1.pdf differ diff --git a/papers/Avocado_Update/Avocado_Update_files/Avocado_Update_files/figure-latex/shplot1-1.pdf b/papers/Avocado_Update/Avocado_Update_files/Avocado_Update_files/figure-latex/shplot1-1.pdf new file mode 100644 index 00000000..19e439e8 Binary files /dev/null and b/papers/Avocado_Update/Avocado_Update_files/Avocado_Update_files/figure-latex/shplot1-1.pdf differ diff --git a/papers/Avocado_Update/Avocado_Update_files/Avocado_Update_files/figure-latex/symmplot-1.pdf b/papers/Avocado_Update/Avocado_Update_files/Avocado_Update_files/figure-latex/symmplot-1.pdf new file mode 100644 index 00000000..29266e46 Binary files /dev/null and b/papers/Avocado_Update/Avocado_Update_files/Avocado_Update_files/figure-latex/symmplot-1.pdf differ diff --git a/papers/Avocado_Update/Avocado_Update_files/figure-docx/cdplot-1.pdf b/papers/Avocado_Update/Avocado_Update_files/figure-docx/cdplot-1.pdf index 50874930..9626cfd1 100644 Binary files a/papers/Avocado_Update/Avocado_Update_files/figure-docx/cdplot-1.pdf and b/papers/Avocado_Update/Avocado_Update_files/figure-docx/cdplot-1.pdf differ diff --git a/papers/Avocado_Update/Avocado_Update_files/figure-docx/cdplot-1.png b/papers/Avocado_Update/Avocado_Update_files/figure-docx/cdplot-1.png index 8228af45..acbc152c 100644 Binary files a/papers/Avocado_Update/Avocado_Update_files/figure-docx/cdplot-1.png and b/papers/Avocado_Update/Avocado_Update_files/figure-docx/cdplot-1.png differ diff --git a/papers/Avocado_Update/Avocado_Update_files/figure-docx/genericplot-1.pdf b/papers/Avocado_Update/Avocado_Update_files/figure-docx/genericplot-1.pdf new file mode 100644 index 00000000..27db30b5 Binary files /dev/null and b/papers/Avocado_Update/Avocado_Update_files/figure-docx/genericplot-1.pdf differ diff --git a/papers/Avocado_Update/Avocado_Update_files/figure-docx/genericplot-1.png b/papers/Avocado_Update/Avocado_Update_files/figure-docx/genericplot-1.png new file mode 100644 index 00000000..0d39e217 Binary files /dev/null and b/papers/Avocado_Update/Avocado_Update_files/figure-docx/genericplot-1.png differ diff --git a/papers/Avocado_Update/Avocado_Update_files/figure-docx/hypplot-1.pdf b/papers/Avocado_Update/Avocado_Update_files/figure-docx/hypplot-1.pdf index faf9c0d6..588e3fa2 100644 Binary files a/papers/Avocado_Update/Avocado_Update_files/figure-docx/hypplot-1.pdf and b/papers/Avocado_Update/Avocado_Update_files/figure-docx/hypplot-1.pdf differ diff --git a/papers/Avocado_Update/Avocado_Update_files/figure-docx/hypplot-1.png b/papers/Avocado_Update/Avocado_Update_files/figure-docx/hypplot-1.png index dd43061c..60927646 100644 Binary files a/papers/Avocado_Update/Avocado_Update_files/figure-docx/hypplot-1.png and b/papers/Avocado_Update/Avocado_Update_files/figure-docx/hypplot-1.png differ diff --git a/papers/Avocado_Update/Avocado_Update_files/figure-docx/shplot1-1.pdf b/papers/Avocado_Update/Avocado_Update_files/figure-docx/shplot1-1.pdf new file mode 100644 index 00000000..0b6afa5f Binary files /dev/null and b/papers/Avocado_Update/Avocado_Update_files/figure-docx/shplot1-1.pdf differ diff --git a/papers/Avocado_Update/Avocado_Update_files/figure-docx/shplot1-1.png b/papers/Avocado_Update/Avocado_Update_files/figure-docx/shplot1-1.png new file mode 100644 index 00000000..6c498c07 Binary files /dev/null and b/papers/Avocado_Update/Avocado_Update_files/figure-docx/shplot1-1.png differ diff --git a/papers/Avocado_Update/Avocado_Update_files/figure-docx/symmplot-1.pdf b/papers/Avocado_Update/Avocado_Update_files/figure-docx/symmplot-1.pdf new file mode 100644 index 00000000..f908bd56 Binary files /dev/null and b/papers/Avocado_Update/Avocado_Update_files/figure-docx/symmplot-1.pdf differ diff --git a/papers/Avocado_Update/Avocado_Update_files/figure-docx/symmplot-1.png b/papers/Avocado_Update/Avocado_Update_files/figure-docx/symmplot-1.png new file mode 100644 index 00000000..9a4e3ce7 Binary files /dev/null and b/papers/Avocado_Update/Avocado_Update_files/figure-docx/symmplot-1.png differ diff --git a/papers/Avocado_Update/Avocado_Update_files/figure-latex/cdplot-1.pdf b/papers/Avocado_Update/Avocado_Update_files/figure-latex/cdplot-1.pdf index 12a7977b..27ca4289 100644 Binary files a/papers/Avocado_Update/Avocado_Update_files/figure-latex/cdplot-1.pdf and b/papers/Avocado_Update/Avocado_Update_files/figure-latex/cdplot-1.pdf differ diff --git a/papers/Avocado_Update/Avocado_Update_files/figure-latex/ecdfshift-1.pdf b/papers/Avocado_Update/Avocado_Update_files/figure-latex/ecdfshift-1.pdf new file mode 100644 index 00000000..94af70ce Binary files /dev/null and b/papers/Avocado_Update/Avocado_Update_files/figure-latex/ecdfshift-1.pdf differ diff --git a/papers/Avocado_Update/Avocado_Update_files/figure-latex/fig-symmplot-1.pdf b/papers/Avocado_Update/Avocado_Update_files/figure-latex/fig-symmplot-1.pdf new file mode 100644 index 00000000..d4a112ef Binary files /dev/null and b/papers/Avocado_Update/Avocado_Update_files/figure-latex/fig-symmplot-1.pdf differ diff --git a/papers/Avocado_Update/Avocado_Update_files/figure-latex/genericplot-1.pdf b/papers/Avocado_Update/Avocado_Update_files/figure-latex/genericplot-1.pdf new file mode 100644 index 00000000..46c16edb Binary files /dev/null and b/papers/Avocado_Update/Avocado_Update_files/figure-latex/genericplot-1.pdf differ diff --git a/papers/Avocado_Update/Avocado_Update_files/figure-latex/hypplot-1.pdf b/papers/Avocado_Update/Avocado_Update_files/figure-latex/hypplot-1.pdf index 5ab7329c..d26ea9a3 100644 Binary files a/papers/Avocado_Update/Avocado_Update_files/figure-latex/hypplot-1.pdf and b/papers/Avocado_Update/Avocado_Update_files/figure-latex/hypplot-1.pdf differ diff --git a/papers/Avocado_Update/Avocado_Update_files/figure-latex/shplot1-1.pdf b/papers/Avocado_Update/Avocado_Update_files/figure-latex/shplot1-1.pdf new file mode 100644 index 00000000..19e439e8 Binary files /dev/null and b/papers/Avocado_Update/Avocado_Update_files/figure-latex/shplot1-1.pdf differ diff --git a/papers/Avocado_Update/Avocado_Update_files/figure-latex/symmplot-1.pdf b/papers/Avocado_Update/Avocado_Update_files/figure-latex/symmplot-1.pdf new file mode 100644 index 00000000..29266e46 Binary files /dev/null and b/papers/Avocado_Update/Avocado_Update_files/figure-latex/symmplot-1.pdf differ diff --git a/papers/Avocado_Update/campbell_lakens_supplement.zip b/papers/Avocado_Update/campbell_lakens_supplement.zip new file mode 100644 index 00000000..043b993e Binary files /dev/null and b/papers/Avocado_Update/campbell_lakens_supplement.zip differ diff --git a/papers/Avocado_Update/campbell_lakens_supplement/analysisdataset2018.csv b/papers/Avocado_Update/campbell_lakens_supplement/analysisdataset2018.csv new file mode 100644 index 00000000..530ba626 --- /dev/null +++ b/papers/Avocado_Update/campbell_lakens_supplement/analysisdataset2018.csv @@ -0,0 +1,12665 @@ +participant_ID,group,Age,DrinkingDays,drinksperday,Gender,itt,t,totaldrinking +1,A,24.00,0.00,0.00,Female,0,Baseline,0 +2,B,20.00,0.00,0.00,Female,0,Baseline,0 +3,C,19.00,0.00,0.00,Male,0,Baseline,0 +4,B,22.00,3.00,1.00,Male,1,Baseline,3 +5,A,21.00,0.00,0.00,Female,0,Baseline,0 +6,A,20.00,7.00,5.00,Male,1,Baseline,35 +7,A,22.00,0.00,0.00,Female,0,Baseline,0 +8,A,18.00,0.00,0.00,Female,0,Baseline,0 +10,A,23.00,12.0,7.00,Female,1,Baseline,84 +11,B,26.00,0.00,0.00,Male,0,Baseline,0 +12,A,20.00,1.00,1.00,Male,1,Baseline,1 +13,B,19.00,3.00,9.00,Male,1,Baseline,27 +14,A,24.00,2.00,2.00,Male,1,Baseline,4 +15,A,26.00,0.00,0.00,Male,0,Baseline,0 +16,A,20.00,7.00,5.00,Female,1,Baseline,35 +17,A,19.00,18.0,12.0,Male,1,Baseline,216 +19,A,21.00,4.00,2.00,Male,1,Baseline,8 +20,A,26.00,0.00,0.00,Female,0,Baseline,0 +21,C,21.00,2.00,3.00,Female,1,Baseline,6 +22,C,19.00,0.00,0.00,Male,0,Baseline,0 +23,B,22.00,0.00,0.00,Male,0,Baseline,0 +25,A,18.00,0.00,0.00,Female,0,Baseline,0 +26,C,23.00,0.00,0.00,Female,0,Baseline,0 +28,A,20.00,0.00,0.00,Female,0,Baseline,0 +29,C,24.00,3.00,1.00,Female,1,Baseline,3 +30,A,22.00,0.00,0.00,Female,0,Baseline,0 +31,C,31.00,0.00,0.00,Male,0,Baseline,0 +32,B,22.00,10.0,2.00,Female,1,Baseline,20 +34,A,22.00,3.00,8.00,Female,1,Baseline,24 +35,C,27.00,2.00,1.00,Male,1,Baseline,2 +36,A,42.00,0.00,0.00,Female,0,Baseline,0 +37,B,39.00,0.00,0.00,Male,0,Baseline,0 +38,C,23.00,4.00,3.00,Female,1,Baseline,12 +39,A,28.00,9.00,1.00,Female,1,Baseline,9 +41,B,33.00,3.00,2.00,Female,1,Baseline,6 +43,B,24.00,0.00,0.00,Female,0,Baseline,0 +44,A,21.00,5.00,4.00,Male,1,Baseline,20 +45,A,19.00,3.00,6.00,Female,1,Baseline,18 +50,C,19.00,1.00,2.00,Female,1,Baseline,2 +52,B,20.00,2.00,13.0,Male,1,Baseline,26 +53,B,20.00,25.0,2.00,Male,1,Baseline,50 +54,C,18.00,18.0,2.00,Female,1,Baseline,36 +55,C,20.00,0.00,0.00,Female,0,Baseline,0 +56,C,23.00,0.00,0.00,Male,0,Baseline,0 +57,B,22.00,0.00,0.00,Female,0,Baseline,0 +59,A,18.00,4.00,4.00,Female,1,Baseline,16 +60,C,19.00,2.00,7.00,Female,1,Baseline,14 +62,B,19.00,0.00,0.00,Male,0,Baseline,0 +63,B,27.00,4.00,7.00,Male,1,Baseline,28 +64,B,22.00,3.00,2.00,Female,1,Baseline,6 +66,A,20.00,2.00,4.00,Male,1,Baseline,8 +67,C,49.00,2.00,3.00,Female,1,Baseline,6 +68,B,20.00,4.00,8.00,Male,1,Baseline,32 +72,C,22.00,1.00,7.00,Female,1,Baseline,7 +73,C,22.00,2.00,6.00,Male,1,Baseline,12 +74,B,54.00,10.0,1.00,Male,1,Baseline,10 +75,A,23.00,8.00,2.00,Female,1,Baseline,16 +76,A,21.00,20.0,1.00,Male,1,Baseline,20 +78,B,28.00,0.00,0.00,Male,0,Baseline,0 +79,B,27.00,2.00,1.00,Male,1,Baseline,2 +82,B,50.00,17.0,2.00,Female,1,Baseline,34 +83,A,35.00,0.00,0.00,Male,0,Baseline,0 +85,B,21.00,6.00,1.00,Female,1,Baseline,6 +87,B,18.00,2.00,6.00,Female,1,Baseline,12 +89,A,20.00,2.00,5.00,Female,1,Baseline,10 +90,A,31.00,4.00,2.00,Male,1,Baseline,8 +91,C,25.00,7.00,1.00,Female,1,Baseline,7 +94,B,22.00,7.00,4.00,Female,1,Baseline,28 +95,C,21.00,5.00,5.00,Female,1,Baseline,25 +96,B,67.00,7.00,1.00,Female,1,Baseline,7 +97,C,23.00,15.0,1.00,Female,1,Baseline,15 +98,A,19.00,4.00,,Male,1,Baseline, +99,B,20.00,3.00,4.00,Female,1,Baseline,12 +100,C,23.00,4.00,2.00,Male,1,Baseline,8 +101,C,46.00,0.00,0.00,Female,0,Baseline,0 +102,A,20.00,0.00,0.00,Female,0,Baseline,0 +103,B,21.00,8.00,2.00,Male,1,Baseline,16 +104,A,47.00,20.0,2.00,Female,1,Baseline,40 +105,B,32.00,10.0,1.00,Male,1,Baseline,10 +106,C,29.00,0.00,0.00,Female,0,Baseline,0 +107,A,19.00,5.00,3.00,Male,1,Baseline,15 +108,C,38.00,3.00,1.00,Male,1,Baseline,3 +109,C,40.00,12.0,1.00,Female,1,Baseline,12 +110,A,18.00,0.00,0.00,Female,0,Baseline,0 +112,B,21.00,4.00,3.00,Female,1,Baseline,12 +113,A,20.00,0.00,0.00,Female,0,Baseline,0 +114,C,17.00,0.00,0.00,Female,0,Baseline,0 +115,C,22.00,3.00,3.00,Female,1,Baseline,9 +116,B,26.00,9.00,2.00,Female,1,Baseline,18 +117,A,21.00,0.00,0.00,Male,0,Baseline,0 +118,B,20.00,7.00,4.00,Female,1,Baseline,28 +119,C,22.00,0.00,0.00,Male,0,Baseline,0 +120,A,23.00,12.0,3.00,Female,1,Baseline,36 +121,A,18.00,2.00,3.00,Male,1,Baseline,6 +122,B,21.00,16.0,2.00,Female,1,Baseline,32 +123,A,18.00,0.00,0.00,Female,0,Baseline,0 +124,A,45.00,1.00,1.00,Female,1,Baseline,1 +125,A,20.00,1.00,5.00,Female,1,Baseline,5 +126,B,22.00,2.00,2.00,Female,1,Baseline,4 +127,A,44.00,12.0,3.00,Female,1,Baseline,36 +128,B,19.00,5.00,8.00,Female,1,Baseline,40 +129,C,23.00,3.00,5.00,Female,1,Baseline,15 +130,B,34.00,4.00,2.00,Female,1,Baseline,8 +131,C,20.00,5.00,1.00,Male,1,Baseline,5 +132,A,21.00,18.0,2.00,Male,1,Baseline,36 +136,A,34.00,0.00,0.00,Female,0,Baseline,0 +137,A,22.00,0.00,0.00,Female,0,Baseline,0 +139,B,28.00,10.0,2.00,Female,1,Baseline,20 +141,A,30.00,0.00,0.00,Female,0,Baseline,0 +143,C,19.00,7.00,15.0,Male,1,Baseline,105 +144,C,22.00,0.00,0.00,Female,0,Baseline,0 +145,A,36.00,4.00,3.00,Male,1,Baseline,12 +146,A,18.00,3.00,2.00,Female,1,Baseline,6 +147,C,18.00,3.00,6.00,Female,1,Baseline,18 +150,B,18.00,4.00,4.00,Male,1,Baseline,16 +151,B,26.00,0.00,0.00,Female,0,Baseline,0 +152,C,27.00,10.0,2.00,Female,1,Baseline,20 +153,A,23.00,0.00,0.00,Female,0,Baseline,0 +154,C,21.00,4.00,2.00,Female,1,Baseline,8 +156,B,21.00,0.00,0.00,Male,0,Baseline,0 +159,A,19.00,1.00,1.00,Female,1,Baseline,1 +160,B,37.00,5.00,2.00,Male,1,Baseline,10 +161,B,20.00,7.00,2.00,Female,1,Baseline,14 +162,C,19.00,4.00,6.00,Female,1,Baseline,24 +163,C,20.00,2.00,4.00,Female,1,Baseline,8 +164,B,21.00,4.00,8.00,Female,1,Baseline,32 +165,C,40.00,9.00,2.00,Male,1,Baseline,18 +167,A,45.00,10.0,1.00,Female,1,Baseline,10 +168,C,22.00,3.00,4.00,Female,1,Baseline,12 +169,B,24.00,10.0,2.00,Female,1,Baseline,20 +170,C,20.00,9.00,8.00,Female,1,Baseline,72 +171,C,26.00,4.00,1.00,Male,1,Baseline,4 +172,A,20.00,1.00,1.00,Male,1,Baseline,1 +173,A,25.00,0.00,0.00,Female,0,Baseline,0 +174,C,50.00,28.0,1.00,Female,1,Baseline,28 +175,A,22.00,0.00,0.00,Female,0,Baseline,0 +180,A,20.00,2.00,2.00,Female,1,Baseline,4 +181,A,25.00,6.00,6.00,Female,1,Baseline,36 +182,A,24.00,14.0,1.00,Male,1,Baseline,14 +183,C,18.00,0.00,0.00,Male,0,Baseline,0 +184,C,18.00,1.00,1.00,Female,1,Baseline,1 +185,A,50.00,0.00,0.00,Male,0,Baseline,0 +186,C,39.00,0.00,0.00,Female,0,Baseline,0 +187,C,47.00,8.00,3.00,Female,1,Baseline,24 +188,A,17.00,0.00,0.00,Female,0,Baseline,0 +189,A,18.00,0.00,0.00,Female,0,Baseline,0 +190,C,25.00,4.00,2.00,Male,1,Baseline,8 +191,B,18.00,2.00,1.00,Female,1,Baseline,2 +192,B,30.00,10.0,1.00,Female,1,Baseline,10 +194,A,41.00,6.00,5.00,Male,1,Baseline,30 +195,A,23.00,1.00,1.00,Female,1,Baseline,1 +196,B,23.00,4.00,1.00,Male,1,Baseline,4 +198,B,22.00,4.00,4.00,Female,1,Baseline,16 +200,C,39.00,16.0,1.00,Female,1,Baseline,16 +201,A,22.00,2.00,1.00,Male,1,Baseline,2 +202,A,18.00,0.00,0.00,Male,0,Baseline,0 +203,C,23.00,4.00,7.00,Female,1,Baseline,28 +204,B,22.00,0.00,0.00,Female,0,Baseline,0 +205,A,21.00,4.00,5.00,Female,1,Baseline,20 +206,A,43.00,8.00,1.00,Female,1,Baseline,8 +207,C,19.00,0.00,0.00,Female,0,Baseline,0 +208,C,26.00,10.0,2.00,Female,1,Baseline,20 +209,B,21.00,0.00,0.00,Female,0,Baseline,0 +211,A,21.00,2.00,8.00,Female,1,Baseline,16 +212,A,20.00,0.00,0.00,Female,0,Baseline,0 +213,B,37.00,6.00,1.00,Female,1,Baseline,6 +214,C,29.00,6.00,1.00,Male,1,Baseline,6 +215,A,30.00,10.0,2.00,Male,1,Baseline,20 +216,C,19.00,0.00,0.00,Male,0,Baseline,0 +217,A,25.00,2.00,2.00,Female,1,Baseline,4 +218,A,24.00,7.00,5.00,Female,1,Baseline,35 +219,B,20.00,8.00,4.00,Male,1,Baseline,32 +220,C,23.00,10.0,1.00,Female,1,Baseline,10 +221,A,46.00,18.0,2.00,Female,1,Baseline,36 +222,C,31.00,3.00,1.00,Male,1,Baseline,3 +223,A,48.00,9.00,2.00,Female,1,Baseline,18 +224,A,18.00,2.00,2.00,Male,1,Baseline,4 +225,A,31.00,2.00,15.0,Female,1,Baseline,30 +226,C,22.00,10.0,4.00,Female,1,Baseline,40 +228,B,36.00,0.00,0.00,Male,0,Baseline,0 +229,C,20.00,0.00,0.00,Female,0,Baseline,0 +230,C,44.00,10.0,3.00,Female,1,Baseline,30 +231,A,19.00,0.00,0.00,Female,0,Baseline,0 +232,C,29.00,14.0,1.00,Female,1,Baseline,14 +233,C,19.00,0.00,0.00,Female,0,Baseline,0 +234,C,18.00,2.00,1.00,Male,1,Baseline,2 +235,B,45.00,14.0,1.00,Female,1,Baseline,14 +236,B,18.00,4.00,5.00,Female,1,Baseline,20 +237,A,21.00,10.0,3.00,Female,1,Baseline,30 +238,B,26.00,16.0,2.00,Female,1,Baseline,32 +240,B,22.00,0.00,0.00,Female,0,Baseline,0 +241,B,26.00,5.00,1.00,Male,1,Baseline,5 +242,B,19.00,6.00,1.00,Female,1,Baseline,6 +244,A,20.00,5.00,5.00,Male,1,Baseline,25 +245,C,19.00,3.00,5.00,Female,1,Baseline,15 +246,B,26.00,8.00,3.00,Female,1,Baseline,24 +247,C,45.00,6.00,2.00,Male,1,Baseline,12 +248,C,25.00,6.00,2.00,Female,1,Baseline,12 +249,A,18.00,1.00,5.00,Female,1,Baseline,5 +250,B,30.00,0.00,0.00,Female,0,Baseline,0 +251,B,21.00,2.00,6.00,Female,1,Baseline,12 +253,B,31.00,3.00,1.00,Female,1,Baseline,3 +254,A,32.00,0.00,0.00,Male,0,Baseline,0 +255,A,29.00,8.00,7.00,Female,1,Baseline,56 +257,B,27.00,6.00,1.00,Female,1,Baseline,6 +258,C,21.00,0.00,0.00,Female,0,Baseline,0 +259,C,23.00,3.00,4.00,Female,1,Baseline,12 +260,C,20.00,6.00,5.00,Male,1,Baseline,30 +261,C,22.00,2.00,20.0,Male,1,Baseline,40 +262,B,19.00,4.00,8.00,Female,1,Baseline,32 +263,A,21.00,4.00,6.00,Male,1,Baseline,24 +265,C,20.00,25.0,3.00,Male,1,Baseline,75 +267,B,24.00,1.00,1.00,Female,1,Baseline,1 +268,B,27.00,2.00,4.00,Female,1,Baseline,8 +269,C,47.00,0.00,0.00,Female,0,Baseline,0 +270,A,20.00,6.00,2.00,Female,1,Baseline,12 +271,B,21.00,0.00,0.00,Male,0,Baseline,0 +272,C,22.00,5.00,2.00,Male,1,Baseline,10 +273,A,19.00,0.00,0.00,Female,0,Baseline,0 +276,A,44.00,0.00,0.00,Female,0,Baseline,0 +277,A,21.00,0.00,0.00,Female,0,Baseline,0 +278,A,25.00,7.00,3.00,Male,1,Baseline,21 +279,C,22.00,5.00,3.00,Female,1,Baseline,15 +282,A,22.00,3.00,1.00,Female,1,Baseline,3 +283,A,19.00,1.00,3.00,Female,1,Baseline,3 +285,A,26.00,14.0,2.00,Male,1,Baseline,28 +286,B,22.00,3.00,2.00,Female,1,Baseline,6 +287,C,19.00,9.00,10.0,Female,1,Baseline,90 +288,C,54.00,9.00,2.00,Male,1,Baseline,18 +289,C,38.00,12.0,2.00,Male,1,Baseline,24 +290,A,18.00,3.00,2.00,Female,1,Baseline,6 +291,C,52.00,1.00,1.00,Female,1,Baseline,1 +292,C,20.00,2.00,4.00,Female,1,Baseline,8 +293,C,18.00,3.00,4.00,Female,1,Baseline,12 +294,A,27.00,2.00,4.00,Male,1,Baseline,8 +296,A,20.00,4.00,12.0,Male,1,Baseline,48 +297,B,20.00,4.00,6.00,Female,1,Baseline,24 +298,C,23.00,3.00,1.00,Female,1,Baseline,3 +300,A,20.00,0.00,0.00,Female,0,Baseline,0 +301,B,19.00,9.00,4.00,Female,1,Baseline,36 +302,A,22.00,2.00,1.00,Male,1,Baseline,2 +306,B,23.00,5.00,4.00,Female,1,Baseline,20 +307,B,22.00,3.00,6.00,Female,1,Baseline,18 +308,A,19.00,5.00,5.00,Female,1,Baseline,25 +309,A,40.00,12.0,1.00,Female,1,Baseline,12 +310,A,18.00,4.00,4.00,Female,1,Baseline,16 +311,C,45.00,3.00,1.00,Female,1,Baseline,3 +312,A,22.00,4.00,8.00,Female,1,Baseline,32 +313,C,27.00,22.0,3.00,Female,1,Baseline,66 +314,A,51.00,1.00,1.00,Female,1,Baseline,1 +315,A,21.00,8.00,5.00,Female,1,Baseline,40 +316,C,20.00,7.00,14.0,Male,1,Baseline,98 +317,C,23.00,2.00,10.0,Male,1,Baseline,20 +318,A,19.00,3.00,6.00,Female,1,Baseline,18 +319,B,22.00,5.00,2.00,Female,1,Baseline,10 +320,B,19.00,1.00,3.00,Female,1,Baseline,3 +321,B,21.00,0.00,0.00,Female,0,Baseline,0 +322,C,50.00,20.0,6.00,Male,1,Baseline,120 +323,A,22.00,4.00,2.00,Female,1,Baseline,8 +324,A,20.00,5.00,2.00,Female,1,Baseline,10 +325,C,21.00,6.00,20.0,Male,1,Baseline,120 +326,C,28.00,0.00,0.00,Female,0,Baseline,0 +327,A,53.00,0.00,0.00,Male,0,Baseline,0 +328,A,49.00,6.00,2.00,Female,1,Baseline,12 +329,B,21.00,2.00,8.00,Female,1,Baseline,16 +330,A,41.00,28.0,4.00,Female,1,Baseline,112 +331,A,26.00,0.00,0.00,Female,0,Baseline,0 +332,C,21.00,4.00,8.00,Female,1,Baseline,32 +333,B,23.00,4.00,2.00,Female,1,Baseline,8 +334,C,25.00,2.00,2.00,Female,1,Baseline,4 +335,C,23.00,3.00,1.00,Female,1,Baseline,3 +336,A,18.00,7.00,7.00,Female,1,Baseline,49 +338,B,20.00,0.00,0.00,Female,0,Baseline,0 +339,A,39.00,2.00,4.00,Male,1,Baseline,8 +341,B,26.00,8.00,1.00,Female,1,Baseline,8 +342,A,21.00,5.00,5.00,Female,1,Baseline,25 +343,B,18.00,6.00,5.00,Female,1,Baseline,30 +344,B,20.00,0.00,0.00,Female,0,Baseline,0 +346,A,52.00,0.00,0.00,Male,0,Baseline,0 +347,B,20.00,2.00,2.00,Female,1,Baseline,4 +349,C,22.00,4.00,8.00,Female,1,Baseline,32 +350,B,18.00,1.00,1.00,Female,1,Baseline,1 +352,C,24.00,4.00,1.00,Female,1,Baseline,4 +354,C,20.00,6.00,2.00,Male,1,Baseline,12 +355,A,53.00,2.00,2.00,Female,1,Baseline,4 +357,B,22.00,3.00,2.00,Male,1,Baseline,6 +358,B,19.00,1.00,4.00,Female,1,Baseline,4 +359,B,19.00,5.00,3.00,Female,1,Baseline,15 +360,C,18.00,3.00,1.00,Female,1,Baseline,3 +361,B,22.00,14.0,1.00,Male,1,Baseline,14 +362,C,35.00,0.00,0.00,Male,0,Baseline,0 +363,B,21.00,4.00,1.00,Male,1,Baseline,4 +364,A,23.00,4.00,2.00,Female,1,Baseline,8 +365,B,26.00,2.00,1.00,Female,1,Baseline,2 +366,A,21.00,1.00,3.00,Female,1,Baseline,3 +367,B,22.00,9.00,1.00,Female,1,Baseline,9 +368,B,20.00,2.00,5.00,Female,1,Baseline,10 +369,C,19.00,7.00,7.00,Male,1,Baseline,49 +371,A,21.00,2.00,8.00,Female,1,Baseline,16 +372,A,30.00,15.0,1.00,Male,1,Baseline,15 +373,C,22.00,1.00,6.00,Male,1,Baseline,6 +374,A,40.00,0.00,0.00,Female,0,Baseline,0 +375,A,22.00,4.00,8.00,Male,1,Baseline,32 +376,B,20.00,15.0,2.00,Male,1,Baseline,30 +378,C,19.00,1.00,1.00,Male,1,Baseline,1 +379,C,23.00,0.00,0.00,Female,0,Baseline,0 +381,A,22.00,4.00,5.00,Male,1,Baseline,20 +382,C,23.00,6.00,5.00,Male,1,Baseline,30 +383,B,21.00,0.00,0.00,Male,0,Baseline,0 +384,B,20.00,1.00,4.00,Female,1,Baseline,4 +385,B,24.00,0.00,0.00,Female,0,Baseline,0 +386,C,20.00,0.00,0.00,Female,0,Baseline,0 +387,C,56.00,0.00,0.00,Female,0,Baseline,0 +388,A,32.00,21.0,2.00,Female,1,Baseline,42 +389,C,19.00,5.00,3.00,Male,1,Baseline,15 +390,C,22.00,0.00,0.00,Female,0,Baseline,0 +391,C,21.00,0.00,0.00,Male,0,Baseline,0 +393,A,19.00,4.00,4.00,Female,1,Baseline,16 +394,A,22.00,14.0,3.00,Female,1,Baseline,42 +395,C,22.00,0.00,0.00,Male,0,Baseline,0 +396,A,19.00,3.00,1.00,Female,1,Baseline,3 +397,A,20.00,0.00,0.00,Female,0,Baseline,0 +398,A,20.00,3.00,6.00,Male,1,Baseline,18 +399,C,22.00,3.00,4.00,Female,1,Baseline,12 +400,B,20.00,4.00,8.00,Female,1,Baseline,32 +401,A,20.00,4.00,4.00,Female,1,Baseline,16 +402,C,24.00,6.00,1.00,Female,1,Baseline,6 +404,C,20.00,2.00,3.00,Female,1,Baseline,6 +405,B,47.00,12.0,10.0,Male,1,Baseline,120 +406,A,41.00,0.00,0.00,Female,0,Baseline,0 +407,C,23.00,2.00,10.0,Male,1,Baseline,20 +409,A,26.00,6.00,1.00,Female,1,Baseline,6 +410,A,19.00,1.00,16.0,Female,1,Baseline,16 +411,A,22.00,7.00,18.0,Male,1,Baseline,126 +412,A,31.00,0.00,0.00,Female,0,Baseline,0 +414,C,18.00,8.00,17.0,Male,1,Baseline,136 +416,C,23.00,1.00,4.00,Female,1,Baseline,4 +418,A,35.00,6.00,1.00,Female,1,Baseline,6 +420,B,36.00,10.0,1.00,Male,1,Baseline,10 +421,B,24.00,6.00,3.00,Female,1,Baseline,18 +424,A,21.00,2.00,3.00,Female,1,Baseline,6 +425,B,29.00,4.00,10.0,Female,1,Baseline,40 +426,A,50.00,22.0,2.00,Female,1,Baseline,44 +427,C,22.00,2.00,3.00,Male,1,Baseline,6 +428,A,20.00,7.00,12.0,Male,1,Baseline,84 +429,B,21.00,1.00,3.00,Female,1,Baseline,3 +430,B,21.00,16.0,3.00,Male,1,Baseline,48 +431,A,19.00,3.00,1.00,Male,1,Baseline,3 +432,A,22.00,0.00,0.00,Female,0,Baseline,0 +433,B,24.00,0.00,0.00,Female,0,Baseline,0 +434,B,28.00,7.00,3.00,Male,1,Baseline,21 +435,B,34.00,1.00,1.00,Male,1,Baseline,1 +436,C,18.00,0.00,0.00,Female,0,Baseline,0 +437,A,21.00,4.00,2.00,Female,1,Baseline,8 +438,B,24.00,3.00,9.00,Male,1,Baseline,27 +439,C,22.00,4.00,2.00,Male,1,Baseline,8 +440,C,19.00,5.00,3.00,Female,1,Baseline,15 +441,B,22.00,3.00,5.00,Female,1,Baseline,15 +442,A,23.00,17.0,1.00,Male,1,Baseline,17 +443,B,44.00,27.0,1.00,Female,1,Baseline,27 +444,C,20.00,4.00,10.0,Male,1,Baseline,40 +445,A,30.00,4.00,1.00,Male,1,Baseline,4 +446,A,19.00,1.00,5.00,Female,1,Baseline,5 +448,A,18.00,1.00,1.00,Female,1,Baseline,1 +449,C,19.00,2.00,4.00,Male,1,Baseline,8 +451,C,23.00,3.00,15.0,Male,1,Baseline,45 +452,B,24.00,10.0,2.00,Female,1,Baseline,20 +453,A,22.00,6.00,4.00,Female,1,Baseline,24 +454,B,23.00,2.00,10.0,Female,1,Baseline,20 +455,A,23.00,0.00,0.00,Female,0,Baseline,0 +456,A,20.00,6.00,9.00,Female,1,Baseline,54 +457,C,20.00,1.00,3.00,Female,1,Baseline,3 +458,A,25.00,22.0,4.00,Female,1,Baseline,88 +459,A,22.00,4.00,8.00,Female,1,Baseline,32 +460,C,49.00,0.00,0.00,Female,0,Baseline,0 +462,B,22.00,4.00,3.00,Female,1,Baseline,12 +463,B,29.00,12.0,2.00,Female,1,Baseline,24 +464,A,19.00,0.00,0.00,Female,0,Baseline,0 +465,B,21.00,3.00,14.0,Male,1,Baseline,42 +467,C,23.00,0.00,0.00,Female,0,Baseline,0 +468,A,21.00,4.00,8.00,Male,1,Baseline,32 +469,C,19.00,1.00,2.00,Male,1,Baseline,2 +470,A,24.00,3.00,2.00,Male,1,Baseline,6 +471,B,21.00,9.00,9.00,Male,1,Baseline,81 +472,A,19.00,5.00,2.00,Female,1,Baseline,10 +473,B,21.00,1.00,6.00,Female,1,Baseline,6 +474,B,36.00,1.00,1.00,Female,1,Baseline,1 +475,C,56.00,1.00,1.00,Male,1,Baseline,1 +476,A,23.00,0.00,0.00,Female,0,Baseline,0 +477,B,18.00,1.00,1.00,Female,1,Baseline,1 +478,C,19.00,9.00,10.0,Male,1,Baseline,90 +479,A,26.00,4.00,4.00,Male,1,Baseline,16 +480,C,41.00,1.00,1.00,Female,1,Baseline,1 +481,B,42.00,1.00,1.00,Male,1,Baseline,1 +482,C,27.00,4.00,2.00,Female,1,Baseline,8 +483,A,51.00,14.0,2.00,Male,1,Baseline,28 +484,B,23.00,6.00,2.00,Female,1,Baseline,12 +485,B,19.00,2.00,4.00,Male,1,Baseline,8 +486,C,21.00,3.00,1.00,Female,1,Baseline,3 +487,A,28.00,4.00,1.00,Female,1,Baseline,4 +489,C,28.00,1.00,1.00,Female,1,Baseline,1 +490,C,22.00,14.0,4.00,Female,1,Baseline,56 +491,C,21.00,3.00,1.00,Female,1,Baseline,3 +492,A,21.00,2.00,12.0,Female,1,Baseline,24 +493,B,20.00,2.00,2.00,Female,1,Baseline,4 +494,C,21.00,0.00,0.00,Female,0,Baseline,0 +495,C,35.00,12.0,2.00,Male,1,Baseline,24 +496,A,22.00,4.00,2.00,Female,1,Baseline,8 +497,C,20.00,4.00,2.00,Female,1,Baseline,8 +498,B,33.00,0.00,0.00,Female,0,Baseline,0 +500,B,32.00,1.00,2.00,Male,1,Baseline,2 +501,A,35.00,3.00,1.00,Male,1,Baseline,3 +502,C,45.00,0.00,0.00,Male,0,Baseline,0 +503,B,23.00,2.00,2.00,Male,1,Baseline,4 +504,A,22.00,10.0,3.00,Male,1,Baseline,30 +505,C,19.00,1.00,8.00,Female,1,Baseline,8 +506,B,20.00,6.00,8.00,Female,1,Baseline,48 +508,B,19.00,2.00,7.00,Female,1,Baseline,14 +509,C,18.00,6.00,8.00,Female,1,Baseline,48 +510,B,37.00,8.00,2.00,Female,1,Baseline,16 +511,A,34.00,14.0,1.00,Female,1,Baseline,14 +512,C,29.00,1.00,4.00,Female,1,Baseline,4 +513,A,37.00,6.00,1.00,Female,1,Baseline,6 +514,B,36.00,10.0,1.00,Male,1,Baseline,10 +515,B,19.00,5.00,8.00,Female,1,Baseline,40 +516,A,24.00,6.00,1.00,Female,1,Baseline,6 +517,A,22.00,3.00,1.00,Female,1,Baseline,3 +518,C,25.00,19.0,1.00,Female,1,Baseline,19 +519,A,17.00,4.00,3.00,Female,1,Baseline,12 +520,A,19.00,4.00,1.00,Male,1,Baseline,4 +521,B,42.00,6.00,1.00,Female,1,Baseline,6 +522,B,34.00,0.00,0.00,Female,0,Baseline,0 +523,A,22.00,2.00,7.00,Male,1,Baseline,14 +524,C,20.00,1.00,3.00,Female,1,Baseline,3 +525,A,39.00,3.00,1.00,Female,1,Baseline,3 +526,C,49.00,4.00,2.00,Female,1,Baseline,8 +528,C,20.00,2.00,1.00,Female,1,Baseline,2 +529,C,47.00,8.00,2.00,Male,1,Baseline,16 +530,A,25.00,0.00,0.00,Male,0,Baseline,0 +531,B,20.00,6.00,4.00,Male,1,Baseline,24 +532,B,20.00,0.00,0.00,Female,0,Baseline,0 +533,C,21.00,4.00,7.00,Female,1,Baseline,28 +534,A,61.00,8.00,2.00,Female,1,Baseline,16 +536,C,20.00,1.00,1.00,Male,1,Baseline,1 +537,C,18.00,3.00,7.00,Female,1,Baseline,21 +538,A,19.00,12.0,11.0,Female,1,Baseline,132 +539,B,42.00,1.00,1.00,Female,1,Baseline,1 +541,A,44.00,1.00,1.00,Female,1,Baseline,1 +542,A,18.00,4.00,8.00,Female,1,Baseline,32 +543,A,19.00,1.00,2.00,Male,1,Baseline,2 +544,B,22.00,0.00,0.00,Female,0,Baseline,0 +545,A,18.00,0.00,0.00,Female,0,Baseline,0 +546,C,18.00,3.00,5.00,Male,1,Baseline,15 +547,C,26.00,3.00,1.00,Female,1,Baseline,3 +549,B,21.00,0.00,0.00,Male,0,Baseline,0 +550,C,22.00,0.00,0.00,Male,0,Baseline,0 +552,B,21.00,5.00,9.00,Male,1,Baseline,45 +553,C,19.00,10.0,3.00,Male,1,Baseline,30 +554,C,19.00,0.00,0.00,Female,0,Baseline,0 +555,A,24.00,4.00,2.00,Female,1,Baseline,8 +556,C,21.00,0.00,0.00,Female,0,Baseline,0 +557,A,47.00,12.0,2.00,Female,1,Baseline,24 +558,B,25.00,0.00,0.00,Female,0,Baseline,0 +559,C,19.00,0.00,0.00,Female,0,Baseline,0 +560,C,42.00,0.00,0.00,Female,0,Baseline,0 +561,B,30.00,7.00,2.00,Female,1,Baseline,14 +562,B,24.00,5.00,3.00,Female,1,Baseline,15 +563,B,27.00,0.00,0.00,Male,0,Baseline,0 +564,B,19.00,10.0,12.0,Female,1,Baseline,120 +565,C,46.00,0.00,0.00,Female,0,Baseline,0 +566,A,26.00,3.00,1.00,Female,1,Baseline,3 +567,C,23.00,3.00,1.00,Female,1,Baseline,3 +568,B,26.00,3.00,1.00,Male,1,Baseline,3 +569,A,22.00,0.00,0.00,Female,0,Baseline,0 +570,B,20.00,3.00,1.00,Female,1,Baseline,3 +571,A,19.00,4.00,4.00,Female,1,Baseline,16 +572,A,20.00,1.00,9.00,Female,1,Baseline,9 +573,A,20.00,2.00,1.00,Female,1,Baseline,2 +574,B,22.00,10.0,1.00,Male,1,Baseline,10 +576,A,19.00,4.00,6.00,Male,1,Baseline,24 +577,A,19.00,6.00,8.00,Female,1,Baseline,48 +579,B,20.00,6.00,4.00,Male,1,Baseline,24 +580,C,21.00,4.00,3.00,Female,1,Baseline,12 +583,A,21.00,5.00,2.00,Female,1,Baseline,10 +584,C,25.00,3.00,2.00,Male,1,Baseline,6 +587,B,30.00,1.00,1.00,Female,1,Baseline,1 +588,A,22.00,4.00,3.00,Female,1,Baseline,12 +589,A,50.00,16.0,1.00,Male,1,Baseline,16 +591,A,35.00,1.00,4.00,Male,1,Baseline,4 +592,C,26.00,4.00,2.00,Male,1,Baseline,8 +593,B,20.00,7.00,7.00,Female,1,Baseline,49 +595,C,41.00,27.0,3.00,Female,1,Baseline,81 +596,A,20.00,4.00,6.00,Female,1,Baseline,24 +597,B,24.00,3.00,2.00,Female,1,Baseline,6 +598,C,29.00,5.00,6.00,Female,1,Baseline,30 +601,A,21.00,4.00,3.00,Female,1,Baseline,12 +603,A,19.00,0.00,0.00,Female,0,Baseline,0 +604,C,63.00,0.00,0.00,Female,0,Baseline,0 +605,C,23.00,2.00,8.00,Female,1,Baseline,16 +606,A,26.00,4.00,6.00,Female,1,Baseline,24 +608,A,23.00,2.00,2.00,Female,1,Baseline,4 +609,C,31.00,5.00,1.00,Male,1,Baseline,5 +610,A,21.00,6.00,4.00,Female,1,Baseline,24 +611,B,20.00,1.00,1.00,Female,1,Baseline,1 +612,A,19.00,0.00,0.00,Male,0,Baseline,0 +613,A,24.00,0.00,0.00,Female,0,Baseline,0 +614,B,20.00,6.00,5.00,Male,1,Baseline,30 +615,C,24.00,4.00,7.00,Male,1,Baseline,28 +616,C,22.00,2.00,3.00,Female,1,Baseline,6 +619,B,22.00,4.00,6.00,Female,1,Baseline,24 +620,A,19.00,5.00,12.0,Male,1,Baseline,60 +621,A,51.00,28.0,3.00,Female,1,Baseline,84 +622,A,18.00,5.00,4.00,Female,1,Baseline,20 +623,A,19.00,0.00,0.00,Female,0,Baseline,0 +624,A,34.00,0.00,0.00,Male,0,Baseline,0 +625,B,20.00,2.00,6.00,Female,1,Baseline,12 +628,B,24.00,8.00,1.00,Male,1,Baseline,8 +629,A,19.00,6.00,8.00,Female,1,Baseline,48 +630,B,19.00,0.00,0.00,Male,0,Baseline,0 +631,A,19.00,0.00,0.00,Female,0,Baseline,0 +632,B,22.00,1.00,10.0,Female,1,Baseline,10 +633,C,25.00,3.00,2.00,Male,1,Baseline,6 +634,A,20.00,4.00,5.00,Female,1,Baseline,20 +635,A,30.00,6.00,10.0,Female,1,Baseline,60 +636,A,22.00,5.00,2.00,Female,1,Baseline,10 +637,C,20.00,2.00,8.00,Male,1,Baseline,16 +638,C,22.00,4.00,8.00,Female,1,Baseline,32 +639,A,50.00,6.00,1.00,Female,1,Baseline,6 +640,C,21.00,3.00,3.00,Female,1,Baseline,9 +641,A,21.00,0.00,0.00,Male,0,Baseline,0 +642,B,20.00,2.00,7.00,Female,1,Baseline,14 +643,B,22.00,8.00,6.00,Male,1,Baseline,48 +644,A,20.00,0.00,0.00,Female,0,Baseline,0 +645,A,19.00,7.00,8.00,Female,1,Baseline,56 +646,B,19.00,3.00,10.0,Male,1,Baseline,30 +647,A,18.00,0.00,0.00,Female,0,Baseline,0 +648,A,48.00,8.00,1.00,Female,1,Baseline,8 +649,A,19.00,0.00,0.00,Male,0,Baseline,0 +650,A,21.00,3.00,7.00,Female,1,Baseline,21 +651,A,23.00,13.0,7.00,Female,1,Baseline,91 +652,C,45.00,12.0,1.00,Female,1,Baseline,12 +653,B,21.00,1.00,1.00,Female,1,Baseline,1 +654,A,34.00,0.00,0.00,Female,0,Baseline,0 +655,B,21.00,3.00,2.00,Female,1,Baseline,6 +656,A,22.00,21.0,1.00,Male,1,Baseline,21 +657,A,21.00,1.00,1.00,Female,1,Baseline,1 +658,B,20.00,0.00,0.00,Female,0,Baseline,0 +659,B,22.00,3.00,1.00,Female,1,Baseline,3 +660,A,24.00,0.00,0.00,Female,0,Baseline,0 +661,A,24.00,2.00,3.00,Female,1,Baseline,6 +662,C,53.00,28.0,1.00,Female,1,Baseline,28 +663,C,19.00,7.00,3.00,Female,1,Baseline,21 +665,B,25.00,2.00,14.0,Male,1,Baseline,28 +666,B,49.00,28.0,3.00,Male,1,Baseline,84 +668,C,22.00,1.00,1.00,Male,1,Baseline,1 +669,A,24.00,8.00,1.00,Male,1,Baseline,8 +670,C,30.00,12.0,1.00,Female,1,Baseline,12 +671,C,31.00,0.00,0.00,Female,0,Baseline,0 +672,B,23.00,2.00,1.00,Female,1,Baseline,2 +673,C,19.00,4.00,10.0,Female,1,Baseline,40 +674,C,25.00,1.00,1.00,Female,1,Baseline,1 +675,A,18.00,4.00,10.0,Male,1,Baseline,40 +677,A,27.00,16.0,1.00,Female,1,Baseline,16 +679,C,21.00,6.00,15.0,Male,1,Baseline,90 +680,B,19.00,2.00,10.0,Female,1,Baseline,20 +681,C,20.00,6.00,2.00,Female,1,Baseline,12 +682,B,21.00,5.00,12.0,Male,1,Baseline,60 +683,B,53.00,2.00,1.00,Female,1,Baseline,2 +684,A,20.00,0.00,0.00,Female,0,Baseline,0 +685,B,22.00,2.00,7.00,Female,1,Baseline,14 +686,A,22.00,2.00,2.00,Female,1,Baseline,4 +687,A,24.00,4.00,2.00,Female,1,Baseline,8 +688,C,28.00,0.00,0.00,Male,0,Baseline,0 +690,B,21.00,3.00,7.00,Female,1,Baseline,21 +691,A,24.00,10.0,2.00,Male,1,Baseline,20 +692,B,20.00,1.00,2.00,Male,1,Baseline,2 +693,A,28.00,7.00,1.00,Female,1,Baseline,7 +694,C,21.00,2.00,1.00,Female,1,Baseline,2 +695,B,20.00,5.00,8.00,Female,1,Baseline,40 +696,C,22.00,2.00,8.00,Female,1,Baseline,16 +697,A,19.00,4.00,7.00,Female,1,Baseline,28 +698,A,19.00,3.00,3.00,Female,1,Baseline,9 +699,B,21.00,3.00,3.00,Female,1,Baseline,9 +700,A,22.00,2.00,10.0,Female,1,Baseline,20 +701,B,31.00,0.00,0.00,Female,0,Baseline,0 +702,A,29.00,4.00,3.00,Female,1,Baseline,12 +704,A,20.00,7.00,2.00,Female,1,Baseline,14 +705,C,21.00,8.00,3.00,Female,1,Baseline,24 +706,A,24.00,2.00,3.00,Female,1,Baseline,6 +707,C,30.00,6.00,3.00,Female,1,Baseline,18 +708,C,21.00,1.00,1.00,Female,1,Baseline,1 +711,B,22.00,4.00,3.00,Male,1,Baseline,12 +712,A,30.00,0.00,0.00,Female,0,Baseline,0 +713,C,20.00,3.00,2.00,Female,1,Baseline,6 +714,C,57.00,25.0,1.00,Female,1,Baseline,25 +715,A,23.00,2.00,2.00,Female,1,Baseline,4 +717,A,21.00,3.00,12.0,Male,1,Baseline,36 +719,B,19.00,0.00,0.00,Male,0,Baseline,0 +720,C,17.00,2.00,6.00,Male,1,Baseline,12 +721,C,18.00,1.00,4.00,Male,1,Baseline,4 +722,C,24.00,7.00,2.00,Male,1,Baseline,14 +723,A,21.00,3.00,2.00,Female,1,Baseline,6 +724,B,23.00,1.00,2.00,Female,1,Baseline,2 +725,B,19.00,0.00,0.00,Male,0,Baseline,0 +727,B,20.00,5.00,12.0,Male,1,Baseline,60 +728,A,20.00,0.00,0.00,Female,0,Baseline,0 +729,B,19.00,1.00,5.00,Female,1,Baseline,5 +730,A,25.00,2.00,3.00,Male,1,Baseline,6 +731,B,26.00,10.0,3.00,Female,1,Baseline,30 +732,B,19.00,7.00,1.00,Female,1,Baseline,7 +733,A,23.00,2.00,1.00,Female,1,Baseline,2 +734,A,22.00,0.00,0.00,Female,0,Baseline,0 +735,A,19.00,0.00,0.00,Female,0,Baseline,0 +736,B,21.00,3.00,5.00,Female,1,Baseline,15 +737,B,18.00,10.0,8.00,Male,1,Baseline,80 +738,B,19.00,0.00,0.00,Male,0,Baseline,0 +739,A,24.00,0.00,0.00,Male,0,Baseline,0 +740,A,21.00,3.00,3.00,Female,1,Baseline,9 +741,B,22.00,2.00,6.00,Male,1,Baseline,12 +742,C,53.00,4.00,2.00,Male,1,Baseline,8 +743,B,31.00,8.00,2.00,Female,1,Baseline,16 +744,B,21.00,7.00,5.00,Male,1,Baseline,35 +746,B,32.00,3.00,6.00,Female,1,Baseline,18 +747,B,24.00,2.00,2.00,Male,1,Baseline,4 +748,C,20.00,3.00,5.00,Female,1,Baseline,15 +749,C,24.00,4.00,2.00,Female,1,Baseline,8 +750,C,34.00,0.00,0.00,Female,0,Baseline,0 +751,A,21.00,5.00,6.00,Female,1,Baseline,30 +752,C,20.00,4.00,8.00,Female,1,Baseline,32 +754,A,19.00,11.0,15.0,Male,1,Baseline,165 +755,C,22.00,10.0,5.00,Female,1,Baseline,50 +757,B,21.00,7.00,2.00,Female,1,Baseline,14 +758,B,21.00,4.00,8.00,Male,1,Baseline,32 +759,B,38.00,5.00,1.00,Male,1,Baseline,5 +760,C,22.00,9.00,6.00,Male,1,Baseline,54 +761,C,18.00,2.00,1.00,Male,1,Baseline,2 +763,A,34.00,1.00,2.00,Male,1,Baseline,2 +764,B,21.00,5.00,6.00,Male,1,Baseline,30 +765,B,23.00,1.00,2.00,Female,1,Baseline,2 +766,C,21.00,0.00,0.00,Female,0,Baseline,0 +767,A,22.00,28.0,1.00,Male,1,Baseline,28 +768,C,38.00,8.00,1.00,Female,1,Baseline,8 +769,A,24.00,7.00,2.00,Female,1,Baseline,14 +770,C,19.00,0.00,0.00,Female,0,Baseline,0 +771,B,21.00,0.00,0.00,Female,0,Baseline,0 +772,C,18.00,0.00,0.00,Female,0,Baseline,0 +774,C,20.00,0.00,0.00,Female,0,Baseline,0 +775,A,22.00,0.00,0.00,Female,0,Baseline,0 +776,C,20.00,28.0,1.00,Female,1,Baseline,28 +777,C,23.00,5.00,3.00,Female,1,Baseline,15 +778,B,23.00,1.00,1.00,Female,1,Baseline,1 +779,B,19.00,4.00,6.00,Female,1,Baseline,24 +780,C,18.00,0.00,0.00,Female,0,Baseline,0 +781,C,18.00,2.00,1.00,Female,1,Baseline,2 +782,C,25.00,10.0,1.00,Female,1,Baseline,10 +783,C,19.00,0.00,0.00,Female,0,Baseline,0 +784,B,30.00,2.00,2.00,Female,1,Baseline,4 +785,C,20.00,3.00,4.00,Female,1,Baseline,12 +786,C,50.00,0.00,0.00,Male,0,Baseline,0 +787,A,21.00,1.00,6.00,Female,1,Baseline,6 +788,B,20.00,3.00,3.00,Female,1,Baseline,9 +789,C,20.00,8.00,1.00,Female,1,Baseline,8 +791,B,19.00,0.00,0.00,Female,0,Baseline,0 +792,B,18.00,7.00,2.00,Male,1,Baseline,14 +794,B,20.00,4.00,10.0,Female,1,Baseline,40 +795,C,18.00,3.00,1.00,Male,1,Baseline,3 +796,C,64.00,4.00,1.00,Female,1,Baseline,4 +797,B,49.00,0.00,0.00,Female,0,Baseline,0 +798,C,21.00,3.00,6.00,Female,1,Baseline,18 +799,C,22.00,4.00,5.00,Male,1,Baseline,20 +801,C,23.00,0.00,0.00,Male,0,Baseline,0 +802,B,32.00,8.00,3.00,Male,1,Baseline,24 +803,B,22.00,3.00,2.00,Female,1,Baseline,6 +805,B,18.00,1.00,1.00,Female,1,Baseline,1 +806,B,19.00,5.00,8.00,Female,1,Baseline,40 +807,A,24.00,10.0,1.00,Female,1,Baseline,10 +808,B,25.00,8.00,2.00,Male,1,Baseline,16 +809,B,22.00,22.0,4.00,Female,1,Baseline,88 +810,C,20.00,9.00,6.00,Female,1,Baseline,54 +812,B,20.00,4.00,6.00,Female,1,Baseline,24 +814,A,19.00,3.00,4.00,Male,1,Baseline,12 +815,A,19.00,4.00,4.00,Female,1,Baseline,16 +816,A,19.00,4.00,4.00,Female,1,Baseline,16 +817,C,20.00,0.00,0.00,Male,0,Baseline,0 +818,B,23.00,5.00,6.00,Female,1,Baseline,30 +819,A,22.00,3.00,4.00,Female,1,Baseline,12 +820,B,23.00,2.00,4.00,Female,1,Baseline,8 +821,C,34.00,0.00,0.00,Female,0,Baseline,0 +822,B,22.00,4.00,1.00,Female,1,Baseline,4 +823,B,22.00,8.00,4.00,Female,1,Baseline,32 +824,B,23.00,7.00,2.00,Male,1,Baseline,14 +825,C,35.00,3.00,1.00,Female,1,Baseline,3 +826,C,22.00,5.00,2.00,Male,1,Baseline,10 +827,C,20.00,2.00,5.00,Female,1,Baseline,10 +828,A,25.00,8.00,3.00,Female,1,Baseline,24 +829,A,19.00,0.00,0.00,Male,0,Baseline,0 +830,A,22.00,2.00,2.00,Male,1,Baseline,4 +831,B,21.00,10.0,3.00,Male,1,Baseline,30 +832,A,21.00,2.00,3.00,Female,1,Baseline,6 +833,B,18.00,1.00,1.00,Male,1,Baseline,1 +835,A,57.00,0.00,0.00,Female,0,Baseline,0 +836,B,18.00,0.00,0.00,Female,0,Baseline,0 +838,A,42.00,4.00,2.00,Female,1,Baseline,8 +839,C,34.00,8.00,3.00,Female,1,Baseline,24 +840,B,33.00,8.00,3.00,Male,1,Baseline,24 +841,C,20.00,11.0,1.00,Female,1,Baseline,11 +842,C,22.00,8.00,12.0,Female,1,Baseline,96 +843,C,19.00,3.00,10.0,Female,1,Baseline,30 +844,B,20.00,2.00,7.00,Female,1,Baseline,14 +845,C,21.00,5.00,4.00,Male,1,Baseline,20 +846,C,22.00,9.00,9.00,Male,1,Baseline,81 +848,A,22.00,2.00,6.00,Female,1,Baseline,12 +849,A,22.00,3.00,3.00,Male,1,Baseline,9 +850,B,18.00,0.00,0.00,Male,0,Baseline,0 +851,C,25.00,3.00,2.00,Female,1,Baseline,6 +852,A,23.00,6.00,4.00,Male,1,Baseline,24 +853,B,20.00,2.00,8.00,Male,1,Baseline,16 +854,A,21.00,4.00,11.0,Female,1,Baseline,44 +855,C,18.00,0.00,0.00,Female,0,Baseline,0 +856,C,18.00,3.00,4.00,Female,1,Baseline,12 +857,C,19.00,4.00,2.00,Female,1,Baseline,8 +858,C,24.00,0.00,0.00,Male,0,Baseline,0 +859,A,20.00,4.00,6.00,Female,1,Baseline,24 +860,B,38.00,8.00,3.00,Female,1,Baseline,24 +861,B,20.00,1.00,12.0,Male,1,Baseline,12 +862,A,19.00,0.00,0.00,Female,0,Baseline,0 +863,A,19.00,0.00,0.00,Male,0,Baseline,0 +865,A,18.00,7.00,14.0,Female,1,Baseline,98 +866,B,21.00,5.00,3.00,Female,1,Baseline,15 +867,C,42.00,3.00,17.0,Female,1,Baseline,51 +868,B,18.00,1.00,10.0,Female,1,Baseline,10 +869,A,39.00,0.00,0.00,Female,0,Baseline,0 +871,A,18.00,0.00,0.00,Male,0,Baseline,0 +872,A,18.00,2.00,1.00,Male,1,Baseline,2 +873,A,21.00,2.00,2.00,Female,1,Baseline,4 +874,B,19.00,2.00,6.00,Female,1,Baseline,12 +875,C,20.00,4.00,1.00,Female,1,Baseline,4 +876,B,19.00,2.00,1.00,Female,1,Baseline,2 +877,B,20.00,0.00,0.00,Male,0,Baseline,0 +878,C,18.00,2.00,1.00,Male,1,Baseline,2 +879,C,27.00,8.00,8.00,Female,1,Baseline,64 +880,C,18.00,2.00,3.00,Female,1,Baseline,6 +881,C,48.00,7.00,1.00,Female,1,Baseline,7 +882,A,20.00,2.00,1.00,Female,1,Baseline,2 +883,B,30.00,3.00,8.00,Female,1,Baseline,24 +885,C,21.00,3.00,3.00,Male,1,Baseline,9 +888,A,23.00,0.00,0.00,Male,0,Baseline,0 +889,A,21.00,6.00,1.00,Female,1,Baseline,6 +890,C,22.00,0.00,0.00,Female,0,Baseline,0 +891,A,24.00,1.00,1.00,Male,1,Baseline,1 +892,A,22.00,4.00,1.00,Female,1,Baseline,4 +894,C,20.00,0.00,0.00,Male,0,Baseline,0 +895,A,29.00,0.00,0.00,Male,0,Baseline,0 +897,B,19.00,4.00,4.00,Female,1,Baseline,16 +898,C,24.00,0.00,0.00,Male,0,Baseline,0 +899,C,20.00,6.00,8.00,Male,1,Baseline,48 +900,C,21.00,2.00,1.00,Female,1,Baseline,2 +901,C,19.00,7.00,12.0,Male,1,Baseline,84 +902,B,21.00,0.00,0.00,Female,0,Baseline,0 +903,A,21.00,14.0,1.00,Male,1,Baseline,14 +904,B,19.00,3.00,5.00,Female,1,Baseline,15 +905,A,20.00,6.00,5.00,Male,1,Baseline,30 +907,A,22.00,16.0,2.00,Female,1,Baseline,32 +908,B,18.00,0.00,0.00,Male,0,Baseline,0 +909,A,18.00,2.00,2.00,Female,1,Baseline,4 +910,A,22.00,0.00,0.00,Female,0,Baseline,0 +911,B,28.00,3.00,4.00,Female,1,Baseline,12 +913,C,18.00,0.00,0.00,Male,0,Baseline,0 +914,A,21.00,1.00,1.00,Female,1,Baseline,1 +915,B,23.00,6.00,2.00,Female,1,Baseline,12 +916,B,20.00,13.0,11.0,Male,1,Baseline,143 +917,B,20.00,2.00,1.00,Female,1,Baseline,2 +918,B,24.00,2.00,5.00,Female,1,Baseline,10 +921,B,31.00,2.00,3.00,Female,1,Baseline,6 +923,B,20.00,4.00,1.00,Female,1,Baseline,4 +924,C,21.00,0.00,0.00,Male,0,Baseline,0 +926,A,21.00,3.00,6.00,Male,1,Baseline,18 +927,B,22.00,2.00,3.00,Male,1,Baseline,6 +928,A,21.00,7.00,1.00,Male,1,Baseline,7 +929,A,21.00,0.00,0.00,Female,0,Baseline,0 +930,C,19.00,1.00,6.00,Female,1,Baseline,6 +932,C,19.00,7.00,3.00,Female,1,Baseline,21 +933,C,18.00,1.00,4.00,Female,1,Baseline,4 +934,C,23.00,0.00,0.00,Female,0,Baseline,0 +936,B,18.00,6.00,6.00,Female,1,Baseline,36 +937,A,18.00,0.00,0.00,Female,0,Baseline,0 +938,B,23.00,3.00,5.00,Male,1,Baseline,15 +940,A,21.00,4.00,5.00,Female,1,Baseline,20 +941,B,22.00,8.00,3.00,Female,1,Baseline,24 +942,C,20.00,13.0,6.00,Male,1,Baseline,78 +943,A,18.00,6.00,3.00,Female,1,Baseline,18 +944,C,28.00,8.00,1.00,Female,1,Baseline,8 +945,B,20.00,2.00,5.00,Female,1,Baseline,10 +947,C,20.00,15.0,2.00,Male,1,Baseline,30 +948,C,19.00,7.00,16.0,Male,1,Baseline,112 +949,A,20.00,1.00,2.00,Female,1,Baseline,2 +950,C,21.00,2.00,7.00,Female,1,Baseline,14 +952,A,21.00,0.00,0.00,Male,0,Baseline,0 +953,B,19.00,8.00,6.00,Male,1,Baseline,48 +954,B,21.00,4.00,6.00,Female,1,Baseline,24 +955,B,19.00,5.00,15.0,Male,1,Baseline,75 +956,A,18.00,2.00,1.00,Female,1,Baseline,2 +958,C,19.00,3.00,4.00,Female,1,Baseline,12 +959,C,21.00,2.00,6.00,Female,1,Baseline,12 +960,C,19.00,0.00,0.00,Female,0,Baseline,0 +961,C,24.00,8.00,1.00,Female,1,Baseline,8 +962,C,46.00,12.0,1.00,Female,1,Baseline,12 +964,B,20.00,14.0,16.0,Female,1,Baseline,224 +965,C,20.00,4.00,6.00,Female,1,Baseline,24 +967,A,18.00,8.00,6.00,Female,1,Baseline,48 +968,A,19.00,6.00,12.0,Male,1,Baseline,72 +969,A,18.00,0.00,0.00,Female,0,Baseline,0 +970,A,19.00,2.00,1.00,Female,1,Baseline,2 +972,A,21.00,2.00,8.00,Female,1,Baseline,16 +973,B,20.00,5.00,5.00,Female,1,Baseline,25 +974,B,23.00,0.00,0.00,Female,0,Baseline,0 +976,A,19.00,0.00,0.00,Female,0,Baseline,0 +977,A,18.00,2.00,5.00,Female,1,Baseline,10 +978,B,20.00,5.00,10.0,Male,1,Baseline,50 +979,B,19.00,0.00,0.00,Female,0,Baseline,0 +980,A,23.00,2.00,2.00,Male,1,Baseline,4 +981,C,19.00,0.00,0.00,Male,0,Baseline,0 +983,A,20.00,2.00,1.00,Female,1,Baseline,2 +984,A,19.00,9.00,1.00,Female,1,Baseline,9 +985,B,23.00,20.0,2.00,Male,1,Baseline,40 +986,C,22.00,7.00,4.00,Male,1,Baseline,28 +988,A,19.00,3.00,12.0,Male,1,Baseline,36 +989,C,19.00,2.00,7.00,Female,1,Baseline,14 +990,C,18.00,0.00,0.00,Female,0,Baseline,0 +991,C,22.00,1.00,2.00,Female,1,Baseline,2 +992,A,21.00,0.00,0.00,Female,0,Baseline,0 +993,A,21.00,5.00,2.00,Female,1,Baseline,10 +994,B,20.00,3.00,3.00,Female,1,Baseline,9 +995,C,28.00,5.00,2.00,Male,1,Baseline,10 +997,C,18.00,2.00,2.00,Female,1,Baseline,4 +998,B,18.00,4.00,3.00,Female,1,Baseline,12 +999,A,19.00,4.00,2.00,Female,1,Baseline,8 +1000,B,21.00,10.0,3.00,Female,1,Baseline,30 +1002,C,22.00,2.00,1.00,Female,1,Baseline,2 +1003,B,23.00,3.00,1.00,Female,1,Baseline,3 +1004,A,22.00,8.00,3.00,Male,1,Baseline,24 +1005,C,19.00,4.00,7.00,Female,1,Baseline,28 +1006,B,22.00,7.00,4.00,Female,1,Baseline,28 +1007,B,30.00,4.00,1.00,Male,1,Baseline,4 +1009,C,20.00,4.00,5.00,Female,1,Baseline,20 +1010,C,37.00,5.00,2.00,Female,1,Baseline,10 +1011,A,26.00,5.00,2.00,Male,1,Baseline,10 +1013,C,25.00,6.00,4.00,Female,1,Baseline,24 +1014,B,23.00,4.00,5.00,Female,1,Baseline,20 +1016,C,30.00,4.00,2.00,Female,1,Baseline,8 +1017,B,18.00,0.00,0.00,Female,0,Baseline,0 +1018,A,22.00,6.00,2.00,Female,1,Baseline,12 +1019,B,24.00,3.00,10.0,Male,1,Baseline,30 +1020,B,21.00,10.0,1.00,Female,1,Baseline,10 +1022,B,19.00,0.00,0.00,Male,0,Baseline,0 +1023,C,19.00,2.00,4.00,Female,1,Baseline,8 +1024,C,20.00,4.00,3.00,Male,1,Baseline,12 +1025,A,24.00,0.00,0.00,Male,0,Baseline,0 +1027,A,20.00,0.00,0.00,Female,0,Baseline,0 +1028,C,21.00,0.00,0.00,Female,0,Baseline,0 +1029,C,20.00,11.0,9.00,Male,1,Baseline,99 +1030,C,20.00,3.00,8.00,Female,1,Baseline,24 +1031,C,22.00,2.00,6.00,Male,1,Baseline,12 +1032,B,21.00,6.00,10.0,Male,1,Baseline,60 +1033,B,20.00,6.00,10.0,Female,1,Baseline,60 +1034,C,21.00,8.00,6.00,Male,1,Baseline,48 +1035,C,21.00,0.00,0.00,Female,0,Baseline,0 +1038,C,21.00,4.00,2.00,Female,1,Baseline,8 +1039,C,19.00,4.00,8.00,Male,1,Baseline,32 +1040,B,19.00,3.00,4.00,Female,1,Baseline,12 +1041,B,29.00,1.00,1.00,Female,1,Baseline,1 +1042,B,20.00,2.00,3.00,Female,1,Baseline,6 +1045,A,19.00,2.00,2.00,Female,1,Baseline,4 +1046,C,19.00,2.00,5.00,Female,1,Baseline,10 +1047,B,46.00,4.00,1.00,Female,1,Baseline,4 +1048,B,28.00,2.00,1.00,Female,1,Baseline,2 +1049,C,32.00,3.00,1.00,Male,1,Baseline,3 +1050,C,19.00,1.00,1.00,Male,1,Baseline,1 +1053,C,36.00,10.0,2.00,Male,1,Baseline,20 +1054,A,21.00,3.00,8.00,Female,1,Baseline,24 +1055,C,18.00,2.00,2.00,Female,1,Baseline,4 +1057,C,22.00,12.0,2.00,Female,1,Baseline,24 +1058,C,22.00,3.00,8.00,Male,1,Baseline,24 +1059,A,21.00,1.00,1.00,Female,1,Baseline,1 +1060,A,23.00,0.00,0.00,Male,0,Baseline,0 +1063,C,35.00,6.00,2.00,Male,1,Baseline,12 +1064,A,20.00,3.00,5.00,Female,1,Baseline,15 +1066,B,22.00,2.00,10.0,Female,1,Baseline,20 +1067,A,46.00,20.0,1.00,Female,1,Baseline,20 +1068,C,20.00,2.00,2.00,Female,1,Baseline,4 +1069,A,24.00,6.00,14.0,Male,1,Baseline,84 +1070,C,27.00,18.0,2.00,Male,1,Baseline,36 +1071,B,19.00,6.00,2.00,Male,1,Baseline,12 +1072,A,18.00,7.00,6.00,Female,1,Baseline,42 +1073,A,22.00,2.00,10.0,Male,1,Baseline,20 +1075,C,22.00,4.00,1.00,Female,1,Baseline,4 +1076,B,25.00,4.00,8.00,Female,1,Baseline,32 +1077,B,30.00,0.00,0.00,Male,0,Baseline,0 +1078,A,24.00,0.00,0.00,Female,0,Baseline,0 +1080,B,46.00,4.00,2.00,Female,1,Baseline,8 +1082,B,58.00,0.00,0.00,Female,0,Baseline,0 +1083,C,21.00,11.0,3.00,Female,1,Baseline,33 +1087,A,23.00,5.00,3.00,Female,1,Baseline,15 +1090,B,23.00,5.00,4.00,Female,1,Baseline,20 +1091,B,26.00,20.0,2.00,Male,1,Baseline,40 +1094,C,21.00,0.00,0.00,Male,0,Baseline,0 +1095,C,42.00,5.00,3.00,Female,1,Baseline,15 +1096,A,19.00,0.00,0.00,Female,0,Baseline,0 +1097,C,22.00,2.00,2.00,Female,1,Baseline,4 +1098,A,38.00,10.0,3.00,Male,1,Baseline,30 +1099,C,21.00,8.00,2.00,Female,1,Baseline,16 +1100,B,37.00,4.00,2.00,Female,1,Baseline,8 +1101,C,20.00,0.00,0.00,Female,0,Baseline,0 +1102,C,38.00,3.00,1.00,Female,1,Baseline,3 +1103,B,39.00,0.00,0.00,Male,0,Baseline,0 +1104,A,19.00,1.00,3.00,Male,1,Baseline,3 +1105,A,21.00,5.00,4.00,Female,1,Baseline,20 +1107,B,22.00,1.00,4.00,Female,1,Baseline,4 +1109,C,17.00,1.00,1.00,Female,1,Baseline,1 +1111,B,20.00,5.00,7.00,Female,1,Baseline,35 +1112,C,29.00,9.00,1.00,Female,1,Baseline,9 +1113,A,21.00,0.00,0.00,Female,0,Baseline,0 +1116,C,21.00,4.00,8.00,Male,1,Baseline,32 +1117,A,20.00,0.00,0.00,Female,0,Baseline,0 +1118,C,27.00,3.00,1.00,Female,1,Baseline,3 +1119,C,49.00,8.00,2.00,Female,1,Baseline,16 +1121,C,28.00,2.00,4.00,Male,1,Baseline,8 +1122,C,21.00,2.00,13.0,Male,1,Baseline,26 +1124,C,51.00,24.0,1.00,Male,1,Baseline,24 +1125,B,19.00,8.00,14.0,Male,1,Baseline,112 +1126,C,21.00,1.00,1.00,Female,1,Baseline,1 +1127,C,20.00,13.0,18.0,Male,1,Baseline,234 +1128,C,20.00,5.00,5.00,Female,1,Baseline,25 +1129,B,19.00,3.00,5.00,Male,1,Baseline,15 +1130,C,29.00,2.00,8.00,Male,1,Baseline,16 +1131,A,23.00,2.00,8.00,Male,1,Baseline,16 +1132,B,26.00,0.00,0.00,Female,0,Baseline,0 +1133,B,18.00,5.00,8.00,Male,1,Baseline,40 +1134,A,18.00,3.00,4.00,Female,1,Baseline,12 +1135,C,49.00,16.0,2.00,Female,1,Baseline,32 +1136,A,28.00,4.00,2.00,Female,1,Baseline,8 +1137,C,20.00,0.00,0.00,Female,0,Baseline,0 +1138,B,22.00,5.00,2.00,Female,1,Baseline,10 +1139,C,34.00,1.00,1.00,Male,1,Baseline,1 +1140,A,27.00,3.00,2.00,Female,1,Baseline,6 +1143,B,27.00,2.00,1.00,Female,1,Baseline,2 +1144,A,23.00,10.0,5.00,Male,1,Baseline,50 +1145,B,20.00,2.00,3.00,Female,1,Baseline,6 +1146,C,21.00,9.00,10.0,Male,1,Baseline,90 +1148,A,19.00,3.00,4.00,Female,1,Baseline,12 +1149,C,20.00,1.00,1.00,Female,1,Baseline,1 +1150,A,21.00,4.00,10.0,Female,1,Baseline,40 +1151,B,22.00,3.00,4.00,Female,1,Baseline,12 +1152,A,21.00,4.00,5.00,Female,1,Baseline,20 +1154,A,19.00,0.00,0.00,Female,0,Baseline,0 +1155,A,19.00,0.00,0.00,Female,0,Baseline,0 +1156,C,21.00,9.00,15.0,Male,1,Baseline,135 +1157,A,23.00,6.00,8.00,Female,1,Baseline,48 +1158,A,21.00,0.00,0.00,Male,0,Baseline,0 +1159,C,33.00,3.00,1.00,Male,1,Baseline,3 +1160,C,19.00,3.00,4.00,Female,1,Baseline,12 +1161,C,21.00,0.00,0.00,Female,0,Baseline,0 +1162,A,20.00,6.00,13.0,Female,1,Baseline,78 +1164,C,18.00,1.00,1.00,Female,1,Baseline,1 +1165,C,22.00,1.00,3.00,Female,1,Baseline,3 +1166,A,23.00,10.0,3.00,Male,1,Baseline,30 +1167,C,18.00,4.00,8.00,Male,1,Baseline,32 +1168,C,21.00,1.00,1.00,Male,1,Baseline,1 +1169,C,21.00,1.00,7.00,Male,1,Baseline,7 +1172,B,21.00,3.00,6.00,Female,1,Baseline,18 +1173,B,18.00,0.00,0.00,Female,0,Baseline,0 +1174,C,19.00,1.00,2.00,Male,1,Baseline,2 +1176,A,18.00,4.00,4.00,Female,1,Baseline,16 +1177,B,23.00,2.00,2.00,Male,1,Baseline,4 +1178,A,36.00,15.0,1.00,Female,1,Baseline,15 +1179,C,23.00,4.00,3.00,Male,1,Baseline,12 +1180,C,22.00,2.00,1.00,Female,1,Baseline,2 +1181,B,19.00,4.00,10.0,Male,1,Baseline,40 +1182,B,22.00,0.00,0.00,Female,0,Baseline,0 +1183,B,21.00,4.00,2.00,Female,1,Baseline,8 +1186,A,19.00,6.00,6.00,Female,1,Baseline,36 +1190,C,21.00,0.00,0.00,Female,0,Baseline,0 +1191,A,28.00,0.00,0.00,Female,0,Baseline,0 +1192,A,19.00,0.00,0.00,Female,0,Baseline,0 +1193,C,20.00,7.00,8.00,Male,1,Baseline,56 +1194,C,20.00,0.00,0.00,Female,0,Baseline,0 +1195,C,19.00,10.0,15.0,Male,1,Baseline,150 +1196,B,22.00,3.00,1.00,Female,1,Baseline,3 +1198,A,20.00,7.00,3.00,Female,1,Baseline,21 +1199,C,21.00,10.0,1.00,Male,1,Baseline,10 +1200,C,20.00,5.00,3.00,Male,1,Baseline,15 +1203,A,22.00,9.00,30.0,Male,1,Baseline,270 +1204,A,30.00,0.00,0.00,Male,0,Baseline,0 +1205,C,27.00,12.0,2.00,Female,1,Baseline,24 +1206,B,25.00,4.00,2.00,Female,1,Baseline,8 +1208,A,46.00,2.00,2.00,Female,1,Baseline,4 +1209,C,21.00,8.00,8.00,Female,1,Baseline,64 +1210,C,18.00,1.00,3.00,Female,1,Baseline,3 +1211,A,18.00,4.00,4.00,Female,1,Baseline,16 +1212,B,24.00,1.00,7.00,Female,1,Baseline,7 +1213,C,23.00,3.00,1.00,Female,1,Baseline,3 +1215,B,21.00,4.00,5.00,Female,1,Baseline,20 +1216,C,20.00,4.00,5.00,Male,1,Baseline,20 +1217,C,24.00,2.00,10.0,Male,1,Baseline,20 +1218,C,23.00,3.00,1.00,Female,1,Baseline,3 +1219,B,20.00,0.00,0.00,Female,0,Baseline,0 +1220,A,22.00,10.0,14.0,Male,1,Baseline,140 +1221,A,26.00,4.00,3.00,Female,1,Baseline,12 +1222,A,21.00,0.00,0.00,Male,0,Baseline,0 +1223,A,18.00,7.00,9.00,Male,1,Baseline,63 +1224,C,20.00,1.00,1.00,Male,1,Baseline,1 +1225,A,23.00,1.00,1.00,Female,1,Baseline,1 +1226,A,30.00,0.00,0.00,Female,0,Baseline,0 +1227,A,19.00,6.00,2.00,Female,1,Baseline,12 +1228,A,19.00,4.00,6.00,Female,1,Baseline,24 +1229,B,20.00,0.00,0.00,Female,0,Baseline,0 +1230,A,27.00,12.0,3.00,Male,1,Baseline,36 +1231,C,31.00,8.00,1.00,Female,1,Baseline,8 +1232,C,22.00,2.00,1.00,Male,1,Baseline,2 +1233,A,52.00,4.00,2.00,Female,1,Baseline,8 +1234,B,22.00,7.00,4.00,Male,1,Baseline,28 +1236,A,17.00,7.00,5.00,Female,1,Baseline,35 +1237,A,22.00,4.00,2.00,Male,1,Baseline,8 +1239,A,22.00,0.00,0.00,Female,0,Baseline,0 +1240,A,45.00,0.00,0.00,Male,0,Baseline,0 +1241,A,19.00,10.0,10.0,Male,1,Baseline,100 +1242,B,38.00,0.00,0.00,Female,0,Baseline,0 +1243,C,18.00,3.00,4.00,Female,1,Baseline,12 +1245,C,22.00,8.00,8.00,Female,1,Baseline,64 +1246,C,19.00,2.00,13.0,Male,1,Baseline,26 +1250,A,21.00,5.00,6.00,Female,1,Baseline,30 +1251,B,24.00,1.00,4.00,Female,1,Baseline,4 +1252,B,41.00,1.00,1.00,Female,1,Baseline,1 +1253,A,20.00,3.00,3.00,Male,1,Baseline,9 +1255,B,44.00,2.00,2.00,Female,1,Baseline,4 +1256,A,26.00,0.00,0.00,Female,0,Baseline,0 +1257,A,40.00,1.00,1.00,Female,1,Baseline,1 +1258,C,21.00,13.0,15.0,Male,1,Baseline,195 +1259,A,21.00,5.00,2.00,Female,1,Baseline,10 +1260,C,21.00,4.00,15.0,Male,1,Baseline,60 +1261,A,21.00,12.0,6.00,Female,1,Baseline,72 +1262,C,18.00,1.00,6.00,Female,1,Baseline,6 +1264,C,19.00,3.00,5.00,Female,1,Baseline,15 +1265,C,21.00,2.00,12.0,Male,1,Baseline,24 +1267,C,23.00,0.00,0.00,Female,0,Baseline,0 +1268,A,31.00,0.00,0.00,Male,0,Baseline,0 +1269,B,20.00,3.00,6.00,Female,1,Baseline,18 +1270,C,36.00,9.00,4.00,Female,1,Baseline,36 +1271,A,19.00,3.00,2.00,Female,1,Baseline,6 +1272,A,35.00,17.0,10.0,Male,1,Baseline,170 +1275,C,18.00,2.00,1.00,Female,1,Baseline,2 +1276,B,18.00,2.00,7.00,Female,1,Baseline,14 +1277,A,20.00,0.00,0.00,Female,0,Baseline,0 +1278,C,23.00,10.0,9.00,Male,1,Baseline,90 +1279,A,21.00,8.00,15.0,Female,1,Baseline,120 +1280,B,19.00,10.0,9.00,Female,1,Baseline,90 +1281,A,24.00,4.00,1.00,Female,1,Baseline,4 +1282,B,18.00,3.00,8.00,Male,1,Baseline,24 +1283,A,21.00,4.00,2.00,Female,1,Baseline,8 +1285,C,19.00,1.00,6.00,Male,1,Baseline,6 +1286,A,21.00,4.00,2.00,Male,1,Baseline,8 +1288,C,26.00,0.00,0.00,Female,0,Baseline,0 +1289,A,60.00,0.00,0.00,Female,0,Baseline,0 +1290,B,20.00,4.00,3.00,Female,1,Baseline,12 +1292,B,21.00,3.00,3.00,Female,1,Baseline,9 +1294,B,21.00,2.00,1.00,Female,1,Baseline,2 +1295,C,22.00,4.00,15.0,Female,1,Baseline,60 +1296,C,21.00,1.00,6.00,Female,1,Baseline,6 +1297,A,39.00,0.00,0.00,Female,0,Baseline,0 +1298,C,18.00,2.00,3.00,Male,1,Baseline,6 +1299,B,21.00,5.00,2.00,Female,1,Baseline,10 +1300,A,43.00,5.00,1.00,Male,1,Baseline,5 +1301,B,24.00,2.00,7.00,Male,1,Baseline,14 +1303,A,21.00,2.00,5.00,Female,1,Baseline,10 +1305,B,21.00,9.00,8.00,Female,1,Baseline,72 +1307,A,22.00,0.00,0.00,Female,0,Baseline,0 +1308,C,22.00,16.0,4.00,Male,1,Baseline,64 +1309,B,21.00,8.00,10.0,Female,1,Baseline,80 +1310,C,23.00,3.00,1.00,Male,1,Baseline,3 +1311,C,19.00,1.00,1.00,Male,1,Baseline,1 +1312,C,20.00,12.0,8.00,Female,1,Baseline,96 +1314,C,21.00,12.0,6.00,Male,1,Baseline,72 +1315,C,19.00,5.00,6.00,Female,1,Baseline,30 +1316,B,44.00,12.0,1.00,Female,1,Baseline,12 +1317,C,21.00,5.00,1.00,Male,1,Baseline,5 +1318,A,22.00,10.0,2.00,Female,1,Baseline,20 +1319,C,23.00,8.00,2.00,Female,1,Baseline,16 +1320,A,32.00,0.00,0.00,Male,0,Baseline,0 +1322,A,30.00,26.0,3.00,Male,1,Baseline,78 +1323,A,20.00,26.0,1.00,Female,1,Baseline,26 +1324,A,29.00,6.00,6.00,Female,1,Baseline,36 +1325,A,20.00,5.00,8.00,Female,1,Baseline,40 +1327,B,19.00,2.00,3.00,Female,1,Baseline,6 +1328,C,20.00,10.0,2.00,Female,1,Baseline,20 +1329,A,20.00,0.00,0.00,Male,0,Baseline,0 +1330,A,19.00,11.0,8.00,Female,1,Baseline,88 +1331,C,21.00,4.00,8.00,Female,1,Baseline,32 +1332,A,19.00,2.00,3.00,Female,1,Baseline,6 +1333,A,21.00,4.00,4.00,Female,1,Baseline,16 +1335,B,20.00,0.00,0.00,Female,0,Baseline,0 +1336,C,21.00,1.00,1.00,Female,1,Baseline,1 +1338,B,22.00,4.00,2.00,Female,1,Baseline,8 +1339,A,22.00,4.00,10.0,Male,1,Baseline,40 +1341,A,21.00,7.00,6.00,Female,1,Baseline,42 +1342,A,19.00,7.00,4.00,Female,1,Baseline,28 +1343,A,22.00,3.00,3.00,Female,1,Baseline,9 +1344,C,20.00,2.00,3.00,Female,1,Baseline,6 +1345,A,24.00,0.00,0.00,Female,0,Baseline,0 +1346,A,19.00,1.00,5.00,Female,1,Baseline,5 +1348,A,19.00,0.00,0.00,Female,0,Baseline,0 +1349,B,20.00,0.00,0.00,Female,0,Baseline,0 +1350,C,22.00,3.00,2.00,Female,1,Baseline,6 +1351,B,18.00,3.00,7.00,Female,1,Baseline,21 +1352,A,22.00,0.00,0.00,Male,0,Baseline,0 +1353,B,19.00,3.00,6.00,Female,1,Baseline,18 +1354,A,19.00,6.00,6.00,Female,1,Baseline,36 +1355,C,18.00,2.00,2.00,Female,1,Baseline,4 +1356,C,22.00,3.00,5.00,Female,1,Baseline,15 +1357,A,20.00,5.00,1.00,Male,1,Baseline,5 +1358,A,21.00,12.0,6.00,Male,1,Baseline,72 +1360,B,19.00,1.00,6.00,Female,1,Baseline,6 +1361,A,23.00,4.00,9.00,Male,1,Baseline,36 +1362,C,22.00,3.00,5.00,Male,1,Baseline,15 +1363,B,21.00,8.00,5.00,Male,1,Baseline,40 +1364,C,20.00,2.00,4.00,Female,1,Baseline,8 +1365,C,23.00,1.00,10.0,Female,1,Baseline,10 +1366,C,20.00,4.00,10.0,Female,1,Baseline,40 +1367,A,22.00,5.00,2.00,Female,1,Baseline,10 +1368,B,26.00,1.00,2.00,Female,1,Baseline,2 +1369,C,21.00,11.0,3.00,Male,1,Baseline,33 +1372,A,19.00,6.00,8.00,Female,1,Baseline,48 +1373,C,33.00,8.00,4.00,Male,1,Baseline,32 +1374,B,21.00,2.00,2.00,Female,1,Baseline,4 +1375,B,41.00,28.0,3.00,Female,1,Baseline,84 +1376,B,21.00,8.00,2.00,Female,1,Baseline,16 +1378,A,25.00,0.00,0.00,Female,0,Baseline,0 +1379,B,20.00,4.00,4.00,Female,1,Baseline,16 +1380,C,19.00,8.00,10.0,Male,1,Baseline,80 +1382,C,19.00,0.00,0.00,Female,0,Baseline,0 +1383,C,35.00,0.00,0.00,Female,0,Baseline,0 +1385,B,20.00,0.00,0.00,Female,0,Baseline,0 +1386,B,29.00,1.00,1.00,Male,1,Baseline,1 +1387,C,25.00,1.00,1.00,Male,1,Baseline,1 +1388,A,17.00,2.00,3.00,Female,1,Baseline,6 +1389,A,19.00,8.00,8.00,Male,1,Baseline,64 +1390,C,20.00,4.00,6.00,Female,1,Baseline,24 +1391,B,19.00,2.00,2.00,Female,1,Baseline,4 +1392,A,22.00,2.00,1.00,Female,1,Baseline,2 +1393,B,21.00,0.00,0.00,Female,0,Baseline,0 +1396,C,19.00,3.00,5.00,Female,1,Baseline,15 +1398,B,21.00,2.00,5.00,Female,1,Baseline,10 +1399,A,22.00,12.0,3.00,Female,1,Baseline,36 +1400,C,26.00,0.00,0.00,Female,0,Baseline,0 +1401,C,22.00,2.00,7.00,Female,1,Baseline,14 +1402,A,19.00,0.00,0.00,Female,0,Baseline,0 +1403,C,19.00,2.00,10.0,Female,1,Baseline,20 +1404,A,19.00,6.00,8.00,Female,1,Baseline,48 +1405,C,27.00,5.00,2.00,Female,1,Baseline,10 +1406,A,19.00,6.00,4.00,Female,1,Baseline,24 +1407,C,29.00,8.00,2.00,Female,1,Baseline,16 +1408,C,21.00,2.00,3.00,Female,1,Baseline,6 +1409,A,20.00,5.00,5.00,Male,1,Baseline,25 +1410,C,28.00,2.00,7.00,Female,1,Baseline,14 +1411,C,32.00,25.0,2.00,Female,1,Baseline,50 +1412,A,19.00,7.00,6.00,Female,1,Baseline,42 +1413,A,20.00,2.00,1.00,Female,1,Baseline,2 +1414,A,19.00,18.0,6.00,Male,1,Baseline,108 +1415,A,21.00,5.00,5.00,Female,1,Baseline,25 +1416,C,18.00,2.00,7.00,Female,1,Baseline,14 +1417,A,23.00,0.00,0.00,Male,0,Baseline,0 +1418,C,49.00,3.00,2.00,Female,1,Baseline,6 +1419,A,21.00,6.00,1.00,Female,1,Baseline,6 +1420,B,28.00,4.00,2.00,Male,1,Baseline,8 +1421,B,22.00,0.00,0.00,Female,0,Baseline,0 +1422,B,20.00,1.00,2.00,Male,1,Baseline,2 +1423,C,33.00,3.00,3.00,Male,1,Baseline,9 +1425,C,19.00,2.00,5.00,Female,1,Baseline,10 +1426,B,20.00,3.00,6.00,Male,1,Baseline,18 +1427,C,21.00,3.00,2.00,Male,1,Baseline,6 +1428,B,21.00,3.00,6.00,Male,1,Baseline,18 +1429,C,19.00,4.00,9.00,Male,1,Baseline,36 +1430,C,21.00,2.00,6.00,Male,1,Baseline,12 +1431,A,18.00,0.00,0.00,Male,0,Baseline,0 +1432,A,21.00,0.00,0.00,Female,0,Baseline,0 +1433,B,21.00,5.00,2.00,Female,1,Baseline,10 +1434,B,25.00,2.00,7.00,Female,1,Baseline,14 +1435,C,32.00,2.00,1.00,Female,1,Baseline,2 +1436,A,22.00,8.00,5.00,Female,1,Baseline,40 +1437,A,19.00,0.00,0.00,Female,0,Baseline,0 +1439,C,22.00,5.00,1.00,Female,1,Baseline,5 +1440,C,28.00,6.00,5.00,Male,1,Baseline,30 +1442,B,21.00,4.00,5.00,Male,1,Baseline,20 +1443,A,19.00,2.00,2.00,Female,1,Baseline,4 +1444,A,22.00,16.0,2.00,Male,1,Baseline,32 +1445,B,18.00,4.00,1.00,Female,1,Baseline,4 +1446,A,25.00,4.00,1.00,Female,1,Baseline,4 +1447,B,19.00,8.00,16.0,Male,1,Baseline,128 +1448,B,18.00,5.00,3.00,Male,1,Baseline,15 +1449,A,20.00,3.00,3.00,Female,1,Baseline,9 +1451,A,18.00,1.00,2.00,Female,1,Baseline,2 +1452,A,40.00,20.0,1.00,Male,1,Baseline,20 +1453,A,21.00,3.00,3.00,Female,1,Baseline,9 +1454,A,21.00,2.00,7.00,Male,1,Baseline,14 +1455,A,22.00,1.00,2.00,Male,1,Baseline,2 +1456,C,19.00,6.00,12.0,Male,1,Baseline,72 +1457,A,28.00,0.00,0.00,Female,0,Baseline,0 +1458,C,20.00,8.00,8.00,Female,1,Baseline,64 +1459,A,24.00,13.0,3.00,Female,1,Baseline,39 +1460,A,21.00,8.00,7.00,Female,1,Baseline,56 +1461,A,22.00,11.0,7.00,Male,1,Baseline,77 +1463,A,22.00,2.00,2.00,Male,1,Baseline,4 +1464,B,19.00,7.00,7.00,Female,1,Baseline,49 +1465,B,18.00,0.00,0.00,Male,0,Baseline,0 +1466,C,21.00,2.00,3.00,Female,1,Baseline,6 +1467,B,21.00,0.00,0.00,Female,0,Baseline,0 +1468,B,21.00,7.00,4.00,Female,1,Baseline,28 +1469,C,19.00,5.00,6.00,Female,1,Baseline,30 +1470,B,30.00,0.00,0.00,Female,0,Baseline,0 +1471,A,27.00,15.0,1.00,Male,1,Baseline,15 +1472,C,18.00,4.00,1.00,Male,1,Baseline,4 +1473,A,29.00,7.00,2.00,Female,1,Baseline,14 +1474,A,21.00,5.00,1.00,Female,1,Baseline,5 +1475,A,19.00,2.00,4.00,Female,1,Baseline,8 +1476,B,22.00,5.00,8.00,Female,1,Baseline,40 +1479,B,21.00,3.00,2.00,Female,1,Baseline,6 +1480,C,31.00,13.0,6.00,Male,1,Baseline,78 +1481,C,20.00,6.00,6.00,Female,1,Baseline,36 +1482,A,24.00,5.00,3.00,Female,1,Baseline,15 +1483,C,22.00,2.00,1.00,Male,1,Baseline,2 +1485,B,24.00,2.00,9.00,Female,1,Baseline,18 +1486,A,19.00,1.00,3.00,Female,1,Baseline,3 +1487,A,21.00,0.00,0.00,Male,0,Baseline,0 +1488,B,21.00,0.00,0.00,Male,0,Baseline,0 +1489,B,21.00,5.00,14.0,Male,1,Baseline,70 +1490,A,18.00,2.00,1.00,Female,1,Baseline,2 +1492,A,29.00,16.0,3.00,Male,1,Baseline,48 +1493,C,26.00,8.00,3.00,Female,1,Baseline,24 +1494,B,17.00,8.00,4.00,Female,1,Baseline,32 +1495,C,20.00,8.00,7.00,Female,1,Baseline,56 +1496,C,19.00,2.00,5.00,Male,1,Baseline,10 +1497,A,19.00,8.00,8.00,Female,1,Baseline,64 +1498,C,18.00,2.00,1.00,Male,1,Baseline,2 +1499,C,20.00,3.00,9.00,Female,1,Baseline,27 +1500,A,18.00,4.00,8.00,Male,1,Baseline,32 +1501,B,22.00,0.00,0.00,Male,0,Baseline,0 +1502,B,22.00,0.00,0.00,Female,0,Baseline,0 +1504,B,22.00,3.00,1.00,Female,1,Baseline,3 +1505,A,29.00,3.00,1.00,Male,1,Baseline,3 +1506,A,28.00,2.00,5.00,Female,1,Baseline,10 +1507,C,18.00,5.00,6.00,Female,1,Baseline,30 +1508,B,22.00,4.00,3.00,Male,1,Baseline,12 +1509,C,23.00,8.00,3.00,Male,1,Baseline,24 +1510,C,20.00,1.00,1.00,Female,1,Baseline,1 +1512,A,22.00,7.00,2.00,Male,1,Baseline,14 +1513,A,17.00,0.00,0.00,Male,0,Baseline,0 +1514,A,23.00,0.00,0.00,Female,0,Baseline,0 +1515,B,22.00,5.00,2.00,Male,1,Baseline,10 +1516,C,19.00,2.00,5.00,Male,1,Baseline,10 +1517,A,22.00,2.00,3.00,Female,1,Baseline,6 +1519,B,25.00,0.00,0.00,Male,0,Baseline,0 +1520,C,20.00,6.00,7.00,Female,1,Baseline,42 +1521,B,19.00,3.00,5.00,Female,1,Baseline,15 +1522,A,18.00,2.00,1.00,Male,1,Baseline,2 +1523,B,21.00,7.00,6.00,Female,1,Baseline,42 +1524,A,47.00,4.00,1.00,Female,1,Baseline,4 +1525,B,21.00,1.00,1.00,Male,1,Baseline,1 +1526,B,20.00,4.00,5.00,Male,1,Baseline,20 +1527,C,20.00,1.00,1.00,Male,1,Baseline,1 +1528,A,18.00,7.00,10.0,Female,1,Baseline,70 +1529,B,22.00,10.0,15.0,Male,1,Baseline,150 +1530,B,23.00,3.00,2.00,Male,1,Baseline,6 +1531,C,21.00,10.0,4.00,Female,1,Baseline,40 +1532,B,37.00,4.00,4.00,Male,1,Baseline,16 +1533,A,47.00,4.00,1.00,Female,1,Baseline,4 +1534,C,27.00,2.00,3.00,Female,1,Baseline,6 +1535,A,22.00,8.00,4.00,Female,1,Baseline,32 +1536,A,22.00,2.00,4.00,Female,1,Baseline,8 +1538,C,20.00,3.00,1.00,Female,1,Baseline,3 +1539,A,20.00,3.00,4.00,Female,1,Baseline,12 +1541,C,21.00,7.00,12.0,Male,1,Baseline,84 +1542,C,30.00,1.00,2.00,Female,1,Baseline,2 +1543,A,19.00,5.00,8.00,Female,1,Baseline,40 +1544,A,25.00,12.0,4.00,Male,1,Baseline,48 +1545,C,29.00,8.00,10.0,Female,1,Baseline,80 +1546,B,21.00,2.00,5.00,Female,1,Baseline,10 +1547,B,22.00,4.00,15.0,Male,1,Baseline,60 +1548,A,19.00,2.00,8.00,Female,1,Baseline,16 +1549,A,18.00,3.00,5.00,Female,1,Baseline,15 +1550,B,29.00,3.00,3.00,Male,1,Baseline,9 +1551,B,18.00,0.00,0.00,Female,0,Baseline,0 +1552,C,27.00,0.00,0.00,Female,0,Baseline,0 +1553,B,22.00,4.00,2.00,Female,1,Baseline,8 +1554,A,18.00,5.00,9.00,Female,1,Baseline,45 +1556,B,26.00,10.0,4.00,Female,1,Baseline,40 +1557,C,21.00,2.00,8.00,Female,1,Baseline,16 +1558,B,22.00,6.00,10.0,Male,1,Baseline,60 +1559,A,19.00,6.00,1.00,Male,1,Baseline,6 +1560,A,21.00,8.00,15.0,Male,1,Baseline,120 +1561,B,29.00,4.00,6.00,Male,1,Baseline,24 +1564,B,19.00,1.00,3.00,Male,1,Baseline,3 +1566,C,21.00,7.00,5.00,Female,1,Baseline,35 +1567,B,23.00,20.0,2.00,Male,1,Baseline,40 +1568,A,21.00,2.00,4.00,Female,1,Baseline,8 +1569,B,18.00,1.00,1.00,Female,1,Baseline,1 +1570,A,29.00,3.00,2.00,Female,1,Baseline,6 +1571,A,42.00,2.00,3.00,Female,1,Baseline,6 +1572,A,20.00,3.00,8.00,Female,1,Baseline,24 +1573,C,22.00,8.00,2.00,Female,1,Baseline,16 +1574,C,21.00,3.00,12.0,Male,1,Baseline,36 +1576,A,36.00,3.00,9.00,Female,1,Baseline,27 +1578,A,24.00,8.00,1.00,Female,1,Baseline,8 +1579,C,35.00,0.00,0.00,Female,0,Baseline,0 +1580,C,21.00,4.00,2.00,Male,1,Baseline,8 +1581,C,20.00,0.00,0.00,Female,0,Baseline,0 +1582,C,19.00,5.00,8.00,Female,1,Baseline,40 +1583,A,47.00,1.00,3.00,Female,1,Baseline,3 +1584,B,19.00,4.00,1.00,Male,1,Baseline,4 +1585,B,19.00,5.00,9.00,Female,1,Baseline,45 +1586,C,20.00,4.00,8.00,Female,1,Baseline,32 +1588,A,18.00,4.00,12.0,Male,1,Baseline,48 +1589,C,35.00,2.00,2.00,Male,1,Baseline,4 +1590,C,20.00,2.00,1.00,Female,1,Baseline,2 +1591,A,49.00,12.0,1.00,Female,1,Baseline,12 +1592,A,19.00,9.00,2.00,Male,1,Baseline,18 +1593,A,19.00,0.00,0.00,Female,0,Baseline,0 +1594,C,19.00,3.00,3.00,Male,1,Baseline,9 +1595,A,18.00,0.00,0.00,Female,0,Baseline,0 +1596,A,21.00,4.00,5.00,Female,1,Baseline,20 +1597,C,24.00,0.00,0.00,Male,0,Baseline,0 +1598,A,20.00,6.00,4.00,Female,1,Baseline,24 +1600,B,18.00,7.00,3.00,Female,1,Baseline,21 +1601,B,18.00,22.0,2.00,Female,1,Baseline,44 +1602,A,28.00,0.00,0.00,Female,0,Baseline,0 +1603,B,27.00,3.00,3.00,Female,1,Baseline,9 +1604,C,20.00,9.00,2.00,Male,1,Baseline,18 +1605,C,21.00,2.00,5.00,Female,1,Baseline,10 +1606,A,20.00,1.00,2.00,Male,1,Baseline,2 +1607,C,20.00,4.00,5.00,Female,1,Baseline,20 +1608,C,18.00,5.00,5.00,Female,1,Baseline,25 +1609,A,21.00,2.00,4.00,Female,1,Baseline,8 +1610,A,65.00,2.00,1.00,Female,1,Baseline,2 +1611,B,23.00,0.00,0.00,Female,0,Baseline,0 +1612,B,19.00,6.00,8.00,Female,1,Baseline,48 +1613,A,19.00,9.00,10.0,Female,1,Baseline,90 +1614,B,18.00,2.00,7.00,Female,1,Baseline,14 +1615,A,19.00,0.00,0.00,Female,0,Baseline,0 +1616,A,19.00,2.00,1.00,Female,1,Baseline,2 +1617,B,18.00,4.00,7.00,Male,1,Baseline,28 +1618,A,23.00,4.00,18.0,Male,1,Baseline,72 +1620,A,21.00,12.0,8.00,Male,1,Baseline,96 +1621,C,25.00,20.0,2.00,Female,1,Baseline,40 +1622,B,35.00,0.00,0.00,Male,0,Baseline,0 +1623,A,21.00,6.00,8.00,Female,1,Baseline,48 +1624,B,21.00,6.00,15.0,Female,1,Baseline,90 +1625,A,21.00,3.00,7.00,Male,1,Baseline,21 +1626,B,19.00,4.00,5.00,Female,1,Baseline,20 +1627,A,18.00,3.00,5.00,Female,1,Baseline,15 +1628,A,19.00,4.00,8.00,Female,1,Baseline,32 +1629,B,23.00,7.00,11.0,Female,1,Baseline,77 +1630,A,19.00,10.0,3.00,Male,1,Baseline,30 +1631,A,22.00,7.00,7.00,Female,1,Baseline,49 +1632,C,18.00,3.00,4.00,Male,1,Baseline,12 +1633,B,19.00,4.00,2.00,Female,1,Baseline,8 +1635,A,20.00,4.00,7.00,Male,1,Baseline,28 +1636,B,27.00,2.00,2.00,Female,1,Baseline,4 +1637,A,27.00,0.00,0.00,Female,0,Baseline,0 +1640,C,20.00,1.00,5.00,Female,1,Baseline,5 +1641,A,20.00,7.00,1.00,Female,1,Baseline,7 +1642,B,21.00,2.00,1.00,Male,1,Baseline,2 +1643,A,21.00,2.00,4.00,Female,1,Baseline,8 +1644,C,19.00,3.00,6.00,Female,1,Baseline,18 +1645,C,20.00,4.00,5.00,Male,1,Baseline,20 +1646,B,20.00,6.00,3.00,Female,1,Baseline,18 +1647,A,21.00,5.00,15.0,Male,1,Baseline,75 +1648,A,19.00,9.00,13.0,Male,1,Baseline,117 +1649,A,19.00,0.00,0.00,Male,0,Baseline,0 +1650,B,19.00,4.00,2.00,Female,1,Baseline,8 +1651,A,22.00,8.00,4.00,Female,1,Baseline,32 +1652,B,18.00,2.00,4.00,Male,1,Baseline,8 +1653,A,18.00,1.00,2.00,Male,1,Baseline,2 +1655,A,20.00,1.00,3.00,Male,1,Baseline,3 +1656,A,20.00,4.00,3.00,Female,1,Baseline,12 +1657,B,51.00,28.0,2.00,Male,1,Baseline,56 +1658,B,21.00,4.00,3.00,Female,1,Baseline,12 +1661,A,25.00,0.00,0.00,Male,0,Baseline,0 +1662,C,19.00,4.00,4.00,Male,1,Baseline,16 +1663,A,23.00,0.00,0.00,Male,0,Baseline,0 +1666,A,21.00,4.00,10.0,Female,1,Baseline,40 +1667,A,22.00,0.00,0.00,Female,0,Baseline,0 +1668,A,19.00,4.00,7.00,Male,1,Baseline,28 +1669,A,19.00,10.0,4.00,Male,1,Baseline,40 +1670,C,20.00,6.00,4.00,Male,1,Baseline,24 +1671,B,19.00,2.00,10.0,Female,1,Baseline,20 +1672,C,19.00,7.00,8.00,Female,1,Baseline,56 +1673,A,30.00,18.0,1.00,Female,1,Baseline,18 +1674,A,42.00,2.00,2.00,Male,1,Baseline,4 +1676,C,23.00,5.00,5.00,Female,1,Baseline,25 +1679,C,18.00,0.00,0.00,Female,0,Baseline,0 +1680,A,18.00,5.00,4.00,Female,1,Baseline,20 +1681,C,27.00,0.00,0.00,Female,0,Baseline,0 +1682,C,21.00,3.00,4.00,Female,1,Baseline,12 +1684,B,21.00,1.00,1.00,Male,1,Baseline,1 +1685,A,19.00,4.00,10.0,Female,1,Baseline,40 +1686,A,19.00,7.00,5.00,Female,1,Baseline,35 +1687,C,20.00,4.00,10.0,Female,1,Baseline,40 +1689,A,32.00,0.00,0.00,Male,0,Baseline,0 +1690,B,33.00,6.00,2.00,Female,1,Baseline,12 +1691,C,22.00,7.00,4.00,Female,1,Baseline,28 +1693,A,21.00,3.00,2.00,Female,1,Baseline,6 +1695,A,22.00,8.00,4.00,Female,1,Baseline,32 +1697,B,19.00,8.00,1.00,Female,1,Baseline,8 +1698,B,22.00,10.0,5.00,Male,1,Baseline,50 +1699,A,20.00,3.00,2.00,Female,1,Baseline,6 +1700,C,19.00,0.00,0.00,Female,0,Baseline,0 +1702,B,20.00,1.00,1.00,Female,1,Baseline,1 +1703,A,21.00,5.00,9.00,Female,1,Baseline,45 +1705,C,25.00,25.0,1.00,Female,1,Baseline,25 +1706,B,22.00,3.00,2.00,Female,1,Baseline,6 +1708,B,21.00,5.00,8.00,Female,1,Baseline,40 +1709,C,22.00,6.00,2.00,Male,1,Baseline,12 +1711,B,28.00,1.00,1.00,Female,1,Baseline,1 +1713,B,19.00,6.00,4.00,Female,1,Baseline,24 +1714,C,21.00,2.00,8.00,Male,1,Baseline,16 +1716,A,21.00,4.00,8.00,Male,1,Baseline,32 +1717,B,20.00,3.00,2.00,Female,1,Baseline,6 +1718,A,20.00,2.00,10.0,Male,1,Baseline,20 +1719,B,20.00,4.00,2.00,Female,1,Baseline,8 +1721,C,22.00,3.00,6.00,Female,1,Baseline,18 +1722,C,21.00,2.00,5.00,Female,1,Baseline,10 +1723,B,24.00,4.00,3.00,Female,1,Baseline,12 +1725,C,20.00,5.00,4.00,Female,1,Baseline,20 +1726,B,23.00,0.00,0.00,Male,0,Baseline,0 +1727,B,20.00,2.00,1.00,Female,1,Baseline,2 +1728,C,20.00,1.00,2.00,Female,1,Baseline,2 +1729,A,21.00,1.00,8.00,Male,1,Baseline,8 +1731,C,21.00,0.00,0.00,Female,0,Baseline,0 +1732,B,22.00,15.0,7.00,Male,1,Baseline,105 +1734,B,21.00,3.00,5.00,Female,1,Baseline,15 +1735,B,22.00,5.00,3.00,Male,1,Baseline,15 +1737,C,21.00,5.00,10.0,Female,1,Baseline,50 +1738,A,18.00,6.00,2.00,Female,1,Baseline,12 +1739,B,21.00,2.00,4.00,Female,1,Baseline,8 +1740,C,20.00,26.0,4.00,Male,1,Baseline,104 +1741,B,19.00,12.0,20.0,Male,1,Baseline,240 +1742,A,19.00,3.00,6.00,Female,1,Baseline,18 +1743,C,19.00,1.00,1.00,Male,1,Baseline,1 +1745,C,21.00,3.00,1.00,Female,1,Baseline,3 +1747,A,23.00,0.00,0.00,Female,0,Baseline,0 +1748,A,19.00,9.00,7.00,Female,1,Baseline,63 +1749,A,22.00,3.00,5.00,Female,1,Baseline,15 +1750,C,22.00,6.00,15.0,Male,1,Baseline,90 +1751,B,21.00,6.00,4.00,Female,1,Baseline,24 +1752,B,18.00,2.00,4.00,Male,1,Baseline,8 +1753,A,20.00,0.00,0.00,Female,0,Baseline,0 +1754,A,20.00,3.00,3.00,Female,1,Baseline,9 +1755,A,37.00,0.00,0.00,Female,0,Baseline,0 +1756,A,20.00,13.0,14.0,Male,1,Baseline,182 +1757,A,19.00,2.00,1.00,Male,1,Baseline,2 +1758,B,23.00,3.00,5.00,Female,1,Baseline,15 +1759,B,20.00,5.00,4.00,Female,1,Baseline,20 +1760,B,21.00,4.00,5.00,Male,1,Baseline,20 +1761,B,21.00,3.00,2.00,Male,1,Baseline,6 +1762,A,29.00,19.0,1.00,Female,1,Baseline,19 +1763,C,20.00,2.00,1.00,Female,1,Baseline,2 +1764,A,19.00,0.00,0.00,Female,0,Baseline,0 +1766,A,20.00,0.00,0.00,Female,0,Baseline,0 +1769,A,42.00,28.0,1.00,Female,1,Baseline,28 +1770,B,21.00,4.00,3.00,Female,1,Baseline,12 +1771,C,21.00,2.00,10.0,Female,1,Baseline,20 +1772,C,20.00,7.00,16.0,Male,1,Baseline,112 +1773,B,21.00,15.0,1.00,Male,1,Baseline,15 +1774,C,20.00,4.00,13.0,Male,1,Baseline,52 +1775,B,18.00,3.00,4.00,Female,1,Baseline,12 +1776,C,22.00,0.00,0.00,Female,0,Baseline,0 +1777,C,20.00,0.00,0.00,Male,0,Baseline,0 +1778,A,20.00,12.0,8.00,Female,1,Baseline,96 +1780,A,22.00,28.0,4.00,Male,1,Baseline,112 +1781,A,23.00,3.00,1.00,Male,1,Baseline,3 +1782,B,27.00,28.0,1.00,Male,1,Baseline,28 +1783,B,20.00,4.00,7.00,Male,1,Baseline,28 +1784,A,26.00,0.00,0.00,Female,0,Baseline,0 +1787,C,20.00,3.00,1.00,Female,1,Baseline,3 +1788,B,20.00,10.0,10.0,Male,1,Baseline,100 +1789,C,19.00,6.00,20.0,Male,1,Baseline,120 +1790,C,21.00,0.00,0.00,Male,0,Baseline,0 +1791,C,24.00,1.00,2.00,Male,1,Baseline,2 +1792,B,20.00,1.00,1.00,Female,1,Baseline,1 +1793,A,26.00,7.00,3.00,Female,1,Baseline,21 +1794,C,27.00,2.00,2.00,Female,1,Baseline,4 +1795,A,22.00,6.00,1.00,Male,1,Baseline,6 +1799,B,20.00,1.00,4.00,Female,1,Baseline,4 +1800,B,20.00,6.00,6.00,Female,1,Baseline,36 +1802,A,30.00,4.00,2.00,Female,1,Baseline,8 +1803,B,21.00,9.00,6.00,Female,1,Baseline,54 +1804,A,21.00,2.00,5.00,Female,1,Baseline,10 +1805,A,19.00,3.00,1.00,Female,1,Baseline,3 +1806,A,36.00,12.0,1.00,Female,1,Baseline,12 +1808,B,18.00,3.00,1.00,Female,1,Baseline,3 +1809,A,24.00,14.0,2.00,Female,1,Baseline,28 +1810,B,21.00,3.00,10.0,Female,1,Baseline,30 +1812,A,21.00,26.0,6.00,Male,1,Baseline,156 +1813,B,33.00,4.00,2.00,Female,1,Baseline,8 +1814,B,22.00,5.00,5.00,Female,1,Baseline,25 +1815,B,20.00,5.00,2.00,Male,1,Baseline,10 +1816,B,26.00,1.00,2.00,Male,1,Baseline,2 +1817,B,29.00,0.00,0.00,Female,0,Baseline,0 +1818,B,21.00,0.00,0.00,Female,0,Baseline,0 +1819,A,21.00,4.00,7.00,Female,1,Baseline,28 +1820,A,42.00,27.0,2.00,Female,1,Baseline,54 +1821,B,30.00,7.00,1.00,Female,1,Baseline,7 +1822,B,21.00,4.00,5.00,Female,1,Baseline,20 +1824,C,19.00,0.00,0.00,Male,0,Baseline,0 +1825,A,19.00,2.00,12.0,Male,1,Baseline,24 +1826,B,20.00,3.00,2.00,Female,1,Baseline,6 +1827,A,21.00,2.00,2.00,Female,1,Baseline,4 +1828,C,25.00,9.00,12.0,Male,1,Baseline,108 +1829,B,19.00,10.0,10.0,Male,1,Baseline,100 +1830,B,21.00,4.00,3.00,Male,1,Baseline,12 +1831,B,22.00,5.00,3.00,Female,1,Baseline,15 +1833,B,19.00,1.00,1.00,Male,1,Baseline,1 +1835,C,19.00,1.00,2.00,Female,1,Baseline,2 +1836,B,51.00,12.0,1.00,Female,1,Baseline,12 +1837,B,22.00,8.00,16.0,Male,1,Baseline,128 +1838,C,24.00,4.00,7.00,Female,1,Baseline,28 +1839,B,19.00,4.00,3.00,Female,1,Baseline,12 +1840,A,49.00,2.00,2.00,Female,1,Baseline,4 +1841,B,20.00,0.00,0.00,Female,0,Baseline,0 +1842,B,38.00,0.00,0.00,Male,0,Baseline,0 +1843,C,20.00,1.00,3.00,Female,1,Baseline,3 +1845,C,23.00,5.00,2.00,Female,1,Baseline,10 +1846,C,19.00,3.00,6.00,Female,1,Baseline,18 +1847,C,18.00,3.00,7.00,Male,1,Baseline,21 +1849,C,41.00,9.00,2.00,Female,1,Baseline,18 +1851,A,23.00,2.00,7.00,Male,1,Baseline,14 +1852,C,24.00,0.00,0.00,Female,0,Baseline,0 +1853,C,21.00,2.00,10.0,Male,1,Baseline,20 +1854,A,18.00,0.00,0.00,Female,0,Baseline,0 +1855,B,23.00,0.00,0.00,Male,0,Baseline,0 +1856,C,19.00,3.00,5.00,Female,1,Baseline,15 +1857,C,21.00,0.00,0.00,Female,0,Baseline,0 +1859,A,21.00,2.00,3.00,Female,1,Baseline,6 +1860,A,28.00,20.0,2.00,Female,1,Baseline,40 +1862,B,26.00,0.00,0.00,Female,0,Baseline,0 +1863,A,18.00,5.00,5.00,Female,1,Baseline,25 +1864,C,23.00,0.00,0.00,Female,0,Baseline,0 +1865,B,19.00,6.00,8.00,Female,1,Baseline,48 +1866,B,58.00,2.00,1.00,Female,1,Baseline,2 +1867,C,20.00,2.00,7.00,Female,1,Baseline,14 +1869,A,19.00,0.00,0.00,Female,0,Baseline,0 +1870,C,20.00,2.00,5.00,Female,1,Baseline,10 +1871,B,23.00,3.00,8.00,Male,1,Baseline,24 +1872,B,19.00,0.00,0.00,Female,0,Baseline,0 +1873,C,23.00,2.00,6.00,Female,1,Baseline,12 +1874,B,19.00,5.00,8.00,Female,1,Baseline,40 +1875,A,19.00,4.00,17.0,Male,1,Baseline,68 +1877,A,20.00,8.00,9.00,Male,1,Baseline,72 +1878,B,21.00,3.00,5.00,Female,1,Baseline,15 +1879,C,18.00,1.00,4.00,Male,1,Baseline,4 +1880,B,21.00,3.00,5.00,Female,1,Baseline,15 +1881,B,22.00,4.00,1.00,Male,1,Baseline,4 +1883,A,21.00,4.00,2.00,Male,1,Baseline,8 +1884,C,19.00,12.0,3.00,Male,1,Baseline,36 +1885,B,24.00,4.00,2.00,Female,1,Baseline,8 +1888,B,22.00,5.00,7.00,Male,1,Baseline,35 +1889,B,20.00,2.00,3.00,Female,1,Baseline,6 +1890,B,21.00,3.00,5.00,Female,1,Baseline,15 +1891,A,25.00,0.00,0.00,Female,0,Baseline,0 +1892,C,48.00,12.0,1.00,Female,1,Baseline,12 +1895,C,24.00,0.00,0.00,Female,0,Baseline,0 +1896,B,23.00,0.00,0.00,Female,0,Baseline,0 +1897,B,24.00,4.00,2.00,Female,1,Baseline,8 +1898,C,18.00,0.00,0.00,Female,0,Baseline,0 +1899,A,19.00,2.00,3.00,Female,1,Baseline,6 +1901,B,22.00,0.00,0.00,Male,0,Baseline,0 +1902,C,31.00,4.00,3.00,Male,1,Baseline,12 +1903,A,18.00,4.00,6.00,Male,1,Baseline,24 +1904,C,19.00,2.00,6.00,Female,1,Baseline,12 +1905,A,21.00,8.00,14.0,Male,1,Baseline,112 +1906,A,23.00,2.00,2.00,Male,1,Baseline,4 +1907,A,21.00,3.00,5.00,Female,1,Baseline,15 +1908,A,18.00,4.00,2.00,Female,1,Baseline,8 +1909,B,24.00,6.00,10.0,Male,1,Baseline,60 +1910,C,23.00,5.00,3.00,Male,1,Baseline,15 +1911,B,24.00,4.00,12.0,Female,1,Baseline,48 +1912,B,23.00,4.00,6.00,Male,1,Baseline,24 +1913,C,21.00,0.00,0.00,Female,0,Baseline,0 +1914,B,23.00,5.00,12.0,Male,1,Baseline,60 +1915,B,41.00,2.00,1.00,Male,1,Baseline,2 +1916,B,22.00,1.00,5.00,Female,1,Baseline,5 +1917,B,21.00,6.00,2.00,Female,1,Baseline,12 +1918,C,18.00,4.00,6.00,Female,1,Baseline,24 +1919,B,18.00,0.00,0.00,Female,0,Baseline,0 +1920,A,21.00,0.00,0.00,Female,0,Baseline,0 +1922,B,22.00,2.00,3.00,Female,1,Baseline,6 +1923,A,22.00,0.00,0.00,Male,0,Baseline,0 +1924,C,20.00,1.00,4.00,Female,1,Baseline,4 +1926,A,24.00,5.00,2.00,Male,1,Baseline,10 +1927,A,21.00,6.00,8.00,Male,1,Baseline,48 +1928,B,22.00,1.00,10.0,Male,1,Baseline,10 +1929,A,23.00,14.0,4.00,Female,1,Baseline,56 +1930,B,19.00,3.00,2.00,Male,1,Baseline,6 +1931,A,24.00,1.00,8.00,Female,1,Baseline,8 +1932,C,19.00,3.00,1.00,Male,1,Baseline,3 +1934,C,19.00,4.00,6.00,Female,1,Baseline,24 +1936,B,18.00,1.00,4.00,Female,1,Baseline,4 +1937,A,21.00,4.00,2.00,Female,1,Baseline,8 +1938,C,19.00,4.00,5.00,Female,1,Baseline,20 +1939,A,21.00,19.0,1.00,Male,1,Baseline,19 +1940,C,20.00,2.00,8.00,Female,1,Baseline,16 +1941,C,21.00,2.00,7.00,Female,1,Baseline,14 +1942,A,19.00,0.00,0.00,Female,0,Baseline,0 +1943,C,22.00,3.00,1.00,Female,1,Baseline,3 +1944,C,25.00,7.00,2.00,Female,1,Baseline,14 +1945,B,27.00,15.0,2.00,Male,1,Baseline,30 +1946,A,20.00,1.00,2.00,Male,1,Baseline,2 +1948,B,22.00,0.00,0.00,Female,0,Baseline,0 +1951,B,55.00,0.00,0.00,Male,0,Baseline,0 +1952,A,21.00,7.00,12.0,Male,1,Baseline,84 +1953,A,22.00,1.00,3.00,Female,1,Baseline,3 +1954,A,24.00,5.00,2.00,Male,1,Baseline,10 +1955,C,31.00,28.0,1.00,Male,1,Baseline,28 +1957,A,19.00,1.00,5.00,Male,1,Baseline,5 +1958,A,19.00,0.00,0.00,Female,0,Baseline,0 +1960,A,19.00,10.0,7.00,Female,1,Baseline,70 +1961,C,23.00,9.00,6.00,Female,1,Baseline,54 +1962,B,22.00,0.00,0.00,Male,0,Baseline,0 +1963,C,23.00,3.00,1.00,Female,1,Baseline,3 +1965,A,19.00,10.0,18.0,Male,1,Baseline,180 +1966,A,20.00,2.00,5.00,Female,1,Baseline,10 +1967,B,30.00,7.00,1.00,Female,1,Baseline,7 +1968,A,21.00,5.00,1.00,Female,1,Baseline,5 +1969,A,18.00,0.00,0.00,Female,0,Baseline,0 +1970,A,19.00,7.00,12.0,Male,1,Baseline,84 +1971,A,25.00,4.00,6.00,Female,1,Baseline,24 +1972,B,28.00,1.00,2.00,Female,1,Baseline,2 +1973,B,27.00,2.00,1.00,Male,1,Baseline,2 +1975,C,21.00,8.00,8.00,Male,1,Baseline,64 +1976,B,21.00,0.00,0.00,Male,0,Baseline,0 +1977,C,25.00,4.00,2.00,Female,1,Baseline,8 +1978,A,29.00,1.00,3.00,Male,1,Baseline,3 +1980,A,22.00,8.00,4.00,Female,1,Baseline,32 +1982,B,21.00,0.00,0.00,Female,0,Baseline,0 +1983,A,19.00,6.00,6.00,Female,1,Baseline,36 +1984,C,19.00,3.00,8.00,Female,1,Baseline,24 +1985,A,22.00,10.0,2.00,Female,1,Baseline,20 +1986,C,18.00,1.00,1.00,Male,1,Baseline,1 +1987,C,20.00,10.0,6.00,Female,1,Baseline,60 +1988,C,44.00,2.00,1.00,Female,1,Baseline,2 +1989,C,23.00,2.00,2.00,Male,1,Baseline,4 +1990,B,36.00,2.00,1.00,Female,1,Baseline,2 +1991,C,24.00,4.00,1.00,Female,1,Baseline,4 +1992,A,22.00,9.00,5.00,Male,1,Baseline,45 +1993,B,29.00,5.00,16.0,Male,1,Baseline,80 +1994,C,18.00,4.00,1.00,Male,1,Baseline,4 +1996,C,20.00,1.00,1.00,Female,1,Baseline,1 +1998,A,20.00,0.00,0.00,Female,0,Baseline,0 +1999,C,21.00,7.00,6.00,Female,1,Baseline,42 +2000,B,21.00,7.00,5.00,Female,1,Baseline,35 +2001,C,22.00,2.00,10.0,Male,1,Baseline,20 +2002,B,18.00,3.00,10.0,Male,1,Baseline,30 +2004,B,38.00,8.00,4.00,Male,1,Baseline,32 +2005,C,49.00,1.00,1.00,Female,1,Baseline,1 +2006,A,59.00,24.0,4.00,Male,1,Baseline,96 +2007,C,22.00,2.00,13.0,Male,1,Baseline,26 +2008,A,26.00,2.00,3.00,Male,1,Baseline,6 +2009,B,25.00,5.00,2.00,Male,1,Baseline,10 +2010,A,20.00,0.00,0.00,Female,0,Baseline,0 +2011,A,20.00,1.00,4.00,Female,1,Baseline,4 +2012,C,19.00,3.00,6.00,Female,1,Baseline,18 +2013,C,19.00,5.00,3.00,Female,1,Baseline,15 +2014,B,22.00,6.00,8.00,Female,1,Baseline,48 +2015,B,20.00,0.00,0.00,Female,0,Baseline,0 +2016,C,20.00,7.00,14.0,Male,1,Baseline,98 +2017,C,21.00,9.00,12.0,Male,1,Baseline,108 +2018,B,19.00,8.00,7.00,Female,1,Baseline,56 +2020,B,19.00,0.00,0.00,Female,0,Baseline,0 +2022,C,21.00,5.00,1.00,Male,1,Baseline,5 +2024,B,22.00,0.00,0.00,Female,0,Baseline,0 +2025,B,72.00,21.0,2.00,Female,1,Baseline,42 +2026,B,21.00,2.00,3.00,Male,1,Baseline,6 +2027,B,18.00,0.00,0.00,Female,0,Baseline,0 +2028,A,21.00,3.00,5.00,Female,1,Baseline,15 +2029,B,19.00,20.0,5.00,Male,1,Baseline,100 +2030,B,42.00,0.00,0.00,Male,0,Baseline,0 +2032,A,25.00,7.00,3.00,Female,1,Baseline,21 +2033,B,21.00,6.00,3.00,Female,1,Baseline,18 +2034,A,18.00,8.00,6.00,Female,1,Baseline,48 +2036,C,19.00,1.00,1.00,Female,1,Baseline,1 +2037,A,19.00,0.00,0.00,Female,0,Baseline,0 +2038,A,19.00,5.00,8.00,Female,1,Baseline,40 +2039,A,18.00,0.00,0.00,Female,0,Baseline,0 +2040,C,24.00,6.00,8.00,Female,1,Baseline,48 +2041,C,18.00,2.00,6.00,Male,1,Baseline,12 +2042,B,20.00,2.00,3.00,Female,1,Baseline,6 +2043,A,39.00,0.00,0.00,Male,0,Baseline,0 +2044,B,34.00,2.00,5.00,Female,1,Baseline,10 +2045,C,19.00,12.0,4.00,Female,1,Baseline,48 +2046,B,20.00,3.00,3.00,Female,1,Baseline,9 +2047,B,21.00,0.00,0.00,Male,0,Baseline,0 +2049,A,23.00,3.00,1.00,Male,1,Baseline,3 +2050,C,19.00,1.00,4.00,Female,1,Baseline,4 +2051,A,20.00,4.00,7.00,Female,1,Baseline,28 +2052,B,19.00,4.00,3.00,Female,1,Baseline,12 +2053,C,25.00,4.00,2.00,Female,1,Baseline,8 +2054,A,18.00,2.00,4.00,Male,1,Baseline,8 +2055,B,20.00,9.00,4.00,Male,1,Baseline,36 +2056,B,47.00,4.00,1.00,Male,1,Baseline,4 +2057,C,23.00,8.00,2.00,Male,1,Baseline,16 +2059,B,19.00,2.00,3.00,Female,1,Baseline,6 +2060,C,41.00,3.00,3.00,Female,1,Baseline,9 +2061,C,21.00,1.00,3.00,Female,1,Baseline,3 +2062,C,29.00,4.00,9.00,Female,1,Baseline,36 +2063,C,43.00,8.00,4.00,Female,1,Baseline,32 +2064,C,21.00,8.00,5.00,Female,1,Baseline,40 +2065,B,18.00,4.00,5.00,Female,1,Baseline,20 +2066,A,20.00,10.0,21.0,Male,1,Baseline,210 +2068,A,20.00,2.00,3.00,Female,1,Baseline,6 +2069,C,24.00,5.00,2.00,Male,1,Baseline,10 +2070,B,19.00,7.00,18.0,Male,1,Baseline,126 +2071,A,19.00,4.00,10.0,Male,1,Baseline,40 +2072,C,19.00,0.00,0.00,Female,0,Baseline,0 +2074,C,19.00,2.00,6.00,Female,1,Baseline,12 +2075,A,21.00,4.00,2.00,Female,1,Baseline,8 +2076,A,38.00,0.00,0.00,Female,0,Baseline,0 +2077,C,18.00,0.00,0.00,Male,0,Baseline,0 +2078,B,24.00,0.00,0.00,Female,0,Baseline,0 +2079,C,21.00,7.00,14.0,Female,1,Baseline,98 +2080,A,26.00,0.00,0.00,Male,0,Baseline,0 +2081,C,43.00,6.00,1.00,Male,1,Baseline,6 +2083,C,21.00,10.0,17.0,Male,1,Baseline,170 +2085,B,21.00,8.00,6.00,Male,1,Baseline,48 +2086,A,29.00,11.0,2.00,Male,1,Baseline,22 +2087,C,18.00,1.00,3.00,Female,1,Baseline,3 +2089,B,21.00,4.00,3.00,Female,1,Baseline,12 +2091,B,29.00,6.00,3.00,Male,1,Baseline,18 +2092,A,27.00,4.00,2.00,Female,1,Baseline,8 +2093,C,21.00,3.00,1.00,Female,1,Baseline,3 +2094,B,18.00,0.00,0.00,Male,0,Baseline,0 +2095,A,29.00,4.00,1.00,Female,1,Baseline,4 +2096,C,20.00,5.00,10.0,Female,1,Baseline,50 +2097,A,24.00,0.00,0.00,Female,0,Baseline,0 +2099,C,46.00,12.0,1.00,Female,1,Baseline,12 +2100,A,19.00,3.00,6.00,Male,1,Baseline,18 +2101,A,20.00,3.00,7.00,Male,1,Baseline,21 +2102,B,19.00,2.00,7.00,Female,1,Baseline,14 +2103,A,24.00,7.00,2.00,Female,1,Baseline,14 +2104,A,18.00,1.00,2.00,Female,1,Baseline,2 +2105,C,21.00,5.00,14.0,Male,1,Baseline,70 +2106,B,18.00,6.00,5.00,Female,1,Baseline,30 +2107,A,30.00,4.00,2.00,Female,1,Baseline,8 +2108,A,22.00,8.00,12.0,Male,1,Baseline,96 +2109,B,18.00,1.00,1.00,Male,1,Baseline,1 +2110,A,19.00,6.00,1.00,Female,1,Baseline,6 +2111,A,19.00,1.00,5.00,Female,1,Baseline,5 +2112,B,21.00,3.00,4.00,Female,1,Baseline,12 +2113,A,18.00,2.00,5.00,Female,1,Baseline,10 +2114,C,22.00,6.00,9.00,Female,1,Baseline,54 +2115,B,21.00,7.00,4.00,Male,1,Baseline,28 +2116,B,19.00,2.00,4.00,Female,1,Baseline,8 +2117,A,19.00,7.00,5.00,Female,1,Baseline,35 +2118,B,21.00,4.00,2.00,Female,1,Baseline,8 +2119,A,20.00,8.00,9.00,Female,1,Baseline,72 +2120,B,19.00,6.00,8.00,Male,1,Baseline,48 +2121,B,20.00,3.00,3.00,Female,1,Baseline,9 +2122,B,43.00,14.0,2.00,Female,1,Baseline,28 +2123,B,18.00,5.00,8.00,Female,1,Baseline,40 +2125,C,20.00,5.00,4.00,Female,1,Baseline,20 +2127,B,22.00,2.00,3.00,Female,1,Baseline,6 +2128,A,23.00,8.00,13.0,Male,1,Baseline,104 +2130,C,20.00,1.00,6.00,Female,1,Baseline,6 +2131,C,20.00,13.0,14.0,Male,1,Baseline,182 +2132,B,22.00,2.00,6.00,Male,1,Baseline,12 +2134,B,18.00,6.00,5.00,Female,1,Baseline,30 +2135,C,19.00,0.00,0.00,Male,0,Baseline,0 +2136,A,18.00,5.00,4.00,Female,1,Baseline,20 +2137,B,24.00,2.00,4.00,Male,1,Baseline,8 +2138,B,31.00,5.00,4.00,Male,1,Baseline,20 +2139,B,25.00,0.00,0.00,Female,0,Baseline,0 +2140,B,23.00,3.00,4.00,Male,1,Baseline,12 +2142,A,22.00,0.00,0.00,Female,0,Baseline,0 +2143,C,18.00,0.00,0.00,Female,0,Baseline,0 +2144,A,19.00,5.00,2.00,Female,1,Baseline,10 +2145,C,21.00,3.00,1.00,Female,1,Baseline,3 +2146,B,18.00,4.00,5.00,Female,1,Baseline,20 +2147,C,22.00,8.00,8.00,Female,1,Baseline,64 +2149,A,42.00,8.00,2.00,Female,1,Baseline,16 +2150,A,20.00,3.00,6.00,Female,1,Baseline,18 +2151,C,19.00,0.00,0.00,Female,0,Baseline,0 +2152,C,18.00,3.00,10.0,Male,1,Baseline,30 +2153,A,19.00,2.00,3.00,Female,1,Baseline,6 +2155,B,17.00,0.00,0.00,Female,0,Baseline,0 +2156,C,22.00,12.0,16.0,Male,1,Baseline,192 +2158,B,29.00,1.00,8.00,Male,1,Baseline,8 +2159,B,20.00,0.00,0.00,Female,0,Baseline,0 +2160,C,20.00,3.00,5.00,Female,1,Baseline,15 +2161,C,18.00,6.00,5.00,Female,1,Baseline,30 +2162,A,19.00,2.00,5.00,Female,1,Baseline,10 +2163,C,28.00,4.00,1.00,Female,1,Baseline,4 +2164,B,19.00,0.00,0.00,Female,0,Baseline,0 +2165,C,22.00,0.00,0.00,Male,0,Baseline,0 +2166,B,20.00,1.00,1.00,Male,1,Baseline,1 +2167,C,37.00,14.0,3.00,Male,1,Baseline,42 +2169,B,24.00,0.00,0.00,Female,0,Baseline,0 +2170,B,23.00,8.00,10.0,Male,1,Baseline,80 +2171,B,28.00,2.00,1.00,Female,1,Baseline,2 +2172,C,33.00,0.00,0.00,Female,0,Baseline,0 +2173,A,20.00,1.00,3.00,Female,1,Baseline,3 +2174,B,18.00,6.00,10.0,Female,1,Baseline,60 +2175,B,21.00,5.00,5.00,Male,1,Baseline,25 +2177,B,26.00,15.0,2.00,Female,1,Baseline,30 +2178,C,22.00,1.00,8.00,Male,1,Baseline,8 +2179,A,18.00,5.00,4.00,Female,1,Baseline,20 +2181,A,22.00,3.00,2.00,Male,1,Baseline,6 +2182,A,21.00,4.00,2.00,Female,1,Baseline,8 +2183,C,19.00,10.0,5.00,Female,1,Baseline,50 +2184,A,19.00,8.00,4.00,Female,1,Baseline,32 +2185,A,19.00,8.00,12.0,Male,1,Baseline,96 +2186,B,19.00,0.00,0.00,Male,0,Baseline,0 +2187,B,19.00,11.0,21.0,Male,1,Baseline,231 +2188,B,20.00,0.00,0.00,Female,0,Baseline,0 +2189,B,19.00,5.00,4.00,Female,1,Baseline,20 +2190,C,19.00,5.00,3.00,Female,1,Baseline,15 +2191,C,27.00,3.00,1.00,Female,1,Baseline,3 +2192,A,44.00,0.00,0.00,Female,0,Baseline,0 +2193,C,21.00,2.00,5.00,Female,1,Baseline,10 +2194,A,19.00,9.00,2.00,Female,1,Baseline,18 +2196,A,19.00,1.00,10.0,Female,1,Baseline,10 +2197,B,21.00,2.00,3.00,Female,1,Baseline,6 +2198,A,53.00,12.0,5.00,Male,1,Baseline,60 +2200,B,18.00,3.00,3.00,Female,1,Baseline,9 +2201,B,18.00,2.00,3.00,Male,1,Baseline,6 +2203,C,19.00,1.00,10.0,Male,1,Baseline,10 +2204,C,21.00,1.00,1.00,Male,1,Baseline,1 +2205,A,19.00,4.00,8.00,Female,1,Baseline,32 +2206,C,19.00,4.00,8.00,Male,1,Baseline,32 +2207,B,23.00,3.00,2.00,Female,1,Baseline,6 +2208,B,20.00,0.00,0.00,Female,0,Baseline,0 +2209,A,35.00,6.00,4.00,Female,1,Baseline,24 +2210,A,19.00,0.00,0.00,Female,0,Baseline,0 +2211,C,19.00,1.00,8.00,Female,1,Baseline,8 +2212,B,20.00,1.00,5.00,Female,1,Baseline,5 +2213,C,43.00,5.00,3.00,Female,1,Baseline,15 +2214,C,23.00,3.00,2.00,Male,1,Baseline,6 +2215,A,35.00,0.00,0.00,Female,0,Baseline,0 +2216,B,19.00,2.00,3.00,Female,1,Baseline,6 +2217,B,19.00,10.0,10.0,Male,1,Baseline,100 +2218,A,20.00,0.00,0.00,Female,0,Baseline,0 +2219,C,18.00,4.00,5.00,Female,1,Baseline,20 +2220,B,19.00,0.00,0.00,Female,0,Baseline,0 +2221,A,18.00,2.00,5.00,Female,1,Baseline,10 +2222,A,27.00,0.00,0.00,Female,0,Baseline,0 +2223,B,21.00,6.00,6.00,Female,1,Baseline,36 +2224,B,20.00,2.00,2.00,Male,1,Baseline,4 +2225,B,23.00,0.00,0.00,Female,0,Baseline,0 +2226,C,19.00,4.00,8.00,Female,1,Baseline,32 +2227,B,19.00,10.0,25.0,Male,1,Baseline,250 +2229,A,22.00,4.00,4.00,Male,1,Baseline,16 +2230,B,22.00,7.00,5.00,Female,1,Baseline,35 +2231,C,23.00,4.00,2.00,Male,1,Baseline,8 +2232,B,22.00,3.00,7.00,Female,1,Baseline,21 +2233,C,18.00,0.00,0.00,Female,0,Baseline,0 +2234,C,21.00,2.00,7.00,Female,1,Baseline,14 +2235,A,21.00,8.00,2.00,Female,1,Baseline,16 +2236,C,19.00,9.00,8.00,Female,1,Baseline,72 +2237,C,17.00,28.0,,Male,1,Baseline, +2238,A,20.00,6.00,3.00,Male,1,Baseline,18 +2239,B,23.00,2.00,4.00,Female,1,Baseline,8 +2240,A,18.00,13.0,2.00,Male,1,Baseline,26 +2241,B,41.00,2.00,2.00,Female,1,Baseline,4 +2242,B,24.00,4.00,4.00,Female,1,Baseline,16 +2243,B,19.00,8.00,12.0,Male,1,Baseline,96 +2244,B,20.00,6.00,12.0,Male,1,Baseline,72 +2246,C,19.00,3.00,10.0,Female,1,Baseline,30 +2247,A,20.00,20.0,3.00,Female,1,Baseline,60 +2248,C,23.00,3.00,12.0,Male,1,Baseline,36 +2250,C,27.00,6.00,8.00,Male,1,Baseline,48 +2251,B,22.00,4.00,5.00,Female,1,Baseline,20 +2252,C,37.00,0.00,0.00,Male,0,Baseline,0 +2253,A,25.00,6.00,1.00,Female,1,Baseline,6 +2255,B,20.00,2.00,1.00,Female,1,Baseline,2 +2256,A,25.00,0.00,0.00,Female,0,Baseline,0 +2257,B,20.00,0.00,0.00,Male,0,Baseline,0 +2258,A,20.00,2.00,4.00,Female,1,Baseline,8 +2259,C,18.00,0.00,0.00,Female,0,Baseline,0 +2260,C,25.00,4.00,2.00,Female,1,Baseline,8 +2263,B,25.00,8.00,1.00,Female,1,Baseline,8 +2264,C,21.00,8.00,22.0,Male,1,Baseline,176 +2265,A,20.00,3.00,5.00,Female,1,Baseline,15 +2266,C,21.00,0.00,0.00,Female,0,Baseline,0 +2267,A,22.00,4.00,1.00,Female,1,Baseline,4 +2268,B,19.00,1.00,8.00,Male,1,Baseline,8 +2269,B,22.00,7.00,1.00,Female,1,Baseline,7 +2270,B,19.00,0.00,0.00,Male,0,Baseline,0 +2271,A,22.00,1.00,6.00,Female,1,Baseline,6 +2272,B,30.00,4.00,2.00,Male,1,Baseline,8 +2273,B,18.00,6.00,10.0,Female,1,Baseline,60 +2274,A,21.00,8.00,3.00,Female,1,Baseline,24 +2275,B,18.00,4.00,5.00,Male,1,Baseline,20 +2276,B,20.00,2.00,4.00,Female,1,Baseline,8 +2278,A,20.00,1.00,3.00,Female,1,Baseline,3 +2279,A,18.00,3.00,1.00,Male,1,Baseline,3 +2280,B,20.00,3.00,5.00,Female,1,Baseline,15 +2281,C,21.00,3.00,15.0,Male,1,Baseline,45 +2282,B,19.00,8.00,8.00,Male,1,Baseline,64 +2283,C,21.00,8.00,8.00,Female,1,Baseline,64 +2285,B,20.00,1.00,12.0,Male,1,Baseline,12 +2286,A,18.00,6.00,3.00,Female,1,Baseline,18 +2287,B,19.00,3.00,2.00,Female,1,Baseline,6 +2288,C,22.00,3.00,4.00,Male,1,Baseline,12 +2289,A,22.00,3.00,2.00,Female,1,Baseline,6 +2292,B,19.00,0.00,0.00,Male,0,Baseline,0 +2293,B,18.00,2.00,8.00,Female,1,Baseline,16 +2294,C,20.00,8.00,16.0,Male,1,Baseline,128 +2296,A,20.00,0.00,0.00,Male,0,Baseline,0 +2297,A,19.00,5.00,1.00,Female,1,Baseline,5 +2298,C,22.00,0.00,0.00,Male,0,Baseline,0 +2299,B,26.00,12.0,5.00,Male,1,Baseline,60 +2300,A,19.00,8.00,10.0,Male,1,Baseline,80 +2301,B,20.00,3.00,7.00,Female,1,Baseline,21 +2303,C,27.00,0.00,0.00,Male,0,Baseline,0 +2304,A,24.00,3.00,4.00,Female,1,Baseline,12 +2305,A,21.00,4.00,2.00,Male,1,Baseline,8 +2306,B,30.00,7.00,12.0,Male,1,Baseline,84 +2307,A,18.00,4.00,6.00,Male,1,Baseline,24 +2308,A,18.00,1.00,4.00,Male,1,Baseline,4 +2309,B,21.00,4.00,8.00,Male,1,Baseline,32 +2310,A,21.00,5.00,4.00,Female,1,Baseline,20 +2311,B,32.00,4.00,2.00,Female,1,Baseline,8 +2312,B,22.00,4.00,3.00,Female,1,Baseline,12 +2313,A,22.00,0.00,0.00,Female,0,Baseline,0 +2314,B,18.00,0.00,0.00,Female,0,Baseline,0 +2315,C,22.00,0.00,0.00,Male,0,Baseline,0 +2316,C,31.00,1.00,1.00,Female,1,Baseline,1 +2317,A,22.00,4.00,12.0,Male,1,Baseline,48 +2318,C,21.00,8.00,18.0,Male,1,Baseline,144 +2320,C,22.00,6.00,1.00,Female,1,Baseline,6 +2321,C,20.00,4.00,10.0,Female,1,Baseline,40 +2322,C,19.00,7.00,6.00,Male,1,Baseline,42 +2323,C,18.00,8.00,5.00,Female,1,Baseline,40 +2324,C,19.00,3.00,1.00,Male,1,Baseline,3 +2325,B,20.00,9.00,18.0,Male,1,Baseline,162 +2326,C,20.00,8.00,8.00,Female,1,Baseline,64 +2327,B,20.00,8.00,2.00,Female,1,Baseline,16 +2328,A,21.00,5.00,6.00,Female,1,Baseline,30 +2329,B,18.00,2.00,4.00,Female,1,Baseline,8 +2330,C,22.00,3.00,1.00,Female,1,Baseline,3 +2331,C,21.00,0.00,0.00,Female,0,Baseline,0 +2332,B,18.00,3.00,6.00,Female,1,Baseline,18 +2333,B,20.00,15.0,2.00,Male,1,Baseline,30 +2334,C,32.00,2.00,1.00,Male,1,Baseline,2 +2335,A,30.00,3.00,5.00,Male,1,Baseline,15 +2336,B,21.00,14.0,4.00,Female,1,Baseline,56 +2338,C,36.00,0.00,0.00,Female,0,Baseline,0 +2339,B,21.00,2.00,6.00,Female,1,Baseline,12 +2340,B,45.00,20.0,3.00,Male,1,Baseline,60 +2341,B,21.00,2.00,7.00,Female,1,Baseline,14 +2342,C,22.00,11.0,4.00,Male,1,Baseline,44 +2343,A,20.00,2.00,6.00,Female,1,Baseline,12 +2344,C,20.00,5.00,5.00,Female,1,Baseline,25 +2345,A,18.00,5.00,6.00,Male,1,Baseline,30 +2347,A,49.00,4.00,10.0,Female,1,Baseline,40 +2348,C,25.00,8.00,6.00,Male,1,Baseline,48 +2351,C,18.00,0.00,0.00,Female,0,Baseline,0 +2352,C,20.00,6.00,2.00,Female,1,Baseline,12 +2353,A,19.00,7.00,10.0,Male,1,Baseline,70 +2354,C,20.00,4.00,5.00,Female,1,Baseline,20 +2355,A,21.00,10.0,5.00,Female,1,Baseline,50 +2356,A,22.00,6.00,3.00,Female,1,Baseline,18 +2357,B,20.00,6.00,3.00,Male,1,Baseline,18 +2358,B,20.00,4.00,4.00,Female,1,Baseline,16 +2359,A,21.00,3.00,5.00,Female,1,Baseline,15 +2361,C,19.00,1.00,6.00,Female,1,Baseline,6 +2362,A,20.00,4.00,5.00,Female,1,Baseline,20 +2363,A,21.00,4.00,6.00,Male,1,Baseline,24 +2364,A,17.00,0.00,0.00,Female,0,Baseline,0 +2365,C,20.00,3.00,10.0,Female,1,Baseline,30 +2366,C,48.00,8.00,1.00,Female,1,Baseline,8 +2367,B,20.00,6.00,4.00,Female,1,Baseline,24 +2369,B,18.00,0.00,0.00,Female,0,Baseline,0 +2370,B,22.00,5.00,2.00,Female,1,Baseline,10 +2371,B,21.00,4.00,6.00,Female,1,Baseline,24 +2372,B,21.00,7.00,2.00,Female,1,Baseline,14 +2373,B,20.00,9.00,10.0,Male,1,Baseline,90 +2374,B,21.00,1.00,1.00,Female,1,Baseline,1 +2375,A,18.00,0.00,0.00,Female,0,Baseline,0 +2376,C,34.00,9.00,1.00,Female,1,Baseline,9 +2377,C,28.00,0.00,0.00,Female,0,Baseline,0 +2378,B,22.00,0.00,0.00,Female,0,Baseline,0 +2379,A,20.00,0.00,0.00,Female,0,Baseline,0 +2380,B,22.00,1.00,6.00,Female,1,Baseline,6 +2382,B,19.00,3.00,11.0,Male,1,Baseline,33 +2383,A,46.00,2.00,1.00,Female,1,Baseline,2 +2384,B,22.00,7.00,2.00,Female,1,Baseline,14 +2385,C,34.00,0.00,0.00,Female,0,Baseline,0 +2387,B,21.00,6.00,1.00,Female,1,Baseline,6 +2388,B,21.00,20.0,15.0,Female,1,Baseline,300 +2389,C,22.00,4.00,2.00,Female,1,Baseline,8 +2390,A,23.00,4.00,8.00,Female,1,Baseline,32 +2391,A,23.00,2.00,2.00,Female,1,Baseline,4 +2392,B,31.00,0.00,0.00,Female,0,Baseline,0 +2393,B,22.00,0.00,0.00,Female,0,Baseline,0 +2394,B,20.00,4.00,5.00,Male,1,Baseline,20 +2395,B,22.00,0.00,0.00,Female,0,Baseline,0 +2396,A,18.00,3.00,5.00,Male,1,Baseline,15 +2397,A,30.00,0.00,0.00,Male,0,Baseline,0 +2398,B,42.00,0.00,0.00,Female,0,Baseline,0 +2399,A,23.00,4.00,2.00,Female,1,Baseline,8 +2400,A,25.00,0.00,0.00,Female,0,Baseline,0 +2401,B,18.00,3.00,6.00,Male,1,Baseline,18 +2403,A,22.00,0.00,0.00,Female,0,Baseline,0 +2404,C,20.00,2.00,2.00,Male,1,Baseline,4 +2405,B,18.00,4.00,10.0,Female,1,Baseline,40 +2407,B,18.00,8.00,10.0,Male,1,Baseline,80 +2408,C,20.00,0.00,0.00,Male,0,Baseline,0 +2409,C,21.00,4.00,12.0,Female,1,Baseline,48 +2410,C,18.00,2.00,7.00,Female,1,Baseline,14 +2412,C,23.00,1.00,10.0,Female,1,Baseline,10 +2413,B,22.00,0.00,0.00,Female,0,Baseline,0 +2414,C,22.00,2.00,3.00,Female,1,Baseline,6 +2415,A,19.00,0.00,0.00,Female,0,Baseline,0 +2417,B,18.00,1.00,6.00,Female,1,Baseline,6 +2418,A,18.00,1.00,2.00,Female,1,Baseline,2 +2419,A,19.00,0.00,0.00,Female,0,Baseline,0 +2421,C,32.00,1.00,3.00,Male,1,Baseline,3 +2422,B,28.00,1.00,2.00,Female,1,Baseline,2 +2423,A,22.00,1.00,2.00,Female,1,Baseline,2 +2424,B,23.00,3.00,6.00,Male,1,Baseline,18 +2425,B,19.00,0.00,0.00,Female,0,Baseline,0 +2426,C,20.00,8.00,2.00,Female,1,Baseline,16 +2427,B,27.00,3.00,1.00,Male,1,Baseline,3 +2428,B,20.00,8.00,14.0,Male,1,Baseline,112 +2429,A,36.00,0.00,0.00,Female,0,Baseline,0 +2430,B,20.00,9.00,6.00,Female,1,Baseline,54 +2431,A,23.00,12.0,1.00,Female,1,Baseline,12 +2432,A,21.00,8.00,10.0,Male,1,Baseline,80 +2433,C,21.00,7.00,12.0,Male,1,Baseline,84 +2434,C,22.00,3.00,1.00,Female,1,Baseline,3 +2436,A,20.00,5.00,3.00,Female,1,Baseline,15 +2437,C,23.00,4.00,2.00,Female,1,Baseline,8 +2438,B,31.00,8.00,1.00,Female,1,Baseline,8 +2439,C,18.00,6.00,8.00,Male,1,Baseline,48 +2440,A,19.00,4.00,6.00,Male,1,Baseline,24 +2441,C,21.00,0.00,0.00,Female,0,Baseline,0 +2442,B,28.00,3.00,2.00,Female,1,Baseline,6 +2443,A,21.00,0.00,0.00,Female,0,Baseline,0 +2444,C,22.00,1.00,3.00,Female,1,Baseline,3 +2445,A,21.00,1.00,3.00,Female,1,Baseline,3 +2446,A,19.00,2.00,5.00,Male,1,Baseline,10 +2448,A,38.00,1.00,1.00,Female,1,Baseline,1 +2449,B,59.00,14.0,2.00,Male,1,Baseline,28 +2451,B,22.00,1.00,3.00,Female,1,Baseline,3 +2452,C,20.00,0.00,0.00,Female,0,Baseline,0 +2453,C,21.00,4.00,7.00,Female,1,Baseline,28 +2454,A,18.00,2.00,6.00,Female,1,Baseline,12 +2455,B,24.00,8.00,2.00,Female,1,Baseline,16 +2456,A,18.00,5.00,10.0,Male,1,Baseline,50 +2457,B,21.00,1.00,1.00,Female,1,Baseline,1 +2459,C,21.00,5.00,16.0,Male,1,Baseline,80 +2461,C,18.00,3.00,3.00,Female,1,Baseline,9 +2462,A,19.00,1.00,5.00,Female,1,Baseline,5 +2463,B,26.00,5.00,4.00,Male,1,Baseline,20 +2464,A,22.00,4.00,8.00,Male,1,Baseline,32 +2465,C,21.00,4.00,3.00,Female,1,Baseline,12 +2467,C,18.00,0.00,0.00,Female,0,Baseline,0 +2468,A,19.00,12.0,6.00,Male,1,Baseline,72 +2469,C,22.00,1.00,2.00,Female,1,Baseline,2 +2470,A,21.00,1.00,1.00,Male,1,Baseline,1 +2472,B,35.00,0.00,0.00,Female,0,Baseline,0 +2473,B,18.00,14.0,14.0,Male,1,Baseline,196 +2475,B,18.00,9.00,9.00,Male,1,Baseline,81 +2476,B,23.00,6.00,2.00,Male,1,Baseline,12 +2477,C,20.00,1.00,6.00,Male,1,Baseline,6 +2478,C,25.00,14.0,2.00,Female,1,Baseline,28 +2479,A,19.00,4.00,8.00,Female,1,Baseline,32 +2480,C,22.00,15.0,6.00,Male,1,Baseline,90 +2482,C,19.00,5.00,18.0,Male,1,Baseline,90 +2483,C,21.00,2.00,5.00,Female,1,Baseline,10 +2484,B,22.00,1.00,8.00,Female,1,Baseline,8 +2485,B,21.00,6.00,16.0,Male,1,Baseline,96 +2486,C,26.00,2.00,1.00,Male,1,Baseline,2 +2487,B,48.00,3.00,2.00,Female,1,Baseline,6 +2488,A,23.00,3.00,4.00,Female,1,Baseline,12 +2489,C,28.00,0.00,0.00,Female,0,Baseline,0 +2490,B,25.00,4.00,2.00,Male,1,Baseline,8 +2491,C,20.00,5.00,13.0,Female,1,Baseline,65 +2492,A,18.00,4.00,5.00,Female,1,Baseline,20 +2493,B,29.00,5.00,1.00,Female,1,Baseline,5 +2494,C,22.00,0.00,0.00,Female,0,Baseline,0 +2495,C,22.00,4.00,4.00,Female,1,Baseline,16 +2496,C,19.00,2.00,4.00,Female,1,Baseline,8 +2497,B,22.00,0.00,0.00,Male,0,Baseline,0 +2499,C,29.00,4.00,2.00,Male,1,Baseline,8 +2500,C,24.00,0.00,0.00,Male,0,Baseline,0 +2501,B,21.00,5.00,10.0,Female,1,Baseline,50 +2502,C,27.00,5.00,3.00,Female,1,Baseline,15 +2503,A,27.00,20.0,2.00,Female,1,Baseline,40 +2504,A,18.00,3.00,1.00,Male,1,Baseline,3 +2505,B,27.00,2.00,4.00,Female,1,Baseline,8 +2506,A,35.00,4.00,2.00,Male,1,Baseline,8 +2507,C,19.00,1.00,10.0,Male,1,Baseline,10 +2508,B,26.00,12.0,1.00,Female,1,Baseline,12 +2509,B,32.00,10.0,1.00,Female,1,Baseline,10 +2510,C,19.00,0.00,0.00,Female,0,Baseline,0 +2511,C,24.00,5.00,3.00,Female,1,Baseline,15 +2512,C,18.00,4.00,3.00,Female,1,Baseline,12 +2513,A,52.00,0.00,0.00,Male,0,Baseline,0 +2514,C,40.00,2.00,2.00,Female,1,Baseline,4 +2515,B,19.00,5.00,3.00,Female,1,Baseline,15 +2516,A,23.00,0.00,0.00,Male,0,Baseline,0 +2517,A,22.00,14.0,1.00,Female,1,Baseline,14 +2518,B,27.00,12.0,1.00,Female,1,Baseline,12 +2519,A,21.00,0.00,0.00,Female,0,Baseline,0 +2520,C,20.00,0.00,0.00,Female,0,Baseline,0 +2521,B,19.00,9.00,6.00,Female,1,Baseline,54 +2522,C,46.00,4.00,3.00,Female,1,Baseline,12 +2523,B,45.00,17.0,2.00,Male,1,Baseline,34 +2524,B,30.00,4.00,3.00,Male,1,Baseline,12 +2525,C,23.00,5.00,6.00,Female,1,Baseline,30 +2526,B,37.00,0.00,0.00,Male,0,Baseline,0 +2527,B,21.00,0.00,0.00,Female,0,Baseline,0 +2528,C,21.00,2.00,6.00,Female,1,Baseline,12 +2529,C,20.00,2.00,5.00,Female,1,Baseline,10 +2530,B,18.00,6.00,1.00,Female,1,Baseline,6 +2531,A,19.00,5.00,3.00,Male,1,Baseline,15 +2532,B,28.00,1.00,2.00,Male,1,Baseline,2 +2533,B,31.00,28.0,1.00,Female,1,Baseline,28 +2534,C,20.00,0.00,0.00,Female,0,Baseline,0 +2535,A,19.00,2.00,4.00,Female,1,Baseline,8 +2536,A,26.00,3.00,4.00,Female,1,Baseline,12 +2537,B,19.00,6.00,9.00,Female,1,Baseline,54 +2538,C,21.00,4.00,18.0,Male,1,Baseline,72 +2539,B,18.00,0.00,0.00,Female,0,Baseline,0 +2540,B,24.00,10.0,2.00,Female,1,Baseline,20 +2541,C,23.00,1.00,2.00,Male,1,Baseline,2 +2542,B,21.00,0.00,0.00,Male,0,Baseline,0 +2543,C,19.00,5.00,12.0,Male,1,Baseline,60 +2545,A,20.00,6.00,5.00,Male,1,Baseline,30 +2546,A,21.00,3.00,1.00,Male,1,Baseline,3 +2547,B,22.00,2.00,7.00,Female,1,Baseline,14 +2548,C,33.00,21.0,2.00,Female,1,Baseline,42 +2549,A,25.00,8.00,2.00,Female,1,Baseline,16 +2551,B,27.00,0.00,0.00,Male,0,Baseline,0 +2552,B,25.00,5.00,1.00,Female,1,Baseline,5 +2553,B,17.00,0.00,0.00,Female,0,Baseline,0 +2554,A,20.00,4.00,5.00,Male,1,Baseline,20 +2555,C,25.00,5.00,3.00,Female,1,Baseline,15 +2556,A,19.00,0.00,0.00,Female,0,Baseline,0 +2557,A,22.00,1.00,1.00,Male,1,Baseline,1 +2558,C,20.00,3.00,7.00,Male,1,Baseline,21 +2559,C,21.00,2.00,1.00,Female,1,Baseline,2 +2560,A,21.00,2.00,2.00,Female,1,Baseline,4 +2562,B,18.00,4.00,4.00,Female,1,Baseline,16 +2563,C,20.00,0.00,0.00,Male,0,Baseline,0 +2564,C,29.00,8.00,3.00,Male,1,Baseline,24 +2565,A,20.00,3.00,10.0,Female,1,Baseline,30 +2566,B,21.00,10.0,2.00,Female,1,Baseline,20 +2567,C,27.00,0.00,0.00,Female,0,Baseline,0 +2568,C,48.00,0.00,0.00,Female,0,Baseline,0 +2569,B,20.00,0.00,0.00,Female,0,Baseline,0 +2570,B,20.00,12.0,5.00,Female,1,Baseline,60 +2571,A,22.00,2.00,10.0,Male,1,Baseline,20 +2572,A,22.00,7.00,2.00,Male,1,Baseline,14 +2573,A,19.00,5.00,2.00,Female,1,Baseline,10 +2574,A,20.00,5.00,3.00,Male,1,Baseline,15 +2575,A,25.00,2.00,2.00,Female,1,Baseline,4 +2576,A,18.00,0.00,0.00,Male,0,Baseline,0 +2577,B,19.00,3.00,10.0,Male,1,Baseline,30 +2579,B,21.00,4.00,6.00,Female,1,Baseline,24 +2580,B,22.00,0.00,0.00,Female,0,Baseline,0 +2581,B,18.00,0.00,0.00,Male,0,Baseline,0 +2582,C,28.00,4.00,3.00,Female,1,Baseline,12 +2583,A,21.00,5.00,5.00,Female,1,Baseline,25 +2584,B,35.00,16.0,3.00,Male,1,Baseline,48 +2586,A,20.00,6.00,6.00,Female,1,Baseline,36 +2587,B,23.00,8.00,3.00,Female,1,Baseline,24 +2588,C,19.00,0.00,0.00,Male,0,Baseline,0 +2589,B,21.00,4.00,1.00,Female,1,Baseline,4 +2590,B,22.00,9.00,2.00,Male,1,Baseline,18 +2591,A,22.00,0.00,0.00,Female,0,Baseline,0 +2592,C,22.00,0.00,0.00,Female,0,Baseline,0 +2593,C,22.00,1.00,1.00,Female,1,Baseline,1 +2595,A,18.00,1.00,4.00,Female,1,Baseline,4 +2596,A,46.00,8.00,5.00,Male,1,Baseline,40 +2598,A,46.00,4.00,4.00,Female,1,Baseline,16 +2599,C,21.00,3.00,4.00,Female,1,Baseline,12 +2601,C,47.00,24.0,1.00,Female,1,Baseline,24 +2602,A,21.00,0.00,0.00,Female,0,Baseline,0 +2603,A,18.00,6.00,2.00,Female,1,Baseline,12 +2604,B,22.00,0.00,0.00,Male,0,Baseline,0 +2606,B,20.00,10.0,4.00,Female,1,Baseline,40 +2607,C,28.00,0.00,0.00,Female,0,Baseline,0 +2608,A,23.00,0.00,0.00,Female,0,Baseline,0 +2610,A,22.00,0.00,0.00,Female,0,Baseline,0 +2611,A,20.00,4.00,8.00,Female,1,Baseline,32 +2612,A,34.00,4.00,2.00,Female,1,Baseline,8 +2613,A,20.00,1.00,2.00,Female,1,Baseline,2 +2614,C,35.00,3.00,6.00,Female,1,Baseline,18 +2615,B,22.00,1.00,2.00,Female,1,Baseline,2 +2616,C,26.00,0.00,0.00,Male,0,Baseline,0 +2617,B,21.00,2.00,3.00,Female,1,Baseline,6 +2619,A,20.00,0.00,0.00,Female,0,Baseline,0 +2620,A,22.00,4.00,5.00,Female,1,Baseline,20 +2621,C,18.00,3.00,1.00,Male,1,Baseline,3 +2622,C,21.00,6.00,6.00,Female,1,Baseline,36 +2623,B,21.00,0.00,0.00,Male,0,Baseline,0 +2624,B,22.00,5.00,3.00,Female,1,Baseline,15 +2625,B,23.00,5.00,15.0,Female,1,Baseline,75 +2626,C,22.00,1.00,1.00,Female,1,Baseline,1 +2627,C,20.00,4.00,8.00,Male,1,Baseline,32 +2628,B,22.00,0.00,0.00,Female,0,Baseline,0 +2629,C,20.00,1.00,14.0,Male,1,Baseline,14 +2630,B,20.00,6.00,3.00,Female,1,Baseline,18 +2631,B,19.00,3.00,6.00,Female,1,Baseline,18 +2632,C,21.00,1.00,3.00,Female,1,Baseline,3 +2633,B,22.00,11.0,1.00,Female,1,Baseline,11 +2635,C,25.00,0.00,0.00,Male,0,Baseline,0 +2636,B,22.00,4.00,7.00,Male,1,Baseline,28 +2637,A,22.00,0.00,0.00,Female,0,Baseline,0 +2638,B,23.00,4.00,6.00,Male,1,Baseline,24 +2640,B,18.00,0.00,0.00,Female,0,Baseline,0 +2641,B,23.00,0.00,0.00,Female,0,Baseline,0 +2643,A,20.00,18.0,1.00,Female,1,Baseline,18 +2645,A,21.00,6.00,10.0,Male,1,Baseline,60 +2646,C,20.00,2.00,10.0,Male,1,Baseline,20 +2647,C,24.00,4.00,2.00,Female,1,Baseline,8 +2648,A,21.00,0.00,0.00,Female,0,Baseline,0 +2649,A,25.00,3.00,1.00,Male,1,Baseline,3 +2650,C,37.00,2.00,1.00,Female,1,Baseline,2 +2651,A,19.00,4.00,5.00,Female,1,Baseline,20 +2652,C,22.00,2.00,10.0,Male,1,Baseline,20 +2654,B,21.00,4.00,3.00,Male,1,Baseline,12 +2655,C,19.00,2.00,5.00,Female,1,Baseline,10 +2658,A,19.00,4.00,1.00,Male,1,Baseline,4 +2660,B,22.00,1.00,1.00,Female,1,Baseline,1 +2661,A,21.00,6.00,10.0,Female,1,Baseline,60 +2662,A,21.00,0.00,0.00,Female,0,Baseline,0 +2663,A,21.00,5.00,3.00,Female,1,Baseline,15 +2664,B,18.00,2.00,8.00,Male,1,Baseline,16 +2665,B,21.00,1.00,2.00,Female,1,Baseline,2 +2667,C,24.00,2.00,3.00,Female,1,Baseline,6 +2668,B,23.00,7.00,3.00,Female,1,Baseline,21 +2670,B,25.00,4.00,10.0,Female,1,Baseline,40 +2671,B,24.00,0.00,0.00,Female,0,Baseline,0 +2672,B,22.00,7.00,3.00,Female,1,Baseline,21 +2673,B,22.00,5.00,5.00,Female,1,Baseline,25 +2674,C,18.00,3.00,7.00,Female,1,Baseline,21 +2675,C,21.00,9.00,16.0,Male,1,Baseline,144 +2676,A,22.00,4.00,1.00,Female,1,Baseline,4 +2677,C,21.00,0.00,0.00,Female,0,Baseline,0 +2678,C,18.00,4.00,4.00,Male,1,Baseline,16 +2679,B,23.00,3.00,7.00,Female,1,Baseline,21 +2680,B,18.00,0.00,0.00,Female,0,Baseline,0 +2681,B,19.00,8.00,2.00,Female,1,Baseline,16 +2684,A,24.00,2.00,2.00,Female,1,Baseline,4 +2686,A,21.00,6.00,1.00,Male,1,Baseline,6 +2687,A,32.00,4.00,1.00,Female,1,Baseline,4 +2688,C,19.00,3.00,6.00,Female,1,Baseline,18 +2689,C,21.00,7.00,3.00,Female,1,Baseline,21 +2691,A,21.00,1.00,1.00,Female,1,Baseline,1 +2693,B,22.00,4.00,8.00,Female,1,Baseline,32 +2694,C,23.00,2.00,1.00,Male,1,Baseline,2 +2695,C,22.00,2.00,1.00,Female,1,Baseline,2 +2696,B,20.00,0.00,0.00,Female,0,Baseline,0 +2697,B,32.00,1.00,1.00,Female,1,Baseline,1 +2698,A,18.00,0.00,0.00,Female,0,Baseline,0 +2699,B,18.00,0.00,0.00,Male,0,Baseline,0 +2700,B,19.00,5.00,5.00,Male,1,Baseline,25 +2701,A,19.00,2.00,3.00,Male,1,Baseline,6 +2702,A,23.00,5.00,3.00,Male,1,Baseline,15 +2704,A,21.00,3.00,,Male,1,Baseline, +2705,A,18.00,2.00,10.0,Female,1,Baseline,20 +2706,B,20.00,3.00,6.00,Female,1,Baseline,18 +2707,B,22.00,6.00,4.00,Male,1,Baseline,24 +2709,B,21.00,15.0,3.00,Female,1,Baseline,45 +2710,B,21.00,5.00,5.00,Female,1,Baseline,25 +2711,A,19.00,1.00,7.00,Female,1,Baseline,7 +2712,C,32.00,6.00,4.00,Female,1,Baseline,24 +2713,C,22.00,4.00,3.00,Female,1,Baseline,12 +2714,C,18.00,2.00,3.00,Female,1,Baseline,6 +2715,A,19.00,0.00,0.00,Female,0,Baseline,0 +2716,C,50.00,5.00,1.00,Female,1,Baseline,5 +2717,C,20.00,3.00,5.00,Female,1,Baseline,15 +2719,B,44.00,8.00,2.00,Female,1,Baseline,16 +2720,A,23.00,0.00,0.00,Female,0,Baseline,0 +2721,A,25.00,0.00,0.00,Female,0,Baseline,0 +2722,B,52.00,0.00,0.00,Female,0,Baseline,0 +2723,A,18.00,3.00,2.00,Female,1,Baseline,6 +2724,C,24.00,9.00,2.00,Female,1,Baseline,18 +2725,B,21.00,0.00,0.00,Male,0,Baseline,0 +2726,C,19.00,10.0,1.00,Female,1,Baseline,10 +2727,C,21.00,0.00,0.00,Male,0,Baseline,0 +2728,B,20.00,2.00,4.00,Female,1,Baseline,8 +2729,C,23.00,1.00,1.00,Female,1,Baseline,1 +2730,A,28.00,10.0,2.00,Female,1,Baseline,20 +2731,A,24.00,0.00,0.00,Male,0,Baseline,0 +2732,A,30.00,2.00,2.00,Female,1,Baseline,4 +2733,B,20.00,5.00,2.00,Female,1,Baseline,10 +2734,A,20.00,1.00,1.00,Female,1,Baseline,1 +2735,B,20.00,5.00,6.00,Female,1,Baseline,30 +2737,A,23.00,4.00,4.00,Female,1,Baseline,16 +2738,A,51.00,1.00,10.0,Female,1,Baseline,10 +2739,B,19.00,5.00,5.00,Male,1,Baseline,25 +2741,B,20.00,2.00,4.00,Female,1,Baseline,8 +2742,A,29.00,3.00,6.00,Female,1,Baseline,18 +2743,B,22.00,2.00,2.00,Female,1,Baseline,4 +2744,A,21.00,7.00,10.0,Male,1,Baseline,70 +2745,A,19.00,1.00,4.00,Male,1,Baseline,4 +2746,C,18.00,3.00,2.00,Male,1,Baseline,6 +2747,B,21.00,2.00,5.00,Male,1,Baseline,10 +2749,B,26.00,5.00,2.00,Male,1,Baseline,10 +2750,A,20.00,2.00,1.00,Female,1,Baseline,2 +2751,A,34.00,0.00,0.00,Female,0,Baseline,0 +2752,B,31.00,0.00,0.00,Female,0,Baseline,0 +2753,A,19.00,1.00,9.00,Male,1,Baseline,9 +2754,C,20.00,0.00,0.00,Female,0,Baseline,0 +2755,B,47.00,0.00,0.00,Female,0,Baseline,0 +2756,C,20.00,3.00,6.00,Female,1,Baseline,18 +2758,A,21.00,1.00,5.00,Female,1,Baseline,5 +2759,B,37.00,8.00,2.00,Female,1,Baseline,16 +2760,C,20.00,12.0,18.0,Male,1,Baseline,216 +2761,A,25.00,0.00,0.00,Female,0,Baseline,0 +2762,C,22.00,5.00,6.00,Female,1,Baseline,30 +2763,C,19.00,15.0,18.0,Male,1,Baseline,270 +2764,C,21.00,1.00,1.00,Male,1,Baseline,1 +2765,B,21.00,3.00,3.00,Male,1,Baseline,9 +2766,C,20.00,7.00,4.00,Female,1,Baseline,28 +2767,C,33.00,3.00,2.00,Female,1,Baseline,6 +2768,A,25.00,2.00,1.00,Female,1,Baseline,2 +2771,B,26.00,8.00,2.00,Male,1,Baseline,16 +2772,C,22.00,3.00,6.00,Male,1,Baseline,18 +2774,C,30.00,2.00,2.00,Female,1,Baseline,4 +2776,B,19.00,4.00,10.0,Male,1,Baseline,40 +2777,C,19.00,0.00,0.00,Female,0,Baseline,0 +2778,A,23.00,1.00,1.00,Male,1,Baseline,1 +2779,B,26.00,2.00,1.00,Female,1,Baseline,2 +2780,A,46.00,7.00,2.00,Female,1,Baseline,14 +2781,C,19.00,8.00,6.00,Male,1,Baseline,48 +2782,C,20.00,0.00,0.00,Female,0,Baseline,0 +2783,A,22.00,0.00,0.00,Female,0,Baseline,0 +2785,B,22.00,3.00,8.00,Male,1,Baseline,24 +2787,C,21.00,0.00,0.00,Female,0,Baseline,0 +2790,A,19.00,2.00,4.00,Female,1,Baseline,8 +2791,B,19.00,8.00,15.0,Female,1,Baseline,120 +2793,B,44.00,0.00,0.00,Female,0,Baseline,0 +2794,A,24.00,4.00,1.00,Female,1,Baseline,4 +2795,C,18.00,4.00,4.00,Female,1,Baseline,16 +2796,C,18.00,0.00,0.00,Female,0,Baseline,0 +2798,C,50.00,0.00,0.00,Female,0,Baseline,0 +2799,C,21.00,0.00,0.00,Female,0,Baseline,0 +2801,C,19.00,1.00,1.00,Female,1,Baseline,1 +2802,B,22.00,20.0,1.00,Female,1,Baseline,20 +2804,B,23.00,3.00,1.00,Female,1,Baseline,3 +2805,C,19.00,4.00,3.00,Female,1,Baseline,12 +2806,C,22.00,1.00,1.00,Female,1,Baseline,1 +2808,C,19.00,2.00,8.00,Male,1,Baseline,16 +2810,C,21.00,3.00,4.00,Female,1,Baseline,12 +2811,B,20.00,3.00,8.00,Male,1,Baseline,24 +2813,A,30.00,5.00,3.00,Female,1,Baseline,15 +2815,C,19.00,0.00,0.00,Female,0,Baseline,0 +2816,C,20.00,0.00,0.00,Female,0,Baseline,0 +2817,B,19.00,6.00,4.00,Female,1,Baseline,24 +2818,B,21.00,2.00,1.00,Female,1,Baseline,2 +2819,A,22.00,6.00,5.00,Female,1,Baseline,30 +2820,B,30.00,1.00,3.00,Female,1,Baseline,3 +2821,A,20.00,4.00,5.00,Female,1,Baseline,20 +2822,B,18.00,3.00,4.00,Female,1,Baseline,12 +2823,C,22.00,9.00,5.00,Female,1,Baseline,45 +2824,B,18.00,9.00,13.0,Female,1,Baseline,117 +2826,B,18.00,3.00,5.00,Female,1,Baseline,15 +2827,C,22.00,0.00,0.00,Female,0,Baseline,0 +2828,B,19.00,1.00,3.00,Female,1,Baseline,3 +2830,C,23.00,1.00,1.00,Female,1,Baseline,1 +2831,A,21.00,0.00,0.00,Female,0,Baseline,0 +2832,C,21.00,0.00,0.00,Male,0,Baseline,0 +2833,B,21.00,2.00,4.00,Female,1,Baseline,8 +2834,B,35.00,5.00,1.00,Female,1,Baseline,5 +2835,C,22.00,0.00,0.00,Female,0,Baseline,0 +2836,C,19.00,10.0,5.00,Female,1,Baseline,50 +2837,A,26.00,1.00,3.00,Female,1,Baseline,3 +2838,A,19.00,4.00,8.00,Female,1,Baseline,32 +2839,B,20.00,8.00,3.00,Female,1,Baseline,24 +2842,A,20.00,3.00,3.00,Female,1,Baseline,9 +2843,C,23.00,1.00,6.00,Female,1,Baseline,6 +2844,C,22.00,4.00,3.00,Female,1,Baseline,12 +2845,C,19.00,1.00,4.00,Female,1,Baseline,4 +2847,A,18.00,7.00,2.00,Female,1,Baseline,14 +2848,C,21.00,8.00,3.00,Male,1,Baseline,24 +2849,C,49.00,10.0,2.00,Male,1,Baseline,20 +2852,B,19.00,0.00,0.00,Female,0,Baseline,0 +2853,C,20.00,3.00,2.00,Female,1,Baseline,6 +2854,C,18.00,5.00,7.00,Female,1,Baseline,35 +2855,B,21.00,12.0,4.00,Male,1,Baseline,48 +2856,B,20.00,0.00,0.00,Female,0,Baseline,0 +2857,A,30.00,1.00,6.00,Male,1,Baseline,6 +2858,A,20.00,6.00,3.00,Female,1,Baseline,18 +2859,A,50.00,4.00,5.00,Male,1,Baseline,20 +2860,B,20.00,5.00,10.0,Male,1,Baseline,50 +2861,A,29.00,1.00,9.00,Female,1,Baseline,9 +2862,C,18.00,3.00,4.00,Female,1,Baseline,12 +2863,A,22.00,3.00,20.0,Male,1,Baseline,60 +2864,B,20.00,3.00,4.00,Female,1,Baseline,12 +2866,A,20.00,1.00,4.00,Female,1,Baseline,4 +2867,C,18.00,0.00,0.00,Female,0,Baseline,0 +2868,C,19.00,0.00,0.00,Female,0,Baseline,0 +2869,C,20.00,2.00,5.00,Female,1,Baseline,10 +2870,C,18.00,7.00,4.00,Female,1,Baseline,28 +2871,A,21.00,0.00,0.00,Female,0,Baseline,0 +2872,C,19.00,1.00,3.00,Female,1,Baseline,3 +2873,B,29.00,8.00,4.00,Female,1,Baseline,32 +2875,C,20.00,4.00,5.00,Female,1,Baseline,20 +2876,C,23.00,4.00,2.00,Female,1,Baseline,8 +2877,C,21.00,9.00,9.00,Female,1,Baseline,81 +2878,C,19.00,8.00,12.0,Male,1,Baseline,96 +2879,A,19.00,1.00,5.00,Female,1,Baseline,5 +2880,B,28.00,4.00,1.00,Female,1,Baseline,4 +2881,C,21.00,6.00,6.00,Female,1,Baseline,36 +2882,C,24.00,14.0,2.00,Female,1,Baseline,28 +2884,A,51.00,2.00,1.00,Female,1,Baseline,2 +2885,A,21.00,0.00,0.00,Male,0,Baseline,0 +2886,C,23.00,4.00,1.00,Male,1,Baseline,4 +2887,B,20.00,5.00,5.00,Male,1,Baseline,25 +2888,A,21.00,0.00,0.00,Female,0,Baseline,0 +2890,A,21.00,11.0,2.00,Male,1,Baseline,22 +2891,C,24.00,0.00,0.00,Female,0,Baseline,0 +2892,A,24.00,10.0,6.00,Male,1,Baseline,60 +2893,C,23.00,8.00,2.00,Female,1,Baseline,16 +2894,A,20.00,5.00,7.00,Female,1,Baseline,35 +2895,C,19.00,3.00,2.00,Female,1,Baseline,6 +2896,C,23.00,0.00,0.00,Female,0,Baseline,0 +2897,C,22.00,0.00,0.00,Male,0,Baseline,0 +2898,A,20.00,0.00,0.00,Female,0,Baseline,0 +2900,A,46.00,14.0,2.00,Female,1,Baseline,28 +2901,C,20.00,12.0,16.0,Male,1,Baseline,192 +2902,B,21.00,5.00,3.00,Female,1,Baseline,15 +2903,A,53.00,7.00,1.00,Female,1,Baseline,7 +2904,B,19.00,0.00,0.00,Female,0,Baseline,0 +2905,C,19.00,2.00,10.0,Male,1,Baseline,20 +2906,A,22.00,4.00,6.00,Female,1,Baseline,24 +2908,A,23.00,4.00,8.00,Male,1,Baseline,32 +2909,B,22.00,6.00,14.0,Male,1,Baseline,84 +2910,C,37.00,1.00,5.00,Male,1,Baseline,5 +2911,C,19.00,0.00,0.00,Female,0,Baseline,0 +2912,A,22.00,2.00,5.00,Male,1,Baseline,10 +2915,B,18.00,1.00,2.00,Female,1,Baseline,2 +2916,A,28.00,8.00,2.00,Female,1,Baseline,16 +2917,B,55.00,0.00,0.00,Female,0,Baseline,0 +2918,A,18.00,1.00,1.00,Female,1,Baseline,1 +2919,C,19.00,8.00,7.00,Female,1,Baseline,56 +2920,B,18.00,5.00,4.00,Male,1,Baseline,20 +2921,C,18.00,3.00,4.00,Female,1,Baseline,12 +2922,B,20.00,5.00,5.00,Female,1,Baseline,25 +2923,B,25.00,1.00,1.00,Female,1,Baseline,1 +2924,B,24.00,6.00,6.00,Female,1,Baseline,36 +2925,B,21.00,3.00,2.00,Female,1,Baseline,6 +2926,A,20.00,0.00,0.00,Female,0,Baseline,0 +2927,B,18.00,1.00,3.00,Female,1,Baseline,3 +2928,C,18.00,0.00,0.00,Female,0,Baseline,0 +2929,B,24.00,6.00,4.00,Male,1,Baseline,24 +2930,C,21.00,5.00,8.00,Female,1,Baseline,40 +2931,C,22.00,3.00,6.00,Female,1,Baseline,18 +2932,C,20.00,4.00,2.00,Female,1,Baseline,8 +2933,B,21.00,3.00,3.00,Female,1,Baseline,9 +2934,A,19.00,1.00,10.0,Female,1,Baseline,10 +2935,C,20.00,6.00,8.00,Male,1,Baseline,48 +2936,B,47.00,9.00,2.00,Female,1,Baseline,18 +2938,C,55.00,15.0,2.00,Female,1,Baseline,30 +2939,C,18.00,4.00,10.0,Female,1,Baseline,40 +2940,C,20.00,0.00,0.00,Male,0,Baseline,0 +2941,B,18.00,4.00,2.00,Female,1,Baseline,8 +2942,C,18.00,6.00,4.00,Female,1,Baseline,24 +2945,B,18.00,5.00,8.00,Female,1,Baseline,40 +2946,A,18.00,0.00,0.00,Male,0,Baseline,0 +2947,C,19.00,4.00,1.00,Female,1,Baseline,4 +2948,C,19.00,3.00,7.00,Female,1,Baseline,21 +2949,B,20.00,4.00,4.00,Female,1,Baseline,16 +2951,A,28.00,15.0,1.00,Female,1,Baseline,15 +2953,C,41.00,4.00,1.00,Female,1,Baseline,4 +2954,C,18.00,0.00,0.00,Male,0,Baseline,0 +2955,B,22.00,3.00,3.00,Female,1,Baseline,9 +2957,B,21.00,2.00,3.00,Female,1,Baseline,6 +2958,B,20.00,5.00,9.00,Female,1,Baseline,45 +2959,A,21.00,4.00,10.0,Male,1,Baseline,40 +2960,B,20.00,10.0,2.00,Male,1,Baseline,20 +2961,A,23.00,6.00,4.00,Female,1,Baseline,24 +2962,A,18.00,3.00,3.00,Female,1,Baseline,9 +2964,B,37.00,26.0,1.00,Female,1,Baseline,26 +2965,C,21.00,5.00,12.0,Male,1,Baseline,60 +2966,B,20.00,0.00,0.00,Male,0,Baseline,0 +2967,C,25.00,4.00,4.00,Female,1,Baseline,16 +2968,A,19.00,3.00,4.00,Male,1,Baseline,12 +2970,C,23.00,0.00,0.00,Male,0,Baseline,0 +2971,C,18.00,1.00,8.00,Male,1,Baseline,8 +2972,A,20.00,0.00,0.00,Male,0,Baseline,0 +2974,C,21.00,6.00,7.00,Female,1,Baseline,42 +2975,C,20.00,4.00,6.00,Female,1,Baseline,24 +2976,A,19.00,2.00,1.00,Female,1,Baseline,2 +2977,A,19.00,10.0,6.00,Female,1,Baseline,60 +2978,B,21.00,3.00,6.00,Female,1,Baseline,18 +2980,A,19.00,15.0,8.00,Male,1,Baseline,120 +2981,B,22.00,15.0,4.00,Male,1,Baseline,60 +2983,C,17.00,2.00,1.00,Female,1,Baseline,2 +2984,B,19.00,4.00,10.0,Female,1,Baseline,40 +2985,A,21.00,0.00,0.00,Male,0,Baseline,0 +2986,B,23.00,3.00,5.00,Male,1,Baseline,15 +2987,C,21.00,3.00,2.00,Female,1,Baseline,6 +2988,C,25.00,0.00,0.00,Female,0,Baseline,0 +2989,B,32.00,2.00,2.00,Female,1,Baseline,4 +2990,B,19.00,0.00,0.00,Male,0,Baseline,0 +2992,B,18.00,7.00,6.00,Female,1,Baseline,42 +2993,A,19.00,0.00,0.00,Female,0,Baseline,0 +2994,C,22.00,7.00,1.00,Female,1,Baseline,7 +2995,C,20.00,0.00,0.00,Female,0,Baseline,0 +2996,C,26.00,0.00,0.00,Male,0,Baseline,0 +2998,A,20.00,3.00,3.00,Female,1,Baseline,9 +2999,A,20.00,15.0,10.0,Male,1,Baseline,150 +3000,A,23.00,4.00,10.0,Female,1,Baseline,40 +3001,C,27.00,1.00,1.00,Female,1,Baseline,1 +3003,B,21.00,1.00,1.00,Female,1,Baseline,1 +3004,B,22.00,14.0,2.00,Male,1,Baseline,28 +3007,B,23.00,1.00,1.00,Female,1,Baseline,1 +3008,C,49.00,12.0,1.00,Female,1,Baseline,12 +3009,B,18.00,3.00,4.00,Female,1,Baseline,12 +3010,C,43.00,2.00,2.00,Male,1,Baseline,4 +3011,C,26.00,1.00,1.00,Female,1,Baseline,1 +3012,C,39.00,0.00,0.00,Female,0,Baseline,0 +3013,B,37.00,3.00,1.00,Female,1,Baseline,3 +3014,C,20.00,2.00,8.00,Female,1,Baseline,16 +3016,A,36.00,10.0,1.00,Female,1,Baseline,10 +3017,C,25.00,3.00,4.00,Female,1,Baseline,12 +3018,B,22.00,5.00,9.00,Male,1,Baseline,45 +3019,B,21.00,3.00,6.00,Female,1,Baseline,18 +3020,B,45.00,0.00,0.00,Male,0,Baseline,0 +3021,B,22.00,3.00,2.00,Female,1,Baseline,6 +3022,B,29.00,4.00,2.00,Male,1,Baseline,8 +3023,A,57.00,16.0,1.00,Female,1,Baseline,16 +3024,C,21.00,1.00,1.00,Female,1,Baseline,1 +3025,B,21.00,10.0,1.00,Female,1,Baseline,10 +3026,C,57.00,27.0,1.00,Female,1,Baseline,27 +3028,C,66.00,0.00,0.00,Female,0,Baseline,0 +3029,C,21.00,3.00,1.00,Female,1,Baseline,3 +3030,B,19.00,16.0,10.0,Female,1,Baseline,160 +3031,B,19.00,6.00,2.00,Male,1,Baseline,12 +3034,B,27.00,0.00,0.00,Female,0,Baseline,0 +3036,C,20.00,2.00,1.00,Male,1,Baseline,2 +3037,B,44.00,12.0,1.00,Female,1,Baseline,12 +3038,B,19.00,7.00,1.00,Male,1,Baseline,7 +3039,C,30.00,1.00,12.0,Female,1,Baseline,12 +3040,C,32.00,0.00,0.00,Female,0,Baseline,0 +3041,B,23.00,2.00,2.00,Female,1,Baseline,4 +3042,A,20.00,5.00,3.00,Male,1,Baseline,15 +3043,C,24.00,3.00,3.00,Female,1,Baseline,9 +3044,B,19.00,8.00,6.00,Female,1,Baseline,48 +3045,C,21.00,6.00,5.00,Male,1,Baseline,30 +3046,B,44.00,4.00,2.00,Female,1,Baseline,8 +3047,B,21.00,4.00,6.00,Female,1,Baseline,24 +3049,C,19.00,5.00,2.00,Female,1,Baseline,10 +3050,B,27.00,6.00,2.00,Female,1,Baseline,12 +3051,B,21.00,4.00,8.00,Female,1,Baseline,32 +3052,B,44.00,20.0,2.00,Female,1,Baseline,40 +3053,A,22.00,12.0,5.00,Female,1,Baseline,60 +3054,B,22.00,3.00,8.00,Female,1,Baseline,24 +3055,C,17.00,3.00,1.00,Male,1,Baseline,3 +3056,C,21.00,12.0,1.00,Male,1,Baseline,12 +3058,C,19.00,5.00,3.00,Female,1,Baseline,15 +3059,A,18.00,3.00,5.00,Female,1,Baseline,15 +3060,A,22.00,5.00,2.00,Female,1,Baseline,10 +3061,A,24.00,16.0,1.00,Female,1,Baseline,16 +3062,B,19.00,5.00,7.00,Female,1,Baseline,35 +3063,B,19.00,12.0,4.00,Female,1,Baseline,48 +3064,B,23.00,8.00,10.0,Female,1,Baseline,80 +3065,A,21.00,11.0,4.00,Female,1,Baseline,44 +3066,A,22.00,7.00,2.00,Male,1,Baseline,14 +3067,C,18.00,3.00,6.00,Male,1,Baseline,18 +3068,B,25.00,3.00,1.00,Female,1,Baseline,3 +3070,A,24.00,5.00,8.00,Male,1,Baseline,40 +3072,C,19.00,1.00,6.00,Female,1,Baseline,6 +3074,B,20.00,6.00,2.00,Female,1,Baseline,12 +3075,C,20.00,9.00,6.00,Male,1,Baseline,54 +3076,A,32.00,1.00,8.00,Female,1,Baseline,8 +3077,A,19.00,8.00,7.00,Female,1,Baseline,56 +3079,C,28.00,1.00,12.0,Female,1,Baseline,12 +3080,B,22.00,4.00,12.0,Male,1,Baseline,48 +3081,C,19.00,5.00,6.00,Female,1,Baseline,30 +3082,C,26.00,15.0,3.00,Female,1,Baseline,45 +3083,B,20.00,4.00,6.00,Female,1,Baseline,24 +3085,A,22.00,6.00,7.00,Female,1,Baseline,42 +3086,C,21.00,0.00,0.00,Female,0,Baseline,0 +3087,C,24.00,4.00,4.00,Male,1,Baseline,16 +3088,C,20.00,4.00,2.00,Female,1,Baseline,8 +3089,B,34.00,21.0,1.00,Female,1,Baseline,21 +3091,C,31.00,15.0,3.00,Female,1,Baseline,45 +3092,B,21.00,7.00,1.00,Female,1,Baseline,7 +3095,B,20.00,9.00,6.00,Female,1,Baseline,54 +3096,B,24.00,4.00,5.00,Female,1,Baseline,20 +3097,B,18.00,0.00,0.00,Female,0,Baseline,0 +3098,C,24.00,2.00,4.00,Male,1,Baseline,8 +3099,C,23.00,6.00,1.00,Female,1,Baseline,6 +3100,B,22.00,3.00,4.00,Male,1,Baseline,12 +3101,A,21.00,10.0,4.00,Female,1,Baseline,40 +3102,A,55.00,0.00,0.00,Female,0,Baseline,0 +3104,A,22.00,4.00,7.00,Male,1,Baseline,28 +3105,A,21.00,3.00,14.0,Female,1,Baseline,42 +3106,A,21.00,0.00,0.00,Female,0,Baseline,0 +3107,C,22.00,4.00,10.0,Male,1,Baseline,40 +3108,A,18.00,0.00,0.00,Female,0,Baseline,0 +3110,B,19.00,8.00,3.00,Male,1,Baseline,24 +3111,A,19.00,2.00,5.00,Female,1,Baseline,10 +3112,C,20.00,6.00,10.0,Male,1,Baseline,60 +3114,C,21.00,7.00,10.0,Male,1,Baseline,70 +3115,C,22.00,1.00,1.00,Female,1,Baseline,1 +3116,A,31.00,2.00,2.00,Female,1,Baseline,4 +3117,B,18.00,3.00,6.00,Female,1,Baseline,18 +3118,A,19.00,4.00,2.00,Female,1,Baseline,8 +3119,A,20.00,5.00,10.0,Male,1,Baseline,50 +3120,A,21.00,10.0,15.0,Male,1,Baseline,150 +3121,A,30.00,14.0,3.00,Female,1,Baseline,42 +3122,B,22.00,5.00,13.0,Male,1,Baseline,65 +3123,B,24.00,7.00,6.00,Female,1,Baseline,42 +3124,C,21.00,5.00,1.00,Female,1,Baseline,5 +3125,A,25.00,4.00,3.00,Male,1,Baseline,12 +3126,C,23.00,11.0,3.00,Female,1,Baseline,33 +3128,B,21.00,4.00,1.00,Female,1,Baseline,4 +3129,C,20.00,3.00,7.00,Female,1,Baseline,21 +3130,A,22.00,0.00,0.00,Female,0,Baseline,0 +3131,A,20.00,7.00,1.00,Female,1,Baseline,7 +3132,A,18.00,4.00,7.00,Female,1,Baseline,28 +3133,A,21.00,3.00,5.00,Female,1,Baseline,15 +3134,C,21.00,5.00,4.00,Female,1,Baseline,20 +3136,B,22.00,3.00,6.00,Female,1,Baseline,18 +3138,A,20.00,0.00,0.00,Female,0,Baseline,0 +3139,C,21.00,11.0,6.00,Female,1,Baseline,66 +3140,C,20.00,14.0,1.00,Female,1,Baseline,14 +3141,C,24.00,8.00,1.00,Female,1,Baseline,8 +3142,C,24.00,1.00,7.00,Female,1,Baseline,7 +3143,C,20.00,5.00,5.00,Female,1,Baseline,25 +3144,C,36.00,4.00,2.00,Male,1,Baseline,8 +3145,C,18.00,0.00,0.00,Male,0,Baseline,0 +3146,C,34.00,0.00,0.00,Female,0,Baseline,0 +3147,A,20.00,11.0,12.0,Male,1,Baseline,132 +3148,B,18.00,1.00,2.00,Female,1,Baseline,2 +3149,C,20.00,3.00,2.00,Female,1,Baseline,6 +3150,A,22.00,0.00,0.00,Female,0,Baseline,0 +3151,C,20.00,28.0,,Male,1,Baseline, +3152,B,22.00,0.00,0.00,Female,0,Baseline,0 +3153,B,21.00,3.00,6.00,Female,1,Baseline,18 +3156,A,25.00,2.00,1.00,Female,1,Baseline,2 +3159,A,20.00,2.00,3.00,Female,1,Baseline,6 +3160,A,21.00,12.0,5.00,Male,1,Baseline,60 +3161,C,18.00,0.00,0.00,Female,0,Baseline,0 +3162,A,19.00,2.00,2.00,Female,1,Baseline,4 +3163,C,30.00,0.00,0.00,Female,0,Baseline,0 +3164,C,19.00,2.00,5.00,Female,1,Baseline,10 +3165,A,21.00,6.00,9.00,Male,1,Baseline,54 +3166,B,20.00,1.00,5.00,Male,1,Baseline,5 +3167,B,23.00,5.00,5.00,Female,1,Baseline,25 +3169,A,26.00,3.00,1.00,Female,1,Baseline,3 +3170,B,21.00,0.00,0.00,Female,0,Baseline,0 +3171,B,21.00,0.00,0.00,Male,0,Baseline,0 +3172,A,19.00,5.00,6.00,Female,1,Baseline,30 +3173,B,21.00,2.00,8.00,Female,1,Baseline,16 +3174,A,39.00,20.0,1.00,Female,1,Baseline,20 +3175,B,21.00,0.00,0.00,Female,0,Baseline,0 +3176,B,20.00,3.00,7.00,Female,1,Baseline,21 +3177,A,20.00,5.00,9.00,Male,1,Baseline,45 +3178,C,19.00,0.00,0.00,Female,0,Baseline,0 +3179,A,21.00,2.00,3.00,Female,1,Baseline,6 +3180,C,31.00,3.00,1.00,Male,1,Baseline,3 +3182,A,19.00,5.00,6.00,Female,1,Baseline,30 +3183,B,21.00,1.00,1.00,Male,1,Baseline,1 +3184,B,20.00,1.00,4.00,Female,1,Baseline,4 +3185,B,20.00,2.00,4.00,Female,1,Baseline,8 +3187,C,26.00,3.00,2.00,Male,1,Baseline,6 +3188,C,20.00,3.00,10.0,Female,1,Baseline,30 +3189,A,38.00,7.00,3.00,Male,1,Baseline,21 +3190,B,20.00,21.0,4.00,Female,1,Baseline,84 +3191,B,24.00,0.00,0.00,Female,0,Baseline,0 +3192,B,25.00,2.00,2.00,Female,1,Baseline,4 +3193,A,21.00,4.00,6.00,Female,1,Baseline,24 +3194,C,34.00,2.00,5.00,Male,1,Baseline,10 +3195,B,19.00,1.00,4.00,Male,1,Baseline,4 +3196,B,23.00,4.00,4.00,Female,1,Baseline,16 +3197,A,21.00,2.00,6.00,Female,1,Baseline,12 +3198,C,20.00,8.00,6.00,Male,1,Baseline,48 +3199,C,21.00,8.00,10.0,Male,1,Baseline,80 +3200,A,19.00,2.00,2.00,Male,1,Baseline,4 +3201,C,25.00,0.00,0.00,Female,0,Baseline,0 +3202,B,55.00,8.00,1.00,Female,1,Baseline,8 +3203,B,22.00,0.00,0.00,Female,0,Baseline,0 +3204,A,21.00,3.00,7.00,Female,1,Baseline,21 +3205,C,19.00,3.00,2.00,Female,1,Baseline,6 +3207,A,19.00,5.00,8.00,Male,1,Baseline,40 +3208,B,38.00,22.0,3.00,Male,1,Baseline,66 +3209,C,29.00,8.00,2.00,Female,1,Baseline,16 +3210,C,41.00,9.00,2.00,Female,1,Baseline,18 +3211,C,20.00,0.00,0.00,Female,0,Baseline,0 +3212,B,20.00,8.00,8.00,Female,1,Baseline,64 +3213,B,21.00,12.0,5.00,Male,1,Baseline,60 +3214,A,23.00,3.00,12.0,Male,1,Baseline,36 +3215,B,21.00,3.00,8.00,Female,1,Baseline,24 +3216,C,19.00,1.00,1.00,Female,1,Baseline,1 +3217,A,25.00,7.00,2.00,Female,1,Baseline,14 +3219,B,22.00,15.0,3.00,Male,1,Baseline,45 +3221,A,18.00,8.00,2.00,Male,1,Baseline,16 +3222,A,23.00,6.00,4.00,Female,1,Baseline,24 +3223,C,45.00,10.0,1.00,Female,1,Baseline,10 +3224,C,21.00,2.00,8.00,Female,1,Baseline,16 +3226,B,19.00,7.00,7.00,Female,1,Baseline,49 +3227,B,35.00,5.00,2.00,Male,1,Baseline,10 +3228,C,18.00,9.00,10.0,Female,1,Baseline,90 +3229,B,22.00,10.0,12.0,Female,1,Baseline,120 +3230,C,21.00,3.00,4.00,Male,1,Baseline,12 +3231,C,23.00,14.0,3.00,Male,1,Baseline,42 +3232,A,21.00,4.00,6.00,Female,1,Baseline,24 +3233,C,19.00,6.00,5.00,Male,1,Baseline,30 +3235,C,55.00,12.0,1.00,Male,1,Baseline,12 +3236,B,27.00,7.00,2.00,Male,1,Baseline,14 +3237,C,25.00,10.0,2.00,Male,1,Baseline,20 +3238,A,18.00,5.00,3.00,Female,1,Baseline,15 +3239,C,19.00,1.00,1.00,Female,1,Baseline,1 +3240,B,19.00,6.00,7.00,Male,1,Baseline,42 +3241,C,20.00,0.00,0.00,Male,0,Baseline,0 +3242,A,21.00,2.00,7.00,Female,1,Baseline,14 +3243,C,22.00,2.00,2.00,Female,1,Baseline,4 +3244,A,23.00,9.00,2.00,Male,1,Baseline,18 +3245,B,21.00,7.00,12.0,Male,1,Baseline,84 +3246,A,23.00,4.00,10.0,Male,1,Baseline,40 +3247,A,21.00,4.00,20.0,Male,1,Baseline,80 +3248,A,25.00,10.0,2.00,Female,1,Baseline,20 +3249,A,20.00,8.00,12.0,Male,1,Baseline,96 +3250,C,19.00,0.00,0.00,Female,0,Baseline,0 +3251,A,18.00,7.00,15.0,Male,1,Baseline,105 +3252,B,21.00,6.00,2.00,Female,1,Baseline,12 +3255,A,22.00,4.00,5.00,Male,1,Baseline,20 +3256,C,18.00,3.00,2.00,Female,1,Baseline,6 +3257,C,19.00,5.00,3.00,Female,1,Baseline,15 +3258,A,21.00,8.00,12.0,Male,1,Baseline,96 +3259,A,18.00,2.00,3.00,Female,1,Baseline,6 +3260,C,43.00,8.00,2.00,Female,1,Baseline,16 +3261,C,20.00,6.00,4.00,Female,1,Baseline,24 +3262,B,23.00,1.00,8.00,Female,1,Baseline,8 +3263,B,21.00,0.00,0.00,Female,0,Baseline,0 +3264,B,19.00,5.00,6.00,Female,1,Baseline,30 +3265,C,45.00,15.0,1.00,Female,1,Baseline,15 +3266,C,34.00,0.00,0.00,Female,0,Baseline,0 +3267,A,22.00,4.00,5.00,Female,1,Baseline,20 +3268,B,18.00,5.00,9.00,Female,1,Baseline,45 +3269,B,19.00,8.00,6.00,Female,1,Baseline,48 +3270,A,21.00,4.00,8.00,Female,1,Baseline,32 +3271,B,23.00,3.00,4.00,Female,1,Baseline,12 +3272,B,19.00,4.00,3.00,Female,1,Baseline,12 +3273,A,18.00,3.00,1.00,Female,1,Baseline,3 +3274,C,20.00,12.0,12.0,Female,1,Baseline,144 +3275,B,20.00,8.00,6.00,Female,1,Baseline,48 +3277,B,18.00,4.00,10.0,Male,1,Baseline,40 +3278,A,21.00,5.00,2.00,Female,1,Baseline,10 +3279,C,20.00,7.00,15.0,Male,1,Baseline,105 +3280,C,41.00,26.0,2.00,Male,1,Baseline,52 +3281,B,43.00,10.0,9.00,Female,1,Baseline,90 +3282,C,24.00,10.0,3.00,Female,1,Baseline,30 +3283,A,29.00,10.0,1.00,Female,1,Baseline,10 +3284,A,22.00,18.0,2.00,Female,1,Baseline,36 +3285,B,22.00,4.00,1.00,Female,1,Baseline,4 +3286,C,25.00,8.00,2.00,Female,1,Baseline,16 +3287,A,19.00,0.00,0.00,Female,0,Baseline,0 +3288,A,23.00,5.00,5.00,Female,1,Baseline,25 +3289,A,20.00,1.00,2.00,Female,1,Baseline,2 +3290,C,22.00,3.00,1.00,Female,1,Baseline,3 +3291,A,19.00,0.00,0.00,Female,0,Baseline,0 +3292,A,22.00,8.00,1.00,Male,1,Baseline,8 +3293,A,21.00,0.00,0.00,Female,0,Baseline,0 +3295,B,18.00,1.00,2.00,Female,1,Baseline,2 +3296,A,21.00,4.00,3.00,Female,1,Baseline,12 +3297,A,22.00,6.00,20.0,Male,1,Baseline,120 +3298,A,19.00,3.00,3.00,Female,1,Baseline,9 +3299,A,26.00,6.00,2.00,Female,1,Baseline,12 +3300,A,36.00,24.0,1.00,Male,1,Baseline,24 +3302,C,25.00,5.00,2.00,Female,1,Baseline,10 +3303,B,23.00,10.0,2.00,Female,1,Baseline,20 +3305,A,19.00,8.00,8.00,Female,1,Baseline,64 +3306,B,20.00,2.00,1.00,Female,1,Baseline,2 +3307,B,22.00,4.00,3.00,Female,1,Baseline,12 +3308,B,19.00,4.00,5.00,Female,1,Baseline,20 +3310,B,18.00,4.00,3.00,Male,1,Baseline,12 +3311,A,18.00,2.00,3.00,Female,1,Baseline,6 +3312,A,27.00,4.00,6.00,Male,1,Baseline,24 +3313,A,19.00,0.00,0.00,Female,0,Baseline,0 +3314,C,28.00,3.00,1.00,Female,1,Baseline,3 +3315,B,23.00,0.00,0.00,Male,0,Baseline,0 +3316,A,22.00,10.0,5.00,Female,1,Baseline,50 +3318,A,29.00,24.0,4.00,Female,1,Baseline,96 +3320,A,22.00,7.00,1.00,Female,1,Baseline,7 +3321,B,28.00,12.0,1.00,Female,1,Baseline,12 +3322,B,21.00,5.00,3.00,Male,1,Baseline,15 +3323,B,23.00,10.0,1.00,Male,1,Baseline,10 +3324,A,18.00,2.00,6.00,Female,1,Baseline,12 +3325,B,20.00,5.00,2.00,Male,1,Baseline,10 +3327,B,18.00,4.00,8.00,Female,1,Baseline,32 +3328,A,24.00,8.00,5.00,Female,1,Baseline,40 +3329,B,27.00,22.0,2.00,Female,1,Baseline,44 +3330,B,20.00,1.00,4.00,Female,1,Baseline,4 +3331,B,53.00,9.00,3.00,Male,1,Baseline,27 +3332,A,19.00,5.00,12.0,Male,1,Baseline,60 +3334,A,18.00,4.00,2.00,Female,1,Baseline,8 +3335,C,18.00,1.00,3.00,Female,1,Baseline,3 +3336,C,18.00,0.00,0.00,Female,0,Baseline,0 +3337,B,21.00,7.00,12.0,Male,1,Baseline,84 +3338,B,21.00,8.00,6.00,Female,1,Baseline,48 +3339,A,26.00,0.00,0.00,Female,0,Baseline,0 +3340,B,24.00,2.00,3.00,Female,1,Baseline,6 +3341,B,29.00,2.00,2.00,Female,1,Baseline,4 +3343,A,21.00,0.00,0.00,Male,0,Baseline,0 +3344,A,19.00,4.00,14.0,Male,1,Baseline,56 +3346,A,20.00,7.00,10.0,Female,1,Baseline,70 +3347,A,21.00,0.00,0.00,Female,0,Baseline,0 +3348,A,19.00,6.00,4.00,Female,1,Baseline,24 +3349,A,24.00,0.00,0.00,Female,0,Baseline,0 +3351,B,21.00,4.00,8.00,Female,1,Baseline,32 +3352,B,20.00,0.00,0.00,Female,0,Baseline,0 +3353,A,21.00,10.0,4.00,Female,1,Baseline,40 +3354,C,20.00,1.00,1.00,Female,1,Baseline,1 +3355,B,27.00,2.00,1.00,Male,1,Baseline,2 +3356,B,51.00,0.00,0.00,Female,0,Baseline,0 +3358,B,33.00,6.00,4.00,Female,1,Baseline,24 +3359,B,29.00,8.00,1.00,Female,1,Baseline,8 +3360,B,36.00,1.00,2.00,Male,1,Baseline,2 +3361,A,22.00,0.00,0.00,Female,0,Baseline,0 +3362,A,20.00,4.00,6.00,Female,1,Baseline,24 +3364,A,19.00,0.00,0.00,Male,0,Baseline,0 +3365,C,39.00,0.00,0.00,Female,0,Baseline,0 +3366,A,19.00,0.00,0.00,Female,0,Baseline,0 +3367,C,21.00,8.00,3.00,Female,1,Baseline,24 +3368,A,20.00,6.00,2.00,Female,1,Baseline,12 +3369,A,21.00,0.00,0.00,Female,0,Baseline,0 +3370,A,22.00,2.00,2.00,Female,1,Baseline,4 +3372,B,24.00,1.00,1.00,Female,1,Baseline,1 +3373,A,20.00,3.00,2.00,Female,1,Baseline,6 +3374,A,26.00,0.00,0.00,Male,0,Baseline,0 +3375,B,95.00,17.0,27.0,Male,1,Baseline,459 +3376,C,23.00,0.00,0.00,Female,0,Baseline,0 +3378,B,21.00,8.00,4.00,Female,1,Baseline,32 +3379,A,20.00,0.00,0.00,Female,0,Baseline,0 +3380,A,21.00,3.00,2.00,Female,1,Baseline,6 +3381,B,19.00,4.00,8.00,Female,1,Baseline,32 +3382,A,18.00,6.00,4.00,Female,1,Baseline,24 +3383,C,21.00,10.0,5.00,Female,1,Baseline,50 +3384,B,22.00,0.00,0.00,Male,0,Baseline,0 +3385,A,22.00,0.00,0.00,Female,0,Baseline,0 +3386,B,22.00,2.00,1.00,Male,1,Baseline,2 +3387,C,22.00,3.00,3.00,Female,1,Baseline,9 +3388,A,25.00,1.00,8.00,Male,1,Baseline,8 +3389,A,24.00,14.0,2.00,Female,1,Baseline,28 +3390,B,19.00,4.00,3.00,Male,1,Baseline,12 +3391,A,18.00,8.00,15.0,Female,1,Baseline,120 +3392,C,19.00,0.00,0.00,Female,0,Baseline,0 +3393,C,23.00,0.00,0.00,Female,0,Baseline,0 +3394,A,18.00,0.00,0.00,Female,0,Baseline,0 +3395,A,20.00,0.00,0.00,Female,0,Baseline,0 +3396,A,20.00,12.0,15.0,Male,1,Baseline,180 +3397,B,27.00,4.00,6.00,Male,1,Baseline,24 +3398,B,26.00,0.00,0.00,Male,0,Baseline,0 +3399,C,21.00,0.00,0.00,Female,0,Baseline,0 +3400,A,21.00,6.00,12.0,Male,1,Baseline,72 +3401,B,30.00,12.0,2.00,Female,1,Baseline,24 +3403,A,21.00,9.00,2.00,Male,1,Baseline,18 +3404,B,20.00,0.00,0.00,Female,0,Baseline,0 +3405,A,19.00,3.00,2.00,Male,1,Baseline,6 +3406,B,21.00,0.00,0.00,Female,0,Baseline,0 +3407,C,23.00,5.00,12.0,Male,1,Baseline,60 +3409,C,23.00,4.00,2.00,Female,1,Baseline,8 +3410,A,19.00,4.00,10.0,Female,1,Baseline,40 +3411,C,74.00,12.0,2.00,Male,1,Baseline,24 +3412,B,20.00,2.00,3.00,Female,1,Baseline,6 +3413,B,32.00,3.00,24.0,Female,1,Baseline,72 +3414,A,42.00,0.00,0.00,Male,0,Baseline,0 +3415,C,28.00,3.00,3.00,Male,1,Baseline,9 +3416,B,22.00,6.00,15.0,Female,1,Baseline,90 +3417,A,19.00,3.00,8.00,Male,1,Baseline,24 +3419,B,21.00,7.00,2.00,Male,1,Baseline,14 +3420,B,35.00,7.00,1.00,Female,1,Baseline,7 +3421,B,21.00,3.00,4.00,Female,1,Baseline,12 +3422,A,40.00,3.00,3.00,Female,1,Baseline,9 +3424,B,31.00,6.00,4.00,Female,1,Baseline,24 +3425,C,25.00,5.00,2.00,Female,1,Baseline,10 +3426,A,18.00,8.00,4.00,Male,1,Baseline,32 +3428,B,20.00,6.00,10.0,Male,1,Baseline,60 +3429,A,18.00,1.00,3.00,Female,1,Baseline,3 +3430,A,19.00,3.00,14.0,Male,1,Baseline,42 +3431,C,52.00,8.00,2.00,Female,1,Baseline,16 +3432,B,33.00,6.00,1.00,Male,1,Baseline,6 +3433,A,22.00,4.00,5.00,Female,1,Baseline,20 +3434,C,20.00,7.00,11.0,Female,1,Baseline,77 +3435,C,21.00,0.00,0.00,Female,0,Baseline,0 +3436,A,21.00,0.00,0.00,Male,0,Baseline,0 +3437,B,18.00,6.00,4.00,Female,1,Baseline,24 +3438,B,21.00,5.00,8.00,Female,1,Baseline,40 +3440,A,19.00,0.00,0.00,Female,0,Baseline,0 +3441,C,21.00,6.00,2.00,Female,1,Baseline,12 +3442,C,18.00,10.0,16.0,Male,1,Baseline,160 +3443,B,20.00,0.00,0.00,Female,0,Baseline,0 +3445,B,21.00,0.00,0.00,Female,0,Baseline,0 +3446,C,20.00,4.00,13.0,Female,1,Baseline,52 +3447,A,18.00,4.00,4.00,Female,1,Baseline,16 +3449,B,21.00,0.00,0.00,Male,0,Baseline,0 +3450,B,34.00,6.00,1.00,Male,1,Baseline,6 +3451,C,27.00,0.00,0.00,Female,0,Baseline,0 +3454,A,19.00,4.00,13.0,Male,1,Baseline,52 +3455,A,21.00,1.00,2.00,Female,1,Baseline,2 +3457,A,21.00,4.00,12.0,Female,1,Baseline,48 +3458,A,21.00,5.00,12.0,Male,1,Baseline,60 +3459,A,21.00,0.00,0.00,Female,0,Baseline,0 +3460,B,21.00,3.00,1.00,Male,1,Baseline,3 +3461,B,19.00,5.00,8.00,Female,1,Baseline,40 +3463,B,63.00,20.0,2.00,Female,1,Baseline,40 +3464,C,19.00,5.00,5.00,Female,1,Baseline,25 +3466,B,20.00,6.00,10.0,Female,1,Baseline,60 +3467,A,21.00,5.00,16.0,Male,1,Baseline,80 +3468,B,21.00,13.0,3.00,Male,1,Baseline,39 +3469,C,21.00,6.00,10.0,Female,1,Baseline,60 +3471,B,18.00,2.00,2.00,Female,1,Baseline,4 +3472,A,25.00,2.00,2.00,Female,1,Baseline,4 +3473,A,47.00,0.00,0.00,Female,0,Baseline,0 +3474,A,20.00,4.00,8.00,Male,1,Baseline,32 +3475,C,19.00,8.00,6.00,Female,1,Baseline,48 +3476,B,51.00,2.00,2.00,Female,1,Baseline,4 +3477,B,24.00,0.00,0.00,Female,0,Baseline,0 +3478,B,46.00,20.0,2.00,Male,1,Baseline,40 +3480,B,22.00,5.00,10.0,Female,1,Baseline,50 +3481,B,39.00,4.00,1.00,Male,1,Baseline,4 +3482,C,24.00,3.00,2.00,Female,1,Baseline,6 +3483,C,24.00,4.00,2.00,Female,1,Baseline,8 +3484,B,19.00,2.00,1.00,Male,1,Baseline,2 +3487,C,19.00,5.00,5.00,Female,1,Baseline,25 +3488,A,31.00,10.0,2.00,Female,1,Baseline,20 +3489,A,22.00,2.00,2.00,Female,1,Baseline,4 +3490,C,21.00,1.00,3.00,Female,1,Baseline,3 +3491,B,21.00,2.00,2.00,Male,1,Baseline,4 +3492,A,19.00,6.00,8.00,Female,1,Baseline,48 +3494,A,41.00,7.00,4.00,Male,1,Baseline,28 +3495,A,22.00,4.00,6.00,Female,1,Baseline,24 +3498,A,20.00,3.00,5.00,Male,1,Baseline,15 +3499,B,19.00,8.00,6.00,Female,1,Baseline,48 +3500,B,23.00,0.00,0.00,Female,0,Baseline,0 +3502,B,21.00,4.00,6.00,Female,1,Baseline,24 +3503,C,44.00,1.00,2.00,Female,1,Baseline,2 +3505,B,20.00,2.00,2.00,Female,1,Baseline,4 +3506,B,22.00,1.00,1.00,Female,1,Baseline,1 +3507,C,19.00,3.00,7.00,Female,1,Baseline,21 +3508,B,19.00,5.00,1.00,Male,1,Baseline,5 +3509,A,20.00,14.0,2.00,Female,1,Baseline,28 +3510,C,23.00,4.00,7.00,Female,1,Baseline,28 +3511,A,18.00,2.00,7.00,Male,1,Baseline,14 +3512,A,20.00,3.00,6.00,Female,1,Baseline,18 +3513,B,18.00,0.00,0.00,Female,0,Baseline,0 +3514,C,21.00,15.0,3.00,Male,1,Baseline,45 +3515,C,20.00,1.00,,Male,1,Baseline, +3516,C,19.00,4.00,14.0,Male,1,Baseline,56 +3518,C,23.00,0.00,0.00,Female,0,Baseline,0 +3519,A,18.00,0.00,0.00,Female,0,Baseline,0 +3520,C,22.00,4.00,2.00,Female,1,Baseline,8 +3521,B,20.00,0.00,0.00,Female,0,Baseline,0 +3522,B,22.00,0.00,0.00,Female,0,Baseline,0 +3523,C,19.00,2.00,5.00,Female,1,Baseline,10 +3526,A,25.00,0.00,0.00,Female,0,Baseline,0 +3528,B,20.00,8.00,14.0,Female,1,Baseline,112 +3529,C,20.00,3.00,2.00,Male,1,Baseline,6 +3530,C,32.00,0.00,0.00,Male,0,Baseline,0 +3531,C,19.00,0.00,0.00,Female,0,Baseline,0 +3532,C,22.00,2.00,2.00,Female,1,Baseline,4 +3534,C,21.00,4.00,6.00,Female,1,Baseline,24 +3535,A,20.00,2.00,3.00,Female,1,Baseline,6 +3536,C,21.00,10.0,6.00,Male,1,Baseline,60 +3539,C,26.00,10.0,2.00,Male,1,Baseline,20 +3540,C,21.00,5.00,5.00,Male,1,Baseline,25 +3541,C,19.00,3.00,1.00,Male,1,Baseline,3 +3542,C,18.00,2.00,6.00,Female,1,Baseline,12 +3543,C,18.00,3.00,5.00,Female,1,Baseline,15 +3545,C,25.00,11.0,1.00,Male,1,Baseline,11 +3546,C,39.00,0.00,0.00,Female,0,Baseline,0 +3547,C,21.00,1.00,1.00,Female,1,Baseline,1 +3548,A,21.00,0.00,0.00,Female,0,Baseline,0 +3549,B,37.00,12.0,3.00,Female,1,Baseline,36 +3550,C,20.00,4.00,9.00,Male,1,Baseline,36 +3552,B,21.00,2.00,6.00,Female,1,Baseline,12 +3554,B,44.00,0.00,0.00,Male,0,Baseline,0 +3555,A,18.00,3.00,2.00,Female,1,Baseline,6 +3557,A,21.00,8.00,6.00,Female,1,Baseline,48 +3558,B,19.00,0.00,0.00,Female,0,Baseline,0 +3559,C,24.00,0.00,0.00,Female,0,Baseline,0 +3560,B,24.00,5.00,1.00,Male,1,Baseline,5 +3561,C,18.00,3.00,7.00,Female,1,Baseline,21 +3562,B,39.00,4.00,5.00,Female,1,Baseline,20 +3563,C,31.00,3.00,3.00,Female,1,Baseline,9 +3564,B,19.00,3.00,1.00,Female,1,Baseline,3 +3565,A,23.00,8.00,6.00,Female,1,Baseline,48 +3566,A,23.00,2.00,15.0,Female,1,Baseline,30 +3568,B,22.00,0.00,0.00,Female,0,Baseline,0 +3569,B,20.00,7.00,15.0,Male,1,Baseline,105 +3570,B,21.00,0.00,0.00,Male,0,Baseline,0 +3571,C,18.00,1.00,2.00,Male,1,Baseline,2 +3572,C,38.00,6.00,1.00,Male,1,Baseline,6 +3573,C,21.00,4.00,10.0,Female,1,Baseline,40 +3574,A,24.00,3.00,2.00,Female,1,Baseline,6 +3575,A,25.00,12.0,2.00,Female,1,Baseline,24 +3577,C,21.00,2.00,5.00,Female,1,Baseline,10 +3578,B,18.00,4.00,5.00,Female,1,Baseline,20 +3579,A,23.00,1.00,1.00,Male,1,Baseline,1 +3580,B,20.00,13.0,7.00,Male,1,Baseline,91 +3581,C,41.00,1.00,2.00,Female,1,Baseline,2 +3582,C,20.00,0.00,0.00,Female,0,Baseline,0 +3584,B,21.00,5.00,6.00,Female,1,Baseline,30 +3585,A,45.00,8.00,1.00,Female,1,Baseline,8 +3586,C,21.00,5.00,7.00,Female,1,Baseline,35 +3587,A,29.00,5.00,3.00,Female,1,Baseline,15 +3588,B,22.00,16.0,2.00,Female,1,Baseline,32 +3589,A,19.00,3.00,6.00,Female,1,Baseline,18 +3590,C,19.00,11.0,2.00,Female,1,Baseline,22 +3592,B,26.00,3.00,1.00,Female,1,Baseline,3 +3593,A,20.00,18.0,5.00,Female,1,Baseline,90 +3594,A,21.00,7.00,10.0,Female,1,Baseline,70 +3595,C,19.00,4.00,8.00,Female,1,Baseline,32 +3596,C,45.00,20.0,1.00,Female,1,Baseline,20 +3597,B,18.00,0.00,0.00,Female,0,Baseline,0 +3598,B,21.00,2.00,3.00,Female,1,Baseline,6 +3599,A,18.00,0.00,0.00,Female,0,Baseline,0 +3600,B,20.00,4.00,3.00,Female,1,Baseline,12 +3601,B,24.00,0.00,0.00,Female,0,Baseline,0 +3602,A,28.00,12.0,2.00,Female,1,Baseline,24 +3603,B,20.00,7.00,4.00,Female,1,Baseline,28 +3606,B,18.00,2.00,1.00,Female,1,Baseline,2 +3607,C,20.00,1.00,1.00,Female,1,Baseline,1 +3608,B,36.00,8.00,7.00,Female,1,Baseline,56 +3609,B,19.00,6.00,6.00,Male,1,Baseline,36 +3611,C,22.00,0.00,0.00,Female,0,Baseline,0 +3612,A,21.00,7.00,6.00,Female,1,Baseline,42 +3613,A,18.00,14.0,24.0,Male,1,Baseline,336 +3614,B,60.00,5.00,2.00,Male,1,Baseline,10 +3615,A,22.00,1.00,4.00,Female,1,Baseline,4 +3616,A,18.00,0.00,0.00,Female,0,Baseline,0 +3617,C,18.00,9.00,4.00,Female,1,Baseline,36 +3618,B,34.00,4.00,4.00,Female,1,Baseline,16 +3619,B,20.00,0.00,0.00,Female,0,Baseline,0 +3621,B,20.00,4.00,4.00,Female,1,Baseline,16 +3622,C,22.00,0.00,0.00,Female,0,Baseline,0 +3623,C,20.00,0.00,0.00,Male,0,Baseline,0 +3624,A,19.00,0.00,0.00,Male,0,Baseline,0 +3625,B,27.00,3.00,3.00,Male,1,Baseline,9 +3626,A,19.00,2.00,4.00,Female,1,Baseline,8 +3627,C,20.00,9.00,3.00,Female,1,Baseline,27 +3630,A,43.00,3.00,1.00,Male,1,Baseline,3 +3631,B,20.00,8.00,4.00,Female,1,Baseline,32 +3632,B,22.00,0.00,0.00,Female,0,Baseline,0 +3633,B,18.00,4.00,5.00,Female,1,Baseline,20 +3634,B,33.00,3.00,2.00,Female,1,Baseline,6 +3635,A,39.00,12.0,1.00,Male,1,Baseline,12 +3637,C,21.00,2.00,3.00,Female,1,Baseline,6 +3638,C,18.00,7.00,1.00,Male,1,Baseline,7 +3640,A,18.00,1.00,2.00,Female,1,Baseline,2 +3641,C,19.00,0.00,0.00,Male,0,Baseline,0 +3642,C,23.00,10.0,2.00,Female,1,Baseline,20 +3643,A,19.00,0.00,0.00,Female,0,Baseline,0 +3644,C,21.00,2.00,1.00,Male,1,Baseline,2 +3645,A,21.00,3.00,12.0,Female,1,Baseline,36 +3646,B,19.00,0.00,0.00,Female,0,Baseline,0 +3647,A,51.00,0.00,0.00,Female,0,Baseline,0 +3648,B,20.00,1.00,1.00,Male,1,Baseline,1 +3650,B,18.00,8.00,8.00,Female,1,Baseline,64 +3651,A,19.00,0.00,0.00,Female,0,Baseline,0 +3653,B,20.00,2.00,3.00,Male,1,Baseline,6 +3654,A,32.00,0.00,0.00,Female,0,Baseline,0 +3655,B,24.00,20.0,2.00,Female,1,Baseline,40 +3656,C,25.00,8.00,3.00,Female,1,Baseline,24 +3657,B,20.00,4.00,8.00,Female,1,Baseline,32 +3658,B,65.00,0.00,0.00,Male,0,Baseline,0 +3659,C,21.00,4.00,6.00,Female,1,Baseline,24 +3660,B,19.00,0.00,0.00,Female,0,Baseline,0 +3661,B,18.00,0.00,0.00,Female,0,Baseline,0 +3662,B,24.00,2.00,2.00,Male,1,Baseline,4 +3664,B,18.00,4.00,1.00,Female,1,Baseline,4 +3665,C,21.00,6.00,8.00,Female,1,Baseline,48 +3666,A,20.00,2.00,15.0,Male,1,Baseline,30 +3667,A,20.00,2.00,10.0,Female,1,Baseline,20 +3668,A,18.00,3.00,4.00,Female,1,Baseline,12 +3669,B,34.00,15.0,2.00,Female,1,Baseline,30 +3670,B,26.00,1.00,1.00,Female,1,Baseline,1 +3671,A,20.00,2.00,6.00,Male,1,Baseline,12 +3672,C,22.00,2.00,2.00,Female,1,Baseline,4 +3673,A,23.00,0.00,0.00,Female,0,Baseline,0 +3674,C,19.00,0.00,0.00,Female,0,Baseline,0 +3675,B,69.00,0.00,0.00,Male,0,Baseline,0 +3676,A,21.00,8.00,1.00,Male,1,Baseline,8 +3678,B,18.00,1.00,6.00,Male,1,Baseline,6 +3679,B,22.00,8.00,2.00,Female,1,Baseline,16 +3680,C,34.00,25.0,1.00,Female,1,Baseline,25 +3681,B,20.00,22.0,6.00,Male,1,Baseline,132 +3682,A,18.00,3.00,3.00,Female,1,Baseline,9 +3683,C,18.00,6.00,4.00,Female,1,Baseline,24 +3684,A,19.00,6.00,10.0,Female,1,Baseline,60 +3685,B,18.00,4.00,5.00,Female,1,Baseline,20 +3686,A,22.00,7.00,13.0,Male,1,Baseline,91 +3687,A,20.00,9.00,1.00,Male,1,Baseline,9 +3688,A,22.00,0.00,0.00,Female,0,Baseline,0 +3690,A,25.00,5.00,1.00,Female,1,Baseline,5 +3691,C,20.00,8.00,4.00,Female,1,Baseline,32 +3692,A,22.00,1.00,1.00,Female,1,Baseline,1 +3693,A,22.00,3.00,3.00,Female,1,Baseline,9 +3694,B,19.00,7.00,5.00,Female,1,Baseline,35 +3695,B,55.00,4.00,1.00,Male,1,Baseline,4 +3696,C,45.00,0.00,0.00,Female,0,Baseline,0 +3697,A,21.00,0.00,0.00,Male,0,Baseline,0 +3698,C,20.00,6.00,3.00,Female,1,Baseline,18 +3699,B,20.00,3.00,8.00,Female,1,Baseline,24 +3700,A,21.00,2.00,2.00,Female,1,Baseline,4 +3701,B,42.00,1.00,2.00,Female,1,Baseline,2 +3702,B,20.00,2.00,2.00,Male,1,Baseline,4 +3703,C,21.00,0.00,0.00,Female,0,Baseline,0 +3706,A,23.00,0.00,0.00,Female,0,Baseline,0 +3707,C,18.00,0.00,0.00,Female,0,Baseline,0 +3709,B,19.00,1.00,8.00,Female,1,Baseline,8 +3712,C,18.00,0.00,0.00,Female,0,Baseline,0 +3713,C,21.00,4.00,1.00,Female,1,Baseline,4 +3714,C,25.00,0.00,0.00,Female,0,Baseline,0 +3715,A,21.00,0.00,0.00,Female,0,Baseline,0 +3716,C,22.00,6.00,3.00,Female,1,Baseline,18 +3717,C,18.00,0.00,0.00,Male,0,Baseline,0 +3718,B,28.00,4.00,2.00,Male,1,Baseline,8 +3719,A,21.00,2.00,2.00,Female,1,Baseline,4 +3720,B,23.00,2.00,4.00,Male,1,Baseline,8 +3721,C,21.00,5.00,4.00,Female,1,Baseline,20 +3723,C,42.00,3.00,2.00,Female,1,Baseline,6 +3724,A,20.00,2.00,12.0,Male,1,Baseline,24 +3725,A,21.00,0.00,0.00,Female,0,Baseline,0 +3726,C,18.00,2.00,2.00,Female,1,Baseline,4 +3727,C,22.00,2.00,8.00,Male,1,Baseline,16 +3728,B,22.00,2.00,1.00,Female,1,Baseline,2 +3730,B,20.00,2.00,3.00,Male,1,Baseline,6 +3731,B,27.00,6.00,2.00,Female,1,Baseline,12 +3732,A,47.00,0.00,0.00,Female,0,Baseline,0 +3733,B,29.00,8.00,10.0,Male,1,Baseline,80 +3734,C,31.00,5.00,1.00,Female,1,Baseline,5 +3735,B,20.00,1.00,1.00,Male,1,Baseline,1 +3737,A,20.00,1.00,16.0,Female,1,Baseline,16 +3738,A,49.00,3.00,4.00,Female,1,Baseline,12 +3739,C,44.00,3.00,1.00,Male,1,Baseline,3 +3741,C,20.00,0.00,0.00,Female,0,Baseline,0 +3742,C,33.00,9.00,5.00,Male,1,Baseline,45 +3743,C,22.00,0.00,0.00,Female,0,Baseline,0 +3744,B,28.00,7.00,2.00,Female,1,Baseline,14 +3745,C,42.00,1.00,1.00,Female,1,Baseline,1 +3747,B,29.00,6.00,5.00,Female,1,Baseline,30 +3748,A,23.00,4.00,4.00,Male,1,Baseline,16 +3749,C,46.00,27.0,1.00,Female,1,Baseline,27 +3750,B,19.00,10.0,3.00,Female,1,Baseline,30 +3751,B,20.00,2.00,5.00,Female,1,Baseline,10 +3752,A,18.00,0.00,0.00,Female,0,Baseline,0 +3753,C,21.00,12.0,1.00,Female,1,Baseline,12 +3755,C,55.00,7.00,1.00,Female,1,Baseline,7 +3756,B,50.00,8.00,2.00,Female,1,Baseline,16 +3757,A,21.00,1.00,2.00,Male,1,Baseline,2 +3758,A,20.00,0.00,0.00,Female,0,Baseline,0 +3759,A,23.00,1.00,1.00,Male,1,Baseline,1 +3760,B,19.00,4.00,6.00,Male,1,Baseline,24 +3762,B,22.00,5.00,8.00,Female,1,Baseline,40 +3763,C,19.00,2.00,1.00,Female,1,Baseline,2 +3764,B,19.00,0.00,0.00,Male,0,Baseline,0 +3765,A,19.00,0.00,0.00,Female,0,Baseline,0 +3766,A,37.00,3.00,1.00,Female,1,Baseline,3 +3767,A,20.00,7.00,8.00,Female,1,Baseline,56 +3768,B,27.00,8.00,2.00,Female,1,Baseline,16 +3769,C,47.00,20.0,1.00,Female,1,Baseline,20 +3770,A,32.00,0.00,0.00,Female,0,Baseline,0 +3771,B,25.00,3.00,1.00,Male,1,Baseline,3 +3772,C,22.00,2.00,1.00,Female,1,Baseline,2 +3773,C,43.00,7.00,2.00,Male,1,Baseline,14 +3775,C,34.00,2.00,10.0,Male,1,Baseline,20 +3776,A,19.00,7.00,2.00,Female,1,Baseline,14 +3778,C,21.00,8.00,4.00,Female,1,Baseline,32 +3779,A,22.00,0.00,0.00,Female,0,Baseline,0 +3780,B,20.00,7.00,8.00,Male,1,Baseline,56 +3781,C,59.00,0.00,0.00,Female,0,Baseline,0 +3782,C,23.00,10.0,3.00,Female,1,Baseline,30 +3783,C,26.00,2.00,2.00,Female,1,Baseline,4 +3784,A,46.00,6.00,2.00,Male,1,Baseline,12 +3785,A,19.00,0.00,0.00,Female,0,Baseline,0 +3786,C,23.00,2.00,1.00,Female,1,Baseline,2 +3787,C,20.00,2.00,4.00,Male,1,Baseline,8 +3788,C,22.00,1.00,2.00,Male,1,Baseline,2 +3789,B,24.00,4.00,5.00,Female,1,Baseline,20 +3790,C,19.00,3.00,5.00,Female,1,Baseline,15 +3791,A,49.00,0.00,0.00,Female,0,Baseline,0 +3792,A,29.00,2.00,1.00,Male,1,Baseline,2 +3794,A,20.00,1.00,2.00,Female,1,Baseline,2 +3795,A,22.00,2.00,1.00,Male,1,Baseline,2 +3796,C,19.00,13.0,1.00,Female,1,Baseline,13 +3798,B,28.00,4.00,3.00,Female,1,Baseline,12 +3800,B,20.00,5.00,4.00,Female,1,Baseline,20 +3801,C,32.00,8.00,4.00,Female,1,Baseline,32 +3802,A,18.00,3.00,1.00,Female,1,Baseline,3 +3803,C,21.00,1.00,4.00,Female,1,Baseline,4 +3804,B,39.00,2.00,2.00,Female,1,Baseline,4 +3805,A,20.00,6.00,10.0,Male,1,Baseline,60 +3807,B,19.00,0.00,0.00,Female,0,Baseline,0 +3808,A,20.00,0.00,0.00,Female,0,Baseline,0 +3809,B,25.00,2.00,1.00,Female,1,Baseline,2 +3810,C,39.00,6.00,4.00,Female,1,Baseline,24 +3811,A,19.00,0.00,0.00,Female,0,Baseline,0 +3812,A,23.00,0.00,0.00,Female,0,Baseline,0 +3813,A,35.00,1.00,3.00,Female,1,Baseline,3 +3814,B,19.00,7.00,4.00,Female,1,Baseline,28 +3815,C,18.00,1.00,4.00,Female,1,Baseline,4 +3816,C,33.00,0.00,0.00,Female,0,Baseline,0 +3818,C,26.00,8.00,1.00,Female,1,Baseline,8 +3819,B,25.00,0.00,0.00,Female,0,Baseline,0 +3820,C,19.00,2.00,6.00,Female,1,Baseline,12 +3821,C,24.00,5.00,1.00,Female,1,Baseline,5 +3822,B,19.00,4.00,4.00,Female,1,Baseline,16 +3823,A,26.00,9.00,1.00,Male,1,Baseline,9 +3824,B,20.00,2.00,2.00,Male,1,Baseline,4 +3825,C,21.00,2.00,1.00,Female,1,Baseline,2 +3826,A,19.00,3.00,5.00,Female,1,Baseline,15 +3827,B,18.00,0.00,0.00,Female,0,Baseline,0 +3828,C,21.00,0.00,0.00,Female,0,Baseline,0 +3829,A,46.00,12.0,2.00,Male,1,Baseline,24 +3831,A,18.00,4.00,3.00,Female,1,Baseline,12 +3832,B,44.00,12.0,2.00,Female,1,Baseline,24 +3833,B,19.00,5.00,13.0,Male,1,Baseline,65 +3834,B,48.00,0.00,0.00,Male,0,Baseline,0 +3835,A,19.00,3.00,6.00,Female,1,Baseline,18 +3836,C,21.00,2.00,1.00,Male,1,Baseline,2 +3838,C,39.00,7.00,2.00,Female,1,Baseline,14 +3840,C,18.00,12.0,5.00,Male,1,Baseline,60 +3841,A,19.00,3.00,7.00,Female,1,Baseline,21 +3842,B,18.00,3.00,3.00,Female,1,Baseline,9 +3843,B,19.00,0.00,0.00,Female,0,Baseline,0 +3844,B,23.00,0.00,0.00,Female,0,Baseline,0 +3845,A,37.00,0.00,0.00,Female,0,Baseline,0 +3846,B,20.00,0.00,0.00,Female,0,Baseline,0 +3847,B,18.00,2.00,8.00,Male,1,Baseline,16 +3848,C,22.00,0.00,0.00,Female,0,Baseline,0 +3849,B,19.00,2.00,3.00,Female,1,Baseline,6 +3850,B,30.00,10.0,2.00,Female,1,Baseline,20 +3851,B,28.00,1.00,2.00,Male,1,Baseline,2 +3854,C,20.00,0.00,0.00,Female,0,Baseline,0 +3855,C,20.00,1.00,7.00,Male,1,Baseline,7 +3856,C,21.00,10.0,14.0,Female,1,Baseline,140 +3858,C,23.00,0.00,0.00,Male,0,Baseline,0 +3859,C,28.00,9.00,3.00,Female,1,Baseline,27 +3860,A,21.00,3.00,6.00,Female,1,Baseline,18 +3861,C,22.00,1.00,8.00,Female,1,Baseline,8 +3864,A,20.00,10.0,1.00,Female,1,Baseline,10 +3865,C,21.00,16.0,3.00,Male,1,Baseline,48 +3869,A,22.00,0.00,0.00,Female,0,Baseline,0 +3870,B,51.00,10.0,2.00,Female,1,Baseline,20 +3871,C,33.00,0.00,0.00,Female,0,Baseline,0 +3872,C,24.00,2.00,3.00,Male,1,Baseline,6 +3873,A,21.00,21.0,4.00,Female,1,Baseline,84 +3874,A,19.00,6.00,10.0,Female,1,Baseline,60 +3875,C,52.00,13.0,1.00,Female,1,Baseline,13 +3876,C,21.00,8.00,14.0,Female,1,Baseline,112 +3877,C,19.00,0.00,0.00,Male,0,Baseline,0 +3880,A,18.00,0.00,0.00,Female,0,Baseline,0 +3882,C,34.00,0.00,0.00,Female,0,Baseline,0 +3884,C,25.00,1.00,1.00,Male,1,Baseline,1 +3885,A,37.00,4.00,5.00,Male,1,Baseline,20 +3887,C,46.00,14.0,2.00,Female,1,Baseline,28 +3888,C,47.00,0.00,0.00,Female,0,Baseline,0 +3889,B,18.00,4.00,5.00,Female,1,Baseline,20 +3890,C,19.00,3.00,5.00,Female,1,Baseline,15 +3891,C,19.00,2.00,3.00,Female,1,Baseline,6 +3893,B,18.00,2.00,1.00,Female,1,Baseline,2 +3894,B,21.00,2.00,3.00,Female,1,Baseline,6 +3895,A,20.00,4.00,7.00,Female,1,Baseline,28 +3898,A,20.00,0.00,0.00,Female,0,Baseline,0 +3900,B,18.00,7.00,1.00,Female,1,Baseline,7 +3901,A,20.00,0.00,0.00,Female,0,Baseline,0 +3902,B,22.00,0.00,0.00,Female,0,Baseline,0 +3903,A,21.00,8.00,12.0,Female,1,Baseline,96 +3904,B,23.00,10.0,4.00,Female,1,Baseline,40 +3905,A,21.00,2.00,2.00,Male,1,Baseline,4 +3906,A,19.00,1.00,6.00,Female,1,Baseline,6 +3907,B,23.00,5.00,5.00,Female,1,Baseline,25 +3908,C,27.00,0.00,0.00,Female,0,Baseline,0 +3910,A,18.00,3.00,5.00,Female,1,Baseline,15 +3911,A,19.00,5.00,6.00,Female,1,Baseline,30 +3912,C,20.00,3.00,5.00,Female,1,Baseline,15 +3913,B,25.00,9.00,3.00,Male,1,Baseline,27 +3914,B,23.00,3.00,24.0,Male,1,Baseline,72 +3916,C,38.00,10.0,3.00,Female,1,Baseline,30 +3917,B,20.00,2.00,2.00,Female,1,Baseline,4 +3918,C,20.00,5.00,5.00,Female,1,Baseline,25 +3919,B,18.00,5.00,4.00,Male,1,Baseline,20 +3920,B,18.00,5.00,1.00,Female,1,Baseline,5 +3921,C,19.00,2.00,1.00,Female,1,Baseline,2 +3922,C,25.00,0.00,0.00,Male,0,Baseline,0 +3923,A,21.00,4.00,3.00,Female,1,Baseline,12 +3924,C,37.00,5.00,1.00,Female,1,Baseline,5 +3925,A,19.00,3.00,1.00,Female,1,Baseline,3 +3926,A,22.00,6.00,10.0,Female,1,Baseline,60 +3927,A,19.00,0.00,0.00,Female,0,Baseline,0 +3928,C,21.00,0.00,0.00,Female,0,Baseline,0 +3929,C,28.00,1.00,1.00,Female,1,Baseline,1 +3930,A,19.00,0.00,0.00,Female,0,Baseline,0 +3931,A,38.00,3.00,1.00,Female,1,Baseline,3 +3932,C,27.00,6.00,1.00,Male,1,Baseline,6 +3934,C,22.00,9.00,8.00,Female,1,Baseline,72 +3936,B,25.00,4.00,3.00,Female,1,Baseline,12 +3938,C,18.00,2.00,3.00,Female,1,Baseline,6 +3940,B,23.00,0.00,0.00,Female,0,Baseline,0 +3942,A,19.00,0.00,0.00,Male,0,Baseline,0 +3943,B,29.00,1.00,10.0,Male,1,Baseline,10 +3944,B,20.00,5.00,7.00,Male,1,Baseline,35 +3945,C,20.00,5.00,14.0,Male,1,Baseline,70 +3946,B,20.00,0.00,0.00,Male,0,Baseline,0 +3947,A,25.00,2.00,12.0,Male,1,Baseline,24 +3948,B,22.00,0.00,0.00,Female,0,Baseline,0 +3949,B,34.00,9.00,1.00,Female,1,Baseline,9 +3950,A,21.00,1.00,8.00,Female,1,Baseline,8 +3951,B,30.00,12.0,3.00,Female,1,Baseline,36 +3953,C,19.00,0.00,0.00,Male,0,Baseline,0 +3954,B,31.00,6.00,3.00,Female,1,Baseline,18 +3955,A,21.00,4.00,10.0,Female,1,Baseline,40 +3956,C,22.00,7.00,5.00,Female,1,Baseline,35 +3957,B,35.00,6.00,12.0,Male,1,Baseline,72 +3958,A,19.00,20.0,8.00,Male,1,Baseline,160 +3959,C,19.00,4.00,9.00,Female,1,Baseline,36 +3960,A,22.00,2.00,1.00,Female,1,Baseline,2 +3961,B,30.00,15.0,4.00,Female,1,Baseline,60 +3962,A,18.00,0.00,0.00,Female,0,Baseline,0 +3963,A,22.00,8.00,3.00,Male,1,Baseline,24 +3964,A,22.00,0.00,0.00,Female,0,Baseline,0 +3966,C,22.00,1.00,2.00,Female,1,Baseline,2 +3967,B,24.00,1.00,3.00,Female,1,Baseline,3 +3968,A,30.00,0.00,0.00,Female,0,Baseline,0 +3970,A,22.00,1.00,2.00,Female,1,Baseline,2 +3971,C,22.00,4.00,12.0,Male,1,Baseline,48 +3972,C,19.00,3.00,3.00,Female,1,Baseline,9 +3973,C,21.00,0.00,0.00,Female,0,Baseline,0 +3974,A,20.00,7.00,14.0,Male,1,Baseline,98 +3975,B,19.00,10.0,12.0,Male,1,Baseline,120 +3976,A,22.00,4.00,2.00,Female,1,Baseline,8 +3977,B,21.00,1.00,1.00,Female,1,Baseline,1 +3978,B,25.00,6.00,4.00,Male,1,Baseline,24 +3979,A,41.00,3.00,4.00,Female,1,Baseline,12 +3980,A,23.00,6.00,8.00,Male,1,Baseline,48 +3981,C,21.00,2.00,3.00,Female,1,Baseline,6 +3982,A,21.00,3.00,5.00,Male,1,Baseline,15 +3983,C,22.00,7.00,1.00,Female,1,Baseline,7 +3984,A,23.00,4.00,1.00,Female,1,Baseline,4 +3985,B,21.00,7.00,12.0,Male,1,Baseline,84 +3986,C,24.00,2.00,6.00,Male,1,Baseline,12 +3987,A,20.00,4.00,4.00,Male,1,Baseline,16 +3988,B,21.00,5.00,3.00,Male,1,Baseline,15 +3989,A,21.00,0.00,0.00,Female,0,Baseline,0 +3990,A,40.00,19.0,3.00,Male,1,Baseline,57 +3991,A,26.00,21.0,3.00,Male,1,Baseline,63 +3992,A,22.00,1.00,1.00,Female,1,Baseline,1 +3993,A,19.00,3.00,5.00,Female,1,Baseline,15 +3994,A,21.00,4.00,2.00,Female,1,Baseline,8 +3995,B,24.00,3.00,1.00,Female,1,Baseline,3 +3998,C,21.00,2.00,1.00,Female,1,Baseline,2 +3999,A,21.00,1.00,1.00,Male,1,Baseline,1 +4000,B,19.00,0.00,0.00,Male,0,Baseline,0 +4001,C,21.00,9.00,8.00,Female,1,Baseline,72 +4002,C,30.00,28.0,3.00,Female,1,Baseline,84 +4003,B,25.00,5.00,5.00,Male,1,Baseline,25 +4004,B,21.00,3.00,2.00,Male,1,Baseline,6 +4005,C,23.00,1.00,1.00,Male,1,Baseline,1 +4006,B,20.00,2.00,5.00,Female,1,Baseline,10 +4007,C,22.00,4.00,4.00,Male,1,Baseline,16 +4008,C,19.00,10.0,6.00,Female,1,Baseline,60 +4009,A,26.00,0.00,0.00,Male,0,Baseline,0 +4010,B,35.00,10.0,1.00,Female,1,Baseline,10 +4011,A,22.00,7.00,15.0,Male,1,Baseline,105 +4012,B,25.00,0.00,0.00,Female,0,Baseline,0 +4013,C,22.00,4.00,2.00,Male,1,Baseline,8 +4015,C,22.00,0.00,0.00,Male,0,Baseline,0 +4016,C,23.00,5.00,7.00,Female,1,Baseline,35 +4018,A,24.00,2.00,1.00,Female,1,Baseline,2 +4019,A,24.00,14.0,1.00,Male,1,Baseline,14 +4020,B,45.00,4.00,4.00,Female,1,Baseline,16 +4021,B,38.00,0.00,0.00,Female,0,Baseline,0 +4022,C,20.00,22.0,1.00,Male,1,Baseline,22 +4023,C,19.00,10.0,7.00,Female,1,Baseline,70 +4025,A,34.00,0.00,0.00,Female,0,Baseline,0 +4026,A,29.00,4.00,2.00,Male,1,Baseline,8 +4027,A,21.00,7.00,5.00,Female,1,Baseline,35 +4028,A,22.00,2.00,1.00,Female,1,Baseline,2 +4029,A,20.00,4.00,4.00,Female,1,Baseline,16 +4030,A,21.00,7.00,2.00,Male,1,Baseline,14 +4031,C,27.00,0.00,0.00,Male,0,Baseline,0 +4032,A,20.00,6.00,8.00,Female,1,Baseline,48 +4033,B,21.00,3.00,3.00,Female,1,Baseline,9 +4034,C,27.00,3.00,4.00,Female,1,Baseline,12 +4035,B,24.00,4.00,3.00,Female,1,Baseline,12 +4037,B,36.00,0.00,0.00,Female,0,Baseline,0 +4038,C,20.00,10.0,2.00,Female,1,Baseline,20 +4040,C,19.00,11.0,20.0,Male,1,Baseline,220 +4041,A,26.00,6.00,2.00,Female,1,Baseline,12 +4042,A,22.00,6.00,5.00,Female,1,Baseline,30 +4044,C,30.00,1.00,1.00,Female,1,Baseline,1 +4045,B,31.00,0.00,0.00,Female,0,Baseline,0 +4046,C,21.00,4.00,8.00,Female,1,Baseline,32 +4047,B,37.00,16.0,2.00,Female,1,Baseline,32 +4048,C,22.00,2.00,8.00,Female,1,Baseline,16 +4049,A,21.00,5.00,15.0,Male,1,Baseline,75 +4050,B,22.00,4.00,3.00,Male,1,Baseline,12 +4051,B,21.00,7.00,6.00,Female,1,Baseline,42 +4052,B,18.00,7.00,3.00,Male,1,Baseline,21 +4054,B,21.00,5.00,6.00,Male,1,Baseline,30 +4055,B,21.00,10.0,6.00,Female,1,Baseline,60 +4056,C,29.00,20.0,1.00,Female,1,Baseline,20 +4057,B,50.00,0.00,0.00,Female,0,Baseline,0 +4058,A,22.00,5.00,2.00,Male,1,Baseline,10 +4059,B,24.00,16.0,1.00,Male,1,Baseline,16 +4061,B,23.00,2.00,1.00,Female,1,Baseline,2 +4063,C,21.00,2.00,5.00,Male,1,Baseline,10 +4064,C,21.00,2.00,1.00,Female,1,Baseline,2 +4065,B,19.00,7.00,3.00,Female,1,Baseline,21 +4066,B,19.00,4.00,3.00,Female,1,Baseline,12 +4067,A,26.00,4.00,1.00,Female,1,Baseline,4 +4068,C,21.00,3.00,2.00,Male,1,Baseline,6 +4069,C,21.00,10.0,2.00,Male,1,Baseline,20 +4070,B,41.00,0.00,0.00,Female,0,Baseline,0 +4071,B,22.00,2.00,3.00,Female,1,Baseline,6 +4072,A,23.00,0.00,0.00,Male,0,Baseline,0 +4073,B,21.00,2.00,1.00,Female,1,Baseline,2 +4074,C,22.00,6.00,4.00,Male,1,Baseline,24 +4075,C,23.00,2.00,3.00,Male,1,Baseline,6 +4076,B,17.00,0.00,0.00,Female,0,Baseline,0 +4077,A,26.00,6.00,1.00,Male,1,Baseline,6 +4078,A,28.00,0.00,0.00,Male,0,Baseline,0 +4080,C,18.00,0.00,0.00,Female,0,Baseline,0 +4081,C,20.00,1.00,13.0,Male,1,Baseline,13 +4083,A,46.00,0.00,0.00,Male,0,Baseline,0 +4084,A,20.00,0.00,0.00,Male,0,Baseline,0 +4085,A,18.00,3.00,3.00,Female,1,Baseline,9 +4086,B,49.00,0.00,0.00,Male,0,Baseline,0 +4087,B,21.00,0.00,0.00,Female,0,Baseline,0 +4089,A,22.00,4.00,3.00,Male,1,Baseline,12 +4090,A,25.00,10.0,2.00,Male,1,Baseline,20 +4091,B,21.00,2.00,3.00,Female,1,Baseline,6 +4092,A,19.00,10.0,7.00,Female,1,Baseline,70 +4093,A,21.00,4.00,6.00,Female,1,Baseline,24 +4095,B,18.00,7.00,1.00,Female,1,Baseline,7 +4096,B,24.00,7.00,10.0,Male,1,Baseline,70 +4097,C,22.00,6.00,2.00,Male,1,Baseline,12 +4098,C,32.00,4.00,1.00,Male,1,Baseline,4 +4099,A,21.00,5.00,1.00,Female,1,Baseline,5 +4100,C,20.00,8.00,5.00,Female,1,Baseline,40 +4101,B,22.00,5.00,2.00,Female,1,Baseline,10 +4102,B,20.00,8.00,5.00,Female,1,Baseline,40 +4103,C,38.00,0.00,0.00,Female,0,Baseline,0 +4104,B,25.00,4.00,10.0,Female,1,Baseline,40 +4105,B,35.00,2.00,5.00,Male,1,Baseline,10 +4106,B,21.00,0.00,0.00,Male,0,Baseline,0 +4107,B,49.00,1.00,3.00,Male,1,Baseline,3 +4108,B,20.00,4.00,3.00,Female,1,Baseline,12 +4109,A,23.00,15.0,2.00,Female,1,Baseline,30 +4110,B,19.00,12.0,5.00,Male,1,Baseline,60 +4111,A,21.00,4.00,6.00,Male,1,Baseline,24 +4113,B,23.00,6.00,8.00,Male,1,Baseline,48 +4114,C,40.00,4.00,2.00,Female,1,Baseline,8 +4115,A,24.00,0.00,0.00,Female,0,Baseline,0 +4116,C,27.00,0.00,0.00,Female,0,Baseline,0 +4117,A,43.00,0.00,0.00,Male,0,Baseline,0 +4118,C,26.00,0.00,0.00,Female,0,Baseline,0 +4119,B,22.00,2.00,2.00,Female,1,Baseline,4 +4120,C,24.00,1.00,1.00,Female,1,Baseline,1 +4121,A,25.00,2.00,1.00,Male,1,Baseline,2 +4123,A,19.00,2.00,7.00,Female,1,Baseline,14 +4124,A,21.00,2.00,4.00,Female,1,Baseline,8 +4125,A,24.00,2.00,8.00,Male,1,Baseline,16 +4126,C,21.00,2.00,1.00,Female,1,Baseline,2 +4127,B,20.00,4.00,4.00,Female,1,Baseline,16 +4130,A,19.00,8.00,6.00,Female,1,Baseline,48 +4131,B,22.00,1.00,2.00,Male,1,Baseline,2 +4132,C,20.00,4.00,1.00,Male,1,Baseline,4 +4133,A,20.00,14.0,1.00,Male,1,Baseline,14 +4134,A,19.00,1.00,7.00,Male,1,Baseline,7 +4135,A,26.00,0.00,0.00,Male,0,Baseline,0 +4136,A,48.00,20.0,2.00,Female,1,Baseline,40 +4137,C,22.00,2.00,1.00,Female,1,Baseline,2 +4139,C,21.00,2.00,1.00,Female,1,Baseline,2 +4140,B,39.00,10.0,1.00,Female,1,Baseline,10 +4141,A,21.00,5.00,1.00,Male,1,Baseline,5 +4142,C,21.00,12.0,6.00,Male,1,Baseline,72 +4143,C,36.00,4.00,1.00,Female,1,Baseline,4 +4145,C,19.00,0.00,0.00,Female,0,Baseline,0 +4146,B,21.00,1.00,13.0,Female,1,Baseline,13 +4147,A,21.00,5.00,2.00,Female,1,Baseline,10 +4148,A,21.00,3.00,1.00,Female,1,Baseline,3 +4149,B,23.00,9.00,8.00,Male,1,Baseline,72 +4151,B,37.00,6.00,2.00,Male,1,Baseline,12 +4152,B,20.00,3.00,2.00,Female,1,Baseline,6 +4153,C,24.00,7.00,10.0,Male,1,Baseline,70 +4154,C,23.00,4.00,3.00,Female,1,Baseline,12 +4155,C,19.00,0.00,0.00,Male,0,Baseline,0 +4156,B,19.00,5.00,2.00,Female,1,Baseline,10 +4157,B,22.00,12.0,1.00,Male,1,Baseline,12 +4158,A,21.00,1.00,1.00,Female,1,Baseline,1 +4160,C,23.00,8.00,12.0,Female,1,Baseline,96 +4161,B,33.00,2.00,1.00,Male,1,Baseline,2 +4162,A,25.00,21.0,15.0,Male,1,Baseline,315 +4163,B,21.00,4.00,3.00,Male,1,Baseline,12 +4164,A,22.00,0.00,0.00,Male,0,Baseline,0 +4165,A,24.00,12.0,2.00,Female,1,Baseline,24 +4166,C,21.00,6.00,2.00,Female,1,Baseline,12 +4167,B,31.00,0.00,0.00,Female,0,Baseline,0 +4169,C,33.00,10.0,2.00,Male,1,Baseline,20 +4170,C,20.00,8.00,3.00,Female,1,Baseline,24 +4172,A,22.00,8.00,2.00,Female,1,Baseline,16 +4173,B,19.00,3.00,4.00,Female,1,Baseline,12 +4174,A,24.00,28.0,2.00,Male,1,Baseline,56 +4175,B,25.00,16.0,2.00,Male,1,Baseline,32 +4176,A,20.00,2.00,1.00,Female,1,Baseline,2 +4177,C,22.00,0.00,0.00,Male,0,Baseline,0 +4178,B,35.00,8.00,1.00,Female,1,Baseline,8 +4179,A,21.00,5.00,6.00,Female,1,Baseline,30 +4180,C,19.00,5.00,3.00,Female,1,Baseline,15 +4181,C,22.00,3.00,9.00,Male,1,Baseline,27 +4182,A,20.00,1.00,2.00,Male,1,Baseline,2 +4183,C,20.00,0.00,0.00,Male,0,Baseline,0 +4184,A,54.00,0.00,0.00,Female,0,Baseline,0 +4185,A,20.00,0.00,0.00,Female,0,Baseline,0 +4186,B,21.00,7.00,15.0,Male,1,Baseline,105 +4187,B,21.00,4.00,5.00,Female,1,Baseline,20 +4188,A,25.00,4.00,2.00,Female,1,Baseline,8 +4189,B,43.00,2.00,2.00,Male,1,Baseline,4 +4190,C,25.00,0.00,0.00,Male,0,Baseline,0 +4191,B,22.00,4.00,2.00,Male,1,Baseline,8 +4192,A,21.00,3.00,2.00,Female,1,Baseline,6 +4193,A,20.00,4.00,7.00,Female,1,Baseline,28 +4194,A,41.00,1.00,1.00,Male,1,Baseline,1 +4195,B,24.00,5.00,6.00,Male,1,Baseline,30 +4196,C,20.00,6.00,14.0,Male,1,Baseline,84 +4197,A,34.00,0.00,0.00,Male,0,Baseline,0 +4199,A,19.00,3.00,2.00,Male,1,Baseline,6 +4200,A,42.00,4.00,5.00,Female,1,Baseline,20 +4201,B,18.00,7.00,12.0,Male,1,Baseline,84 +4202,A,33.00,0.00,0.00,Female,0,Baseline,0 +4203,B,30.00,2.00,10.0,Male,1,Baseline,20 +4204,B,35.00,20.0,3.00,Female,1,Baseline,60 +4205,A,22.00,0.00,0.00,Male,0,Baseline,0 +4206,B,27.00,3.00,3.00,Male,1,Baseline,9 +4207,A,18.00,2.00,4.00,Female,1,Baseline,8 +4209,B,20.00,5.00,2.00,Female,1,Baseline,10 +4210,A,22.00,0.00,0.00,Male,0,Baseline,0 +4211,C,24.00,0.00,0.00,Male,0,Baseline,0 +4212,A,21.00,12.0,3.00,Female,1,Baseline,36 +4213,C,21.00,8.00,7.00,Male,1,Baseline,56 +4216,B,23.00,3.00,2.00,Female,1,Baseline,6 +4217,B,22.00,6.00,4.00,Male,1,Baseline,24 +4219,A,20.00,8.00,10.0,Male,1,Baseline,80 +4220,B,39.00,7.00,2.00,Female,1,Baseline,14 +4221,B,21.00,3.00,5.00,Female,1,Baseline,15 +4222,A,21.00,4.00,4.00,Female,1,Baseline,16 +4223,A,20.00,3.00,7.00,Female,1,Baseline,21 +4224,A,36.00,0.00,0.00,Female,0,Baseline,0 +4225,C,40.00,0.00,0.00,Male,0,Baseline,0 +4226,B,39.00,10.0,1.00,Female,1,Baseline,10 +4227,A,22.00,21.0,2.00,Female,1,Baseline,42 +4228,C,22.00,4.00,3.00,Female,1,Baseline,12 +4229,A,21.00,8.00,2.00,Female,1,Baseline,16 +4230,A,22.00,5.00,6.00,Male,1,Baseline,30 +4231,B,20.00,2.00,2.00,Female,1,Baseline,4 +4232,A,20.00,0.00,0.00,Male,0,Baseline,0 +4233,B,21.00,3.00,1.00,Male,1,Baseline,3 +4234,B,29.00,0.00,0.00,Male,0,Baseline,0 +4235,B,22.00,5.00,6.00,Male,1,Baseline,30 +4236,B,18.00,1.00,12.0,Male,1,Baseline,12 +4237,A,22.00,3.00,1.00,Female,1,Baseline,3 +4238,C,21.00,0.00,0.00,Female,0,Baseline,0 +4239,A,22.00,6.00,6.00,Male,1,Baseline,36 +4240,C,19.00,2.00,2.00,Female,1,Baseline,4 +4241,C,22.00,1.00,13.0,Male,1,Baseline,13 +4242,B,42.00,16.0,1.00,Female,1,Baseline,16 +4243,A,23.00,3.00,12.0,Male,1,Baseline,36 +4244,B,22.00,5.00,3.00,Male,1,Baseline,15 +4245,A,21.00,5.00,11.0,Female,1,Baseline,55 +4246,A,19.00,4.00,6.00,Male,1,Baseline,24 +4247,C,18.00,1.00,1.00,Female,1,Baseline,1 +4249,A,41.00,7.00,4.00,Female,1,Baseline,28 +4250,A,22.00,5.00,6.00,Male,1,Baseline,30 +4252,C,27.00,2.00,3.00,Female,1,Baseline,6 +4253,B,31.00,2.00,6.00,Male,1,Baseline,12 +4254,A,20.00,1.00,1.00,Female,1,Baseline,1 +4255,B,21.00,2.00,2.00,Female,1,Baseline,4 +4256,C,20.00,1.00,1.00,Female,1,Baseline,1 +4257,B,18.00,0.00,0.00,Female,0,Baseline,0 +4258,A,22.00,9.00,4.00,Male,1,Baseline,36 +4259,B,20.00,3.00,3.00,Female,1,Baseline,9 +4260,B,23.00,8.00,2.00,Male,1,Baseline,16 +4261,A,19.00,3.00,3.00,Female,1,Baseline,9 +4262,A,18.00,6.00,5.00,Female,1,Baseline,30 +4263,A,21.00,5.00,5.00,Female,1,Baseline,25 +4264,A,29.00,6.00,2.00,Female,1,Baseline,12 +4265,B,21.00,2.00,1.00,Female,1,Baseline,2 +4266,C,20.00,1.00,4.00,Female,1,Baseline,4 +4267,B,18.00,0.00,0.00,Male,0,Baseline,0 +4268,A,20.00,3.00,4.00,Female,1,Baseline,12 +4269,B,26.00,3.00,4.00,Female,1,Baseline,12 +4270,C,20.00,14.0,4.00,Male,1,Baseline,56 +4271,B,19.00,0.00,0.00,Male,0,Baseline,0 +4272,A,25.00,6.00,2.00,Female,1,Baseline,12 +4273,A,21.00,8.00,5.00,Female,1,Baseline,40 +4274,B,22.00,7.00,1.00,Male,1,Baseline,7 +4275,C,21.00,6.00,5.00,Female,1,Baseline,30 +4276,C,49.00,1.00,2.00,Female,1,Baseline,2 +4277,C,26.00,6.00,2.00,Male,1,Baseline,12 +4278,B,24.00,5.00,1.00,Female,1,Baseline,5 +4280,B,22.00,3.00,2.00,Female,1,Baseline,6 +4282,B,32.00,8.00,1.00,Male,1,Baseline,8 +4283,B,21.00,2.00,7.00,Female,1,Baseline,14 +4284,B,21.00,4.00,6.00,Female,1,Baseline,24 +4285,C,20.00,2.00,1.00,Male,1,Baseline,2 +4286,B,37.00,6.00,1.00,Female,1,Baseline,6 +4287,A,30.00,1.00,1.00,Male,1,Baseline,1 +4288,B,54.00,2.00,2.00,Female,1,Baseline,4 +4289,C,48.00,25.0,1.00,Male,1,Baseline,25 +4290,B,21.00,2.00,7.00,Female,1,Baseline,14 +4291,B,22.00,6.00,8.00,Male,1,Baseline,48 +4292,A,20.00,4.00,18.0,Male,1,Baseline,72 +4293,B,21.00,6.00,3.00,Female,1,Baseline,18 +4294,A,22.00,3.00,1.00,Female,1,Baseline,3 +4295,A,23.00,4.00,10.0,Male,1,Baseline,40 +4296,A,30.00,2.00,1.00,Female,1,Baseline,2 +4297,B,43.00,4.00,1.00,Female,1,Baseline,4 +4298,C,20.00,7.00,11.0,Male,1,Baseline,77 +4299,C,21.00,4.00,4.00,Female,1,Baseline,16 +4300,A,22.00,3.00,4.00,Male,1,Baseline,12 +4301,A,19.00,6.00,5.00,Female,1,Baseline,30 +4302,C,18.00,4.00,5.00,Female,1,Baseline,20 +4304,A,32.00,5.00,2.00,Female,1,Baseline,10 +4305,C,19.00,0.00,0.00,Female,0,Baseline,0 +4306,A,31.00,0.00,0.00,Female,0,Baseline,0 +4307,C,19.00,0.00,0.00,Female,0,Baseline,0 +4308,A,25.00,4.00,2.00,Female,1,Baseline,8 +4309,B,41.00,7.00,1.00,Male,1,Baseline,7 +4310,B,21.00,6.00,7.00,Female,1,Baseline,42 +4311,A,20.00,4.00,3.00,Male,1,Baseline,12 +4312,C,28.00,1.00,5.00,Female,1,Baseline,5 +4313,A,22.00,5.00,2.00,Female,1,Baseline,10 +4314,B,23.00,4.00,2.00,Male,1,Baseline,8 +4315,C,21.00,2.00,4.00,Female,1,Baseline,8 +4316,A,19.00,2.00,2.00,Female,1,Baseline,4 +4317,B,34.00,5.00,1.00,Male,1,Baseline,5 +4318,A,21.00,8.00,5.00,Female,1,Baseline,40 +4320,B,39.00,15.0,3.00,Female,1,Baseline,45 +4321,A,19.00,2.00,2.00,Male,1,Baseline,4 +4322,B,24.00,10.0,1.00,Female,1,Baseline,10 +4323,A,21.00,6.00,6.00,Female,1,Baseline,36 +4324,C,21.00,2.00,4.00,Female,1,Baseline,8 +4325,B,20.00,2.00,2.00,Female,1,Baseline,4 +4326,B,20.00,0.00,0.00,Female,0,Baseline,0 +4327,C,18.00,8.00,10.0,Male,1,Baseline,80 +4328,B,21.00,8.00,1.00,Female,1,Baseline,8 +4329,A,24.00,1.00,4.00,Female,1,Baseline,4 +4330,B,32.00,0.00,0.00,Male,0,Baseline,0 +4331,A,19.00,0.00,0.00,Female,0,Baseline,0 +4332,A,21.00,12.0,2.00,Male,1,Baseline,24 +4333,A,22.00,0.00,0.00,Female,0,Baseline,0 +4334,A,18.00,0.00,0.00,Male,0,Baseline,0 +4335,C,53.00,0.00,0.00,Female,0,Baseline,0 +4336,C,23.00,3.00,3.00,Male,1,Baseline,9 +4337,C,46.00,12.0,3.00,Female,1,Baseline,36 +4338,C,21.00,9.00,20.0,Male,1,Baseline,180 +4339,B,28.00,12.0,2.00,Female,1,Baseline,24 +4341,C,22.00,0.00,0.00,Female,0,Baseline,0 +4342,B,39.00,7.00,2.00,Male,1,Baseline,14 +4343,C,32.00,2.00,3.00,Female,1,Baseline,6 +4344,A,22.00,0.00,0.00,Female,0,Baseline,0 +4345,B,20.00,2.00,2.00,Female,1,Baseline,4 +4346,B,24.00,9.00,3.00,Female,1,Baseline,27 +4348,A,19.00,0.00,0.00,Female,0,Baseline,0 +4349,A,46.00,27.0,4.00,Male,1,Baseline,108 +4350,A,20.00,7.00,1.00,Female,1,Baseline,7 +4351,B,21.00,0.00,0.00,Female,0,Baseline,0 +4352,A,17.00,1.00,1.00,Male,1,Baseline,1 +4353,B,19.00,2.00,5.00,Male,1,Baseline,10 +4354,B,58.00,8.00,6.00,Male,1,Baseline,48 +4355,C,19.00,2.00,2.00,Female,1,Baseline,4 +4356,B,20.00,0.00,0.00,Male,0,Baseline,0 +4357,C,26.00,2.00,2.00,Female,1,Baseline,4 +4358,C,25.00,5.00,2.00,Female,1,Baseline,10 +4359,C,19.00,4.00,5.00,Female,1,Baseline,20 +4360,B,20.00,6.00,5.00,Female,1,Baseline,30 +4361,A,22.00,15.0,2.00,Female,1,Baseline,30 +4362,C,21.00,0.00,0.00,Male,0,Baseline,0 +4363,B,26.00,3.00,1.00,Male,1,Baseline,3 +4364,C,21.00,0.00,0.00,Male,0,Baseline,0 +4365,B,22.00,4.00,5.00,Female,1,Baseline,20 +4366,A,18.00,0.00,0.00,Male,0,Baseline,0 +4367,B,20.00,4.00,5.00,Female,1,Baseline,20 +4368,C,24.00,12.0,1.00,Male,1,Baseline,12 +4369,B,29.00,0.00,0.00,Female,0,Baseline,0 +4370,B,21.00,3.00,1.00,Female,1,Baseline,3 +4371,B,56.00,10.0,2.00,Female,1,Baseline,20 +4372,B,23.00,4.00,2.00,Male,1,Baseline,8 +4374,B,22.00,10.0,3.00,Male,1,Baseline,30 +4375,A,18.00,0.00,0.00,Female,0,Baseline,0 +4376,C,21.00,7.00,8.00,Female,1,Baseline,56 +4378,B,20.00,10.0,10.0,Male,1,Baseline,100 +4379,A,22.00,10.0,8.00,Female,1,Baseline,80 +4381,C,19.00,0.00,0.00,Female,0,Baseline,0 +4382,A,21.00,0.00,0.00,Female,0,Baseline,0 +4383,B,21.00,0.00,0.00,Male,0,Baseline,0 +4384,B,22.00,3.00,1.00,Female,1,Baseline,3 +4385,B,21.00,8.00,4.00,Female,1,Baseline,32 +4386,C,22.00,0.00,0.00,Female,0,Baseline,0 +4387,A,19.00,4.00,6.00,Male,1,Baseline,24 +4388,A,20.00,12.0,10.0,Male,1,Baseline,120 +4389,B,23.00,2.00,1.00,Male,1,Baseline,2 +4390,A,22.00,1.00,6.00,Male,1,Baseline,6 +4391,B,20.00,4.00,10.0,Female,1,Baseline,40 +4392,B,18.00,0.00,0.00,Female,0,Baseline,0 +4393,B,22.00,1.00,1.00,Male,1,Baseline,1 +4394,B,25.00,2.00,4.00,Female,1,Baseline,8 +4395,C,20.00,2.00,3.00,Female,1,Baseline,6 +4396,A,21.00,8.00,5.00,Female,1,Baseline,40 +4397,B,21.00,4.00,8.00,Female,1,Baseline,32 +4398,C,18.00,8.00,1.00,Male,1,Baseline,8 +4399,B,19.00,0.00,0.00,Female,0,Baseline,0 +4400,A,18.00,0.00,0.00,Male,0,Baseline,0 +4402,C,21.00,1.00,1.00,Female,1,Baseline,1 +4404,B,20.00,0.00,0.00,Male,0,Baseline,0 +4406,C,27.00,0.00,0.00,Male,0,Baseline,0 +4407,C,22.00,7.00,16.0,Male,1,Baseline,112 +4408,B,21.00,1.00,12.0,Male,1,Baseline,12 +4409,B,45.00,0.00,0.00,Female,0,Baseline,0 +4410,A,21.00,3.00,2.00,Female,1,Baseline,6 +4411,A,21.00,4.00,6.00,Female,1,Baseline,24 +4412,C,44.00,20.0,2.00,Female,1,Baseline,40 +4413,C,20.00,0.00,0.00,Female,0,Baseline,0 +4414,B,20.00,14.0,12.0,Male,1,Baseline,168 +4415,B,20.00,8.00,26.0,Male,1,Baseline,208 +4416,B,21.00,12.0,2.00,Male,1,Baseline,24 +4417,C,19.00,4.00,2.00,Female,1,Baseline,8 +4419,C,40.00,10.0,2.00,Female,1,Baseline,20 +4420,B,27.00,4.00,2.00,Female,1,Baseline,8 +4421,C,23.00,13.0,2.00,Female,1,Baseline,26 +4422,B,47.00,1.00,1.00,Female,1,Baseline,1 +4423,C,27.00,4.00,2.00,Female,1,Baseline,8 +4424,B,18.00,2.00,1.00,Female,1,Baseline,2 +4425,C,34.00,0.00,0.00,Female,0,Baseline,0 +4426,A,21.00,8.00,6.00,Female,1,Baseline,48 +4427,A,19.00,4.00,2.00,Male,1,Baseline,8 +4428,B,22.00,3.00,3.00,Female,1,Baseline,9 +4429,B,19.00,5.00,5.00,Male,1,Baseline,25 +4430,A,20.00,0.00,0.00,Female,0,Baseline,0 +4431,C,27.00,2.00,4.00,Male,1,Baseline,8 +4433,A,31.00,0.00,0.00,Female,0,Baseline,0 +4434,A,20.00,8.00,6.00,Female,1,Baseline,48 +4435,B,21.00,5.00,13.0,Male,1,Baseline,65 +4436,A,20.00,1.00,1.00,Female,1,Baseline,1 +4437,B,20.00,15.0,3.00,Male,1,Baseline,45 +4438,B,21.00,0.00,0.00,Female,0,Baseline,0 +4440,A,52.00,0.00,0.00,Female,0,Baseline,0 +4441,C,22.00,7.00,2.00,Male,1,Baseline,14 +4442,A,19.00,0.00,0.00,Female,0,Baseline,0 +4443,C,22.00,2.00,6.00,Male,1,Baseline,12 +4444,C,21.00,8.00,15.0,Male,1,Baseline,120 +4445,B,19.00,2.00,12.0,Female,1,Baseline,24 +4446,A,50.00,8.00,2.00,Female,1,Baseline,16 +4447,B,21.00,0.00,0.00,Male,0,Baseline,0 +4448,C,20.00,6.00,4.00,Male,1,Baseline,24 +4449,B,19.00,8.00,10.0,Female,1,Baseline,80 +4450,C,25.00,3.00,6.00,Female,1,Baseline,18 +4451,C,34.00,2.00,1.00,Male,1,Baseline,2 +4452,A,19.00,3.00,3.00,Female,1,Baseline,9 +4453,B,19.00,1.00,2.00,Male,1,Baseline,2 +4455,A,20.00,0.00,0.00,Male,0,Baseline,0 +4456,A,22.00,5.00,14.0,Male,1,Baseline,70 +4458,B,22.00,5.00,4.00,Female,1,Baseline,20 +4459,A,18.00,5.00,6.00,Female,1,Baseline,30 +4460,B,21.00,16.0,3.00,Female,1,Baseline,48 +4461,A,42.00,1.00,1.00,Male,1,Baseline,1 +4462,C,22.00,1.00,1.00,Male,1,Baseline,1 +4463,A,18.00,3.00,3.00,Female,1,Baseline,9 +4464,A,20.00,20.0,2.00,Female,1,Baseline,40 +4465,B,21.00,8.00,15.0,Male,1,Baseline,120 +4466,B,26.00,15.0,2.00,Female,1,Baseline,30 +4467,B,20.00,6.00,15.0,Male,1,Baseline,90 +4468,A,30.00,6.00,2.00,Female,1,Baseline,12 +4469,A,22.00,12.0,5.00,Male,1,Baseline,60 +4470,B,22.00,4.00,10.0,Male,1,Baseline,40 +4472,B,21.00,1.00,1.00,Female,1,Baseline,1 +4473,C,43.00,2.00,1.00,Female,1,Baseline,2 +4474,A,21.00,6.00,2.00,Female,1,Baseline,12 +4475,A,24.00,0.00,0.00,Male,0,Baseline,0 +4476,A,20.00,8.00,14.0,Female,1,Baseline,112 +4478,A,24.00,3.00,1.00,Female,1,Baseline,3 +4479,A,28.00,8.00,1.00,Female,1,Baseline,8 +4480,A,19.00,6.00,4.00,Female,1,Baseline,24 +4481,B,26.00,3.00,2.00,Male,1,Baseline,6 +4482,A,35.00,0.00,0.00,Female,0,Baseline,0 +4483,A,49.00,0.00,0.00,Female,0,Baseline,0 +4484,C,22.00,0.00,0.00,Female,0,Baseline,0 +4485,B,19.00,6.00,8.00,Female,1,Baseline,48 +4487,C,22.00,24.0,1.00,Male,1,Baseline,24 +4488,B,24.00,3.00,8.00,Male,1,Baseline,24 +4489,C,18.00,6.00,6.00,Female,1,Baseline,36 +4490,C,20.00,6.00,9.00,Male,1,Baseline,54 +4491,A,26.00,18.0,1.00,Male,1,Baseline,18 +4492,B,18.00,0.00,0.00,Male,0,Baseline,0 +4493,C,18.00,4.00,2.00,Female,1,Baseline,8 +4494,A,23.00,2.00,1.00,Female,1,Baseline,2 +4496,B,23.00,2.00,1.00,Female,1,Baseline,2 +4498,B,20.00,8.00,4.00,Female,1,Baseline,32 +4499,C,27.00,3.00,3.00,Female,1,Baseline,9 +4500,A,20.00,6.00,4.00,Male,1,Baseline,24 +4501,B,18.00,2.00,6.00,Female,1,Baseline,12 +4502,B,19.00,1.00,5.00,Male,1,Baseline,5 +4503,B,19.00,0.00,0.00,Female,0,Baseline,0 +4504,A,23.00,9.00,1.00,Female,1,Baseline,9 +4505,C,45.00,2.00,3.00,Male,1,Baseline,6 +4506,B,19.00,0.00,0.00,Female,0,Baseline,0 +4507,A,38.00,12.0,1.00,Female,1,Baseline,12 +4508,A,22.00,2.00,1.00,Female,1,Baseline,2 +4509,C,21.00,0.00,0.00,Female,0,Baseline,0 +4510,B,23.00,8.00,13.0,Female,1,Baseline,104 +4511,A,20.00,4.00,4.00,Female,1,Baseline,16 +4512,A,21.00,6.00,6.00,Male,1,Baseline,36 +4513,C,22.00,4.00,6.00,Female,1,Baseline,24 +4514,A,21.00,2.00,1.00,Female,1,Baseline,2 +4515,B,20.00,20.0,1.00,Male,1,Baseline,20 +4516,A,19.00,9.00,2.00,Female,1,Baseline,18 +4517,C,22.00,4.00,8.00,Male,1,Baseline,32 +4519,B,21.00,3.00,2.00,Female,1,Baseline,6 +4520,C,19.00,9.00,2.00,Male,1,Baseline,18 +4521,B,25.00,8.00,6.00,Male,1,Baseline,48 +4522,B,20.00,1.00,4.00,Female,1,Baseline,4 +4523,A,20.00,0.00,0.00,Female,0,Baseline,0 +4524,B,20.00,2.00,2.00,Female,1,Baseline,4 +4525,B,18.00,1.00,1.00,Female,1,Baseline,1 +4527,A,18.00,8.00,5.00,Male,1,Baseline,40 +4528,A,21.00,15.0,2.00,Male,1,Baseline,30 +4529,B,19.00,2.00,2.00,Female,1,Baseline,4 +4530,A,20.00,5.00,8.00,Male,1,Baseline,40 +4531,A,19.00,1.00,10.0,Male,1,Baseline,10 +4532,C,41.00,3.00,2.00,Female,1,Baseline,6 +4533,A,20.00,5.00,8.00,Male,1,Baseline,40 +4534,B,20.00,3.00,2.00,Female,1,Baseline,6 +4535,A,21.00,3.00,3.00,Female,1,Baseline,9 +4536,B,20.00,10.0,2.00,Male,1,Baseline,20 +4537,A,23.00,7.00,5.00,Male,1,Baseline,35 +4538,B,21.00,2.00,3.00,Female,1,Baseline,6 +4539,C,22.00,1.00,1.00,Female,1,Baseline,1 +4540,C,19.00,1.00,2.00,Female,1,Baseline,2 +4541,C,54.00,8.00,1.00,Female,1,Baseline,8 +4542,A,23.00,1.00,3.00,Female,1,Baseline,3 +4543,C,25.00,3.00,9.00,Male,1,Baseline,27 +4544,B,22.00,14.0,4.00,Female,1,Baseline,56 +4545,B,38.00,6.00,1.00,Male,1,Baseline,6 +4546,B,22.00,6.00,2.00,Female,1,Baseline,12 +4547,C,19.00,0.00,0.00,Male,0,Baseline,0 +4549,A,21.00,4.00,8.00,Male,1,Baseline,32 +4550,C,22.00,6.00,3.00,Female,1,Baseline,18 +4551,C,18.00,3.00,8.00,Female,1,Baseline,24 +4552,B,21.00,3.00,2.00,Male,1,Baseline,6 +4553,B,21.00,0.00,0.00,Female,0,Baseline,0 +4554,C,19.00,3.00,2.00,Male,1,Baseline,6 +4555,C,19.00,1.00,2.00,Female,1,Baseline,2 +4556,A,23.00,4.00,2.00,Female,1,Baseline,8 +4557,C,22.00,1.00,1.00,Female,1,Baseline,1 +4558,B,23.00,0.00,0.00,Female,0,Baseline,0 +4559,B,22.00,14.0,2.00,Male,1,Baseline,28 +4560,A,23.00,12.0,8.00,Male,1,Baseline,96 +4561,A,21.00,6.00,8.00,Male,1,Baseline,48 +4562,C,18.00,4.00,3.00,Female,1,Baseline,12 +4563,C,19.00,4.00,14.0,Male,1,Baseline,56 +4565,A,18.00,0.00,0.00,Female,0,Baseline,0 +4567,A,52.00,0.00,0.00,Male,0,Baseline,0 +4568,A,23.00,28.0,10.0,Male,1,Baseline,280 +4569,C,21.00,8.00,20.0,Male,1,Baseline,160 +4570,A,18.00,0.00,0.00,Female,0,Baseline,0 +4571,C,27.00,0.00,0.00,Female,0,Baseline,0 +4572,C,21.00,7.00,3.00,Female,1,Baseline,21 +4573,B,32.00,0.00,0.00,Female,0,Baseline,0 +4574,B,23.00,7.00,2.00,Female,1,Baseline,14 +4575,A,21.00,0.00,0.00,Female,0,Baseline,0 +4576,A,27.00,5.00,3.00,Male,1,Baseline,15 +4577,C,20.00,2.00,4.00,Male,1,Baseline,8 +4578,B,23.00,2.00,2.00,Male,1,Baseline,4 +4579,B,24.00,0.00,0.00,Female,0,Baseline,0 +4580,A,19.00,0.00,0.00,Female,0,Baseline,0 +4581,C,19.00,0.00,0.00,Male,0,Baseline,0 +4582,A,21.00,4.00,3.00,Female,1,Baseline,12 +4583,B,33.00,3.00,1.00,Female,1,Baseline,3 +4584,A,23.00,5.00,1.00,Female,1,Baseline,5 +4585,B,18.00,18.0,2.00,Female,1,Baseline,36 +4586,B,23.00,5.00,4.00,Female,1,Baseline,20 +4587,B,18.00,0.00,0.00,Female,0,Baseline,0 +4588,B,20.00,2.00,12.0,Male,1,Baseline,24 +4589,C,22.00,0.00,0.00,Male,0,Baseline,0 +4590,C,21.00,1.00,1.00,Female,1,Baseline,1 +4591,B,21.00,0.00,0.00,Male,0,Baseline,0 +4592,B,24.00,1.00,15.0,Male,1,Baseline,15 +4593,A,20.00,0.00,0.00,Female,0,Baseline,0 +4594,C,22.00,2.00,2.00,Female,1,Baseline,4 +4595,C,18.00,0.00,0.00,Female,0,Baseline,0 +4596,C,18.00,5.00,2.00,Male,1,Baseline,10 +4597,A,20.00,11.0,5.00,Female,1,Baseline,55 +4598,C,20.00,5.00,5.00,Male,1,Baseline,25 +4599,B,19.00,1.00,10.0,Male,1,Baseline,10 +4601,B,21.00,0.00,0.00,Male,0,Baseline,0 +4602,A,22.00,0.00,0.00,Female,0,Baseline,0 +4603,C,20.00,3.00,5.00,Male,1,Baseline,15 +4604,C,21.00,1.00,1.00,Female,1,Baseline,1 +4605,A,24.00,7.00,6.00,Male,1,Baseline,42 +4606,A,19.00,3.00,4.00,Female,1,Baseline,12 +4607,A,20.00,10.0,2.00,Female,1,Baseline,20 +4608,B,23.00,6.00,12.0,Male,1,Baseline,72 +4609,C,19.00,4.00,1.00,Male,1,Baseline,4 +4611,C,31.00,1.00,2.00,Male,1,Baseline,2 +4612,C,25.00,8.00,2.00,Male,1,Baseline,16 +4613,B,21.00,1.00,1.00,Female,1,Baseline,1 +4614,A,25.00,1.00,4.00,Male,1,Baseline,4 +4616,A,17.00,3.00,1.00,Male,1,Baseline,3 +4617,A,46.00,8.00,3.00,Female,1,Baseline,24 +4619,C,56.00,4.00,1.00,Female,1,Baseline,4 +4620,A,20.00,20.0,1.00,Female,1,Baseline,20 +4622,A,21.00,3.00,4.00,Female,1,Baseline,12 +4624,C,22.00,8.00,4.00,Male,1,Baseline,32 +4625,B,20.00,7.00,5.00,Female,1,Baseline,35 +4626,B,20.00,1.00,2.00,Male,1,Baseline,2 +4627,A,31.00,5.00,1.00,Male,1,Baseline,5 +4629,A,20.00,4.00,5.00,Female,1,Baseline,20 +4630,B,20.00,5.00,1.00,Female,1,Baseline,5 +4631,C,21.00,8.00,2.00,Female,1,Baseline,16 +4632,B,36.00,7.00,2.00,Female,1,Baseline,14 +4633,C,20.00,0.00,0.00,Male,0,Baseline,0 +4634,A,21.00,5.00,5.00,Female,1,Baseline,25 +4635,C,44.00,10.0,1.00,Female,1,Baseline,10 +4636,C,23.00,0.00,0.00,Female,0,Baseline,0 +4637,A,22.00,0.00,0.00,Female,0,Baseline,0 +4638,A,18.00,3.00,2.00,Male,1,Baseline,6 +4639,B,22.00,4.00,4.00,Female,1,Baseline,16 +4640,C,21.00,1.00,15.0,Male,1,Baseline,15 +4641,A,18.00,0.00,0.00,Male,0,Baseline,0 +4642,C,24.00,0.00,0.00,Male,0,Baseline,0 +4643,B,21.00,6.00,5.00,Female,1,Baseline,30 +4644,C,22.00,7.00,10.0,Male,1,Baseline,70 +4645,C,20.00,2.00,3.00,Female,1,Baseline,6 +4646,B,21.00,4.00,10.0,Male,1,Baseline,40 +4647,B,20.00,3.00,2.00,Female,1,Baseline,6 +4648,C,22.00,0.00,0.00,Female,0,Baseline,0 +4649,C,51.00,4.00,1.00,Female,1,Baseline,4 +4650,B,19.00,2.00,4.00,Female,1,Baseline,8 +4651,B,24.00,3.00,3.00,Female,1,Baseline,9 +4652,A,20.00,5.00,9.00,Male,1,Baseline,45 +4653,C,20.00,1.00,3.00,Male,1,Baseline,3 +4655,C,19.00,4.00,7.00,Female,1,Baseline,28 +4656,C,49.00,20.0,1.00,Male,1,Baseline,20 +4657,C,22.00,6.00,2.00,Female,1,Baseline,12 +4658,B,20.00,4.00,3.00,Female,1,Baseline,12 +4660,B,20.00,7.00,1.00,Female,1,Baseline,7 +4661,B,19.00,4.00,2.00,Female,1,Baseline,8 +4662,C,19.00,8.00,7.00,Male,1,Baseline,56 +4663,C,20.00,4.00,3.00,Male,1,Baseline,12 +4664,A,21.00,21.0,3.00,Female,1,Baseline,63 +4665,A,21.00,0.00,0.00,Male,0,Baseline,0 +4667,B,50.00,2.00,1.00,Female,1,Baseline,2 +4669,A,21.00,4.00,6.00,Female,1,Baseline,24 +4670,A,19.00,7.00,6.00,Female,1,Baseline,42 +4672,A,18.00,5.00,1.00,Female,1,Baseline,5 +4673,B,22.00,3.00,4.00,Female,1,Baseline,12 +4674,C,33.00,1.00,4.00,Male,1,Baseline,4 +4675,B,22.00,4.00,4.00,Male,1,Baseline,16 +4676,B,19.00,6.00,2.00,Male,1,Baseline,12 +4677,C,20.00,0.00,0.00,Female,0,Baseline,0 +4678,C,20.00,1.00,1.00,Female,1,Baseline,1 +4679,C,19.00,8.00,4.00,Male,1,Baseline,32 +4680,A,21.00,2.00,6.00,Female,1,Baseline,12 +4681,B,23.00,4.00,1.00,Female,1,Baseline,4 +4682,B,21.00,2.00,4.00,Female,1,Baseline,8 +4683,B,19.00,4.00,8.00,Female,1,Baseline,32 +4684,C,20.00,8.00,15.0,Male,1,Baseline,120 +4685,B,27.00,6.00,3.00,Female,1,Baseline,18 +4687,C,19.00,3.00,2.00,Male,1,Baseline,6 +4688,B,27.00,3.00,1.00,Female,1,Baseline,3 +4689,C,19.00,9.00,3.00,Male,1,Baseline,27 +4691,C,26.00,3.00,2.00,Female,1,Baseline,6 +4692,A,37.00,20.0,2.00,Female,1,Baseline,40 +4693,C,20.00,5.00,3.00,Female,1,Baseline,15 +4694,B,37.00,3.00,4.00,Male,1,Baseline,12 +4695,C,21.00,3.00,6.00,Male,1,Baseline,18 +4696,B,59.00,8.00,2.00,Female,1,Baseline,16 +4698,C,19.00,8.00,12.0,Male,1,Baseline,96 +4699,B,21.00,5.00,3.00,Male,1,Baseline,15 +4700,C,18.00,0.00,0.00,Male,0,Baseline,0 +4701,A,19.00,4.00,1.00,Female,1,Baseline,4 +4702,C,24.00,2.00,1.00,Male,1,Baseline,2 +4703,B,19.00,8.00,1.00,Male,1,Baseline,8 +4704,B,24.00,8.00,3.00,Female,1,Baseline,24 +4705,B,18.00,0.00,0.00,Male,0,Baseline,0 +4706,B,20.00,1.00,4.00,Male,1,Baseline,4 +4707,A,21.00,1.00,2.00,Female,1,Baseline,2 +4708,C,21.00,11.0,7.00,Female,1,Baseline,77 +4709,A,21.00,9.00,15.0,Male,1,Baseline,135 +4710,A,24.00,8.00,2.00,Female,1,Baseline,16 +4711,C,26.00,2.00,2.00,Female,1,Baseline,4 +4712,B,22.00,9.00,6.00,Female,1,Baseline,54 +4713,B,19.00,6.00,5.00,Female,1,Baseline,30 +4714,A,26.00,0.00,0.00,Male,0,Baseline,0 +4715,A,19.00,2.00,1.00,Female,1,Baseline,2 +4716,A,21.00,2.00,1.00,Female,1,Baseline,2 +4718,B,19.00,4.00,3.00,Female,1,Baseline,12 +4719,B,20.00,12.0,26.0,Male,1,Baseline,312 +4720,C,21.00,2.00,3.00,Female,1,Baseline,6 +4721,A,27.00,20.0,1.00,Female,1,Baseline,20 +4722,B,19.00,7.00,3.00,Female,1,Baseline,21 +4723,B,25.00,4.00,3.00,Male,1,Baseline,12 +4724,B,23.00,5.00,6.00,Male,1,Baseline,30 +4725,C,21.00,9.00,5.00,Female,1,Baseline,45 +4726,B,18.00,0.00,0.00,Male,0,Baseline,0 +4727,C,32.00,20.0,2.00,Male,1,Baseline,40 +4728,B,20.00,5.00,3.00,Female,1,Baseline,15 +4729,B,23.00,2.00,3.00,Male,1,Baseline,6 +4731,A,23.00,3.00,3.00,Male,1,Baseline,9 +4732,B,18.00,2.00,6.00,Female,1,Baseline,12 +4735,A,19.00,1.00,2.00,Male,1,Baseline,2 +4736,C,26.00,8.00,6.00,Male,1,Baseline,48 +4737,A,22.00,0.00,0.00,Male,0,Baseline,0 +4738,B,30.00,0.00,0.00,Female,0,Baseline,0 +4739,B,21.00,4.00,5.00,Female,1,Baseline,20 +4740,B,18.00,0.00,0.00,Male,0,Baseline,0 +4741,C,23.00,3.00,3.00,Female,1,Baseline,9 +4742,C,23.00,8.00,8.00,Female,1,Baseline,64 +4743,A,21.00,2.00,1.00,Male,1,Baseline,2 +4745,A,47.00,22.0,1.00,Female,1,Baseline,22 +4746,C,20.00,4.00,5.00,Female,1,Baseline,20 +4748,A,22.00,0.00,0.00,Female,0,Baseline,0 +4749,A,25.00,12.0,1.00,Male,1,Baseline,12 +4750,B,19.00,2.00,4.00,Female,1,Baseline,8 +4751,A,20.00,8.00,8.00,Female,1,Baseline,64 +4753,C,20.00,1.00,9.00,Female,1,Baseline,9 +4754,C,22.00,0.00,0.00,Female,0,Baseline,0 +4755,A,23.00,2.00,2.00,Female,1,Baseline,4 +4756,C,18.00,5.00,5.00,Male,1,Baseline,25 +4757,C,49.00,0.00,0.00,Female,0,Baseline,0 +4758,A,20.00,0.00,0.00,Female,0,Baseline,0 +4759,A,30.00,3.00,10.0,Male,1,Baseline,30 +4760,B,21.00,2.00,1.00,Female,1,Baseline,2 +4761,B,24.00,5.00,2.00,Female,1,Baseline,10 +4762,A,19.00,3.00,2.00,Female,1,Baseline,6 +4763,A,44.00,18.0,2.00,Female,1,Baseline,36 +4765,C,17.00,0.00,0.00,Female,0,Baseline,0 +4766,B,19.00,4.00,20.0,Male,1,Baseline,80 +4768,B,18.00,2.00,6.00,Female,1,Baseline,12 +4770,B,32.00,6.00,2.00,Male,1,Baseline,12 +4771,B,19.00,2.00,3.00,Female,1,Baseline,6 +4772,C,20.00,2.00,5.00,Female,1,Baseline,10 +4773,C,19.00,0.00,0.00,Female,0,Baseline,0 +4774,B,18.00,1.00,2.00,Female,1,Baseline,2 +4775,C,26.00,3.00,1.00,Female,1,Baseline,3 +4776,C,19.00,0.00,0.00,Male,0,Baseline,0 +4778,A,23.00,7.00,2.00,Female,1,Baseline,14 +4779,C,21.00,4.00,4.00,Female,1,Baseline,16 +4780,A,20.00,1.00,4.00,Female,1,Baseline,4 +4781,B,21.00,4.00,7.00,Female,1,Baseline,28 +4782,B,20.00,0.00,0.00,Female,0,Baseline,0 +4783,B,19.00,0.00,0.00,Female,0,Baseline,0 +4785,C,20.00,3.00,4.00,Male,1,Baseline,12 +4786,B,22.00,0.00,0.00,Female,0,Baseline,0 +4787,C,18.00,2.00,2.00,Male,1,Baseline,4 +4788,C,21.00,3.00,5.00,Female,1,Baseline,15 +4789,C,20.00,5.00,2.00,Female,1,Baseline,10 +4790,C,54.00,0.00,0.00,Female,0,Baseline,0 +4791,A,39.00,6.00,2.00,Female,1,Baseline,12 +4792,A,19.00,6.00,6.00,Female,1,Baseline,36 +4793,C,20.00,4.00,5.00,Female,1,Baseline,20 +4794,C,51.00,0.00,0.00,Female,0,Baseline,0 +4795,B,19.00,0.00,0.00,Female,0,Baseline,0 +4796,C,30.00,5.00,5.00,Male,1,Baseline,25 +4797,A,20.00,1.00,1.00,Female,1,Baseline,1 +4798,B,22.00,1.00,1.00,Female,1,Baseline,1 +4799,C,34.00,18.0,1.00,Female,1,Baseline,18 +4802,B,23.00,6.00,10.0,Male,1,Baseline,60 +4803,C,19.00,7.00,6.00,Female,1,Baseline,42 +4804,A,22.00,4.00,2.00,Female,1,Baseline,8 +4805,A,20.00,6.00,4.00,Female,1,Baseline,24 +4806,A,23.00,0.00,0.00,Female,0,Baseline,0 +4807,C,19.00,6.00,3.00,Female,1,Baseline,18 +4808,C,18.00,10.0,2.00,Male,1,Baseline,20 +4810,A,34.00,3.00,2.00,Male,1,Baseline,6 +4811,C,18.00,6.00,5.00,Female,1,Baseline,30 +4812,A,19.00,8.00,7.00,Female,1,Baseline,56 +4813,C,18.00,0.00,0.00,Female,0,Baseline,0 +4814,C,19.00,2.00,2.00,Male,1,Baseline,4 +4815,A,21.00,2.00,1.00,Female,1,Baseline,2 +4816,A,21.00,0.00,0.00,Male,0,Baseline,0 +4817,C,24.00,4.00,2.00,Male,1,Baseline,8 +4818,B,24.00,0.00,0.00,Male,0,Baseline,0 +4819,C,21.00,1.00,4.00,Female,1,Baseline,4 +4820,A,20.00,5.00,3.00,Female,1,Baseline,15 +4821,A,37.00,3.00,2.00,Male,1,Baseline,6 +4822,B,25.00,8.00,4.00,Female,1,Baseline,32 +4823,B,21.00,5.00,3.00,Female,1,Baseline,15 +4824,B,20.00,6.00,4.00,Female,1,Baseline,24 +4825,A,31.00,28.0,6.00,Female,1,Baseline,168 +4826,A,20.00,8.00,7.00,Female,1,Baseline,56 +4827,B,22.00,2.00,4.00,Female,1,Baseline,8 +4828,C,23.00,2.00,12.0,Male,1,Baseline,24 +4829,B,27.00,10.0,3.00,Male,1,Baseline,30 +4830,B,19.00,2.00,12.0,Male,1,Baseline,24 +4831,B,18.00,3.00,2.00,Male,1,Baseline,6 +4832,A,18.00,1.00,3.00,Male,1,Baseline,3 +4833,A,37.00,0.00,0.00,Female,0,Baseline,0 +4834,B,18.00,8.00,3.00,Female,1,Baseline,24 +4835,B,25.00,9.00,7.00,Male,1,Baseline,63 +4837,B,20.00,0.00,0.00,Female,0,Baseline,0 +4838,A,18.00,0.00,0.00,Female,0,Baseline,0 +4839,B,39.00,5.00,2.00,Male,1,Baseline,10 +4840,A,19.00,4.00,6.00,Female,1,Baseline,24 +4841,C,45.00,8.00,3.00,Female,1,Baseline,24 +4842,B,20.00,5.00,3.00,Male,1,Baseline,15 +4843,C,20.00,2.00,6.00,Female,1,Baseline,12 +4844,A,31.00,5.00,2.00,Female,1,Baseline,10 +4845,C,24.00,7.00,1.00,Female,1,Baseline,7 +4846,A,21.00,0.00,0.00,Female,0,Baseline,0 +4847,A,19.00,5.00,6.00,Female,1,Baseline,30 +4848,C,22.00,7.00,3.00,Female,1,Baseline,21 +4849,C,31.00,0.00,0.00,Female,0,Baseline,0 +4850,C,18.00,1.00,5.00,Male,1,Baseline,5 +4851,B,18.00,14.0,2.00,Female,1,Baseline,28 +4852,C,22.00,2.00,6.00,Female,1,Baseline,12 +4853,C,19.00,0.00,0.00,Male,0,Baseline,0 +4854,C,18.00,0.00,0.00,Female,0,Baseline,0 +4855,C,38.00,1.00,3.00,Female,1,Baseline,3 +4856,A,19.00,2.00,2.00,Male,1,Baseline,4 +4857,A,18.00,4.00,4.00,Female,1,Baseline,16 +4858,C,52.00,0.00,0.00,Male,0,Baseline,0 +4859,B,39.00,10.0,5.00,Female,1,Baseline,50 +4860,A,19.00,5.00,12.0,Male,1,Baseline,60 +4861,C,19.00,2.00,4.00,Male,1,Baseline,8 +4862,B,19.00,10.0,3.00,Female,1,Baseline,30 +4863,A,20.00,1.00,4.00,Female,1,Baseline,4 +4864,A,25.00,3.00,1.00,Male,1,Baseline,3 +4866,A,21.00,3.00,1.00,Female,1,Baseline,3 +4867,A,21.00,3.00,12.0,Female,1,Baseline,36 +4868,C,29.00,5.00,1.00,Male,1,Baseline,5 +4869,C,23.00,2.00,4.00,Female,1,Baseline,8 +4870,C,49.00,20.0,1.00,Female,1,Baseline,20 +4871,B,23.00,8.00,2.00,Female,1,Baseline,16 +4872,B,20.00,4.00,12.0,Male,1,Baseline,48 +4874,C,21.00,0.00,0.00,Male,0,Baseline,0 +4875,B,21.00,8.00,1.00,Female,1,Baseline,8 +4876,A,21.00,10.0,10.0,Female,1,Baseline,100 +4877,C,18.00,2.00,1.00,Female,1,Baseline,2 +4878,A,20.00,8.00,13.0,Male,1,Baseline,104 +4879,B,21.00,3.00,2.00,Female,1,Baseline,6 +4880,C,20.00,28.0,17.0,Male,1,Baseline,476 +4881,C,19.00,0.00,0.00,Female,0,Baseline,0 +4882,B,20.00,5.00,5.00,Female,1,Baseline,25 +4883,A,20.00,2.00,8.00,Female,1,Baseline,16 +4884,C,24.00,4.00,3.00,Female,1,Baseline,12 +4885,A,21.00,6.00,5.00,Female,1,Baseline,30 +4886,C,22.00,5.00,2.00,Female,1,Baseline,10 +4887,C,50.00,15.0,1.00,Female,1,Baseline,15 +4888,C,21.00,0.00,0.00,Female,0,Baseline,0 +4889,B,18.00,1.00,1.00,Female,1,Baseline,1 +4890,B,19.00,0.00,0.00,Female,0,Baseline,0 +4891,A,22.00,3.00,3.00,Female,1,Baseline,9 +4892,A,19.00,5.00,4.00,Female,1,Baseline,20 +4894,B,42.00,5.00,2.00,Female,1,Baseline,10 +4895,B,18.00,3.00,11.0,Female,1,Baseline,33 +4896,A,19.00,2.00,6.00,Male,1,Baseline,12 +4897,A,20.00,6.00,7.00,Female,1,Baseline,42 +4898,B,18.00,4.00,5.00,Female,1,Baseline,20 +4899,C,36.00,0.00,0.00,Male,0,Baseline,0 +4900,A,20.00,2.00,3.00,Male,1,Baseline,6 +4901,C,18.00,5.00,7.00,Male,1,Baseline,35 +4902,B,18.00,2.00,5.00,Male,1,Baseline,10 +4903,B,19.00,1.00,2.00,Female,1,Baseline,2 +4904,C,18.00,1.00,12.0,Male,1,Baseline,12 +4905,C,48.00,1.00,2.00,Female,1,Baseline,2 +4906,B,20.00,8.00,4.00,Male,1,Baseline,32 +4907,C,23.00,8.00,6.00,Male,1,Baseline,48 +4908,B,19.00,7.00,1.00,Female,1,Baseline,7 +4909,A,23.00,8.00,3.00,Female,1,Baseline,24 +4914,B,24.00,17.0,1.00,Female,1,Baseline,17 +4915,C,21.00,1.00,12.0,Female,1,Baseline,12 +4916,B,20.00,0.00,0.00,Female,0,Baseline,0 +4917,A,36.00,0.00,0.00,Male,0,Baseline,0 +4918,C,32.00,5.00,3.00,Female,1,Baseline,15 +4919,C,28.00,0.00,0.00,Female,0,Baseline,0 +4920,A,23.00,0.00,0.00,Female,0,Baseline,0 +4921,C,30.00,4.00,2.00,Male,1,Baseline,8 +4922,C,22.00,5.00,8.00,Female,1,Baseline,40 +4923,B,20.00,5.00,9.00,Female,1,Baseline,45 +4924,A,20.00,4.00,5.00,Female,1,Baseline,20 +4925,C,31.00,24.0,2.00,Female,1,Baseline,48 +4926,C,24.00,4.00,1.00,Female,1,Baseline,4 +4927,C,20.00,2.00,1.00,Female,1,Baseline,2 +4928,C,18.00,11.0,7.00,Female,1,Baseline,77 +4929,B,19.00,5.00,7.00,Female,1,Baseline,35 +4930,B,19.00,5.00,3.00,Female,1,Baseline,15 +4931,B,19.00,2.00,2.00,Female,1,Baseline,4 +4932,C,19.00,1.00,4.00,Female,1,Baseline,4 +4933,A,18.00,16.0,7.00,Female,1,Baseline,112 +4934,B,22.00,3.00,10.0,Male,1,Baseline,30 +4935,A,20.00,3.00,2.00,Female,1,Baseline,6 +4936,B,30.00,1.00,2.00,Female,1,Baseline,2 +4937,A,21.00,8.00,5.00,Male,1,Baseline,40 +4938,B,22.00,4.00,3.00,Female,1,Baseline,12 +4939,B,19.00,9.00,1.00,Female,1,Baseline,9 +4940,C,26.00,5.00,2.00,Female,1,Baseline,10 +4941,A,19.00,6.00,5.00,Female,1,Baseline,30 +4942,B,19.00,5.00,6.00,Female,1,Baseline,30 +4943,B,19.00,1.00,1.00,Female,1,Baseline,1 +4944,B,21.00,10.0,3.00,Female,1,Baseline,30 +4945,A,21.00,3.00,4.00,Male,1,Baseline,12 +4946,C,42.00,3.00,1.00,Female,1,Baseline,3 +4947,B,19.00,0.00,0.00,Female,0,Baseline,0 +4948,B,56.00,4.00,1.00,Female,1,Baseline,4 +4949,C,20.00,0.00,0.00,Male,0,Baseline,0 +4950,C,18.00,4.00,5.00,Male,1,Baseline,20 +4951,A,19.00,0.00,0.00,Female,0,Baseline,0 +4952,A,20.00,28.0,1.00,Female,1,Baseline,28 +4953,A,54.00,0.00,0.00,Female,0,Baseline,0 +4954,B,78.00,1.00,1.00,Male,1,Baseline,1 +4955,A,35.00,0.00,0.00,Male,0,Baseline,0 +4956,C,22.00,1.00,12.0,Male,1,Baseline,12 +4957,C,19.00,1.00,6.00,Male,1,Baseline,6 +4958,B,22.00,2.00,4.00,Female,1,Baseline,8 +4959,B,20.00,8.00,10.0,Male,1,Baseline,80 +4960,C,21.00,0.00,0.00,Female,0,Baseline,0 +4961,C,19.00,0.00,0.00,Female,0,Baseline,0 +4962,A,18.00,11.0,1.00,Female,1,Baseline,11 +4963,C,22.00,3.00,3.00,Male,1,Baseline,9 +4964,A,22.00,5.00,1.00,Female,1,Baseline,5 +4965,A,19.00,0.00,0.00,Female,0,Baseline,0 +4966,C,21.00,3.00,6.00,Male,1,Baseline,18 +4967,A,19.00,0.00,0.00,Male,0,Baseline,0 +4968,B,18.00,1.00,2.00,Female,1,Baseline,2 +4969,C,34.00,5.00,4.00,Female,1,Baseline,20 +4970,C,52.00,9.00,2.00,Female,1,Baseline,18 +4971,B,18.00,8.00,2.00,Female,1,Baseline,16 +4972,B,46.00,2.00,1.00,Female,1,Baseline,2 +4973,B,20.00,3.00,1.00,Female,1,Baseline,3 +4974,B,19.00,2.00,1.00,Female,1,Baseline,2 +4975,B,41.00,21.0,2.00,Female,1,Baseline,42 +4976,A,47.00,28.0,2.00,Female,1,Baseline,56 +4978,B,52.00,3.00,2.00,Female,1,Baseline,6 +4979,B,22.00,0.00,0.00,Female,0,Baseline,0 +4980,A,37.00,3.00,2.00,Female,1,Baseline,6 +4981,B,19.00,7.00,8.00,Female,1,Baseline,56 +4982,C,26.00,8.00,4.00,Male,1,Baseline,32 +4983,B,23.00,0.00,0.00,Male,0,Baseline,0 +4984,A,18.00,8.00,5.00,Female,1,Baseline,40 +4985,C,18.00,0.00,0.00,Female,0,Baseline,0 +4986,B,22.00,2.00,1.00,Female,1,Baseline,2 +4987,B,36.00,4.00,1.00,Female,1,Baseline,4 +4988,A,21.00,0.00,0.00,Female,0,Baseline,0 +4989,A,19.00,2.00,7.00,Female,1,Baseline,14 +4991,B,19.00,1.00,1.00,Male,1,Baseline,1 +4993,A,18.00,0.00,0.00,Male,0,Baseline,0 +4995,C,21.00,0.00,0.00,Female,0,Baseline,0 +4996,A,19.00,2.00,3.00,Female,1,Baseline,6 +4997,A,22.00,2.00,1.00,Female,1,Baseline,2 +4998,A,22.00,1.00,1.00,Female,1,Baseline,1 +4999,A,21.00,3.00,10.0,Female,1,Baseline,30 +5000,A,19.00,0.00,0.00,Female,0,Baseline,0 +5001,B,20.00,1.00,6.00,Female,1,Baseline,6 +5002,A,19.00,0.00,0.00,Female,0,Baseline,0 +5003,A,20.00,4.00,1.00,Female,1,Baseline,4 +5004,C,19.00,0.00,0.00,Male,0,Baseline,0 +5005,C,25.00,4.00,15.0,Male,1,Baseline,60 +5006,C,29.00,6.00,2.00,Female,1,Baseline,12 +5007,B,19.00,3.00,16.0,Male,1,Baseline,48 +5009,A,20.00,3.00,6.00,Male,1,Baseline,18 +5010,C,22.00,8.00,4.00,Male,1,Baseline,32 +5011,C,20.00,2.00,3.00,Female,1,Baseline,6 +5012,A,21.00,3.00,3.00,Female,1,Baseline,9 +5013,C,18.00,0.00,0.00,Female,0,Baseline,0 +5015,C,20.00,28.0,1.00,Male,1,Baseline,28 +5016,A,21.00,8.00,5.00,Female,1,Baseline,40 +5017,C,19.00,3.00,5.00,Female,1,Baseline,15 +5018,A,19.00,3.00,5.00,Female,1,Baseline,15 +5019,C,19.00,2.00,3.00,Female,1,Baseline,6 +5020,A,31.00,0.00,0.00,Female,0,Baseline,0 +5021,C,18.00,7.00,9.00,Male,1,Baseline,63 +5022,A,19.00,11.0,7.00,Female,1,Baseline,77 +5023,B,21.00,4.00,4.00,Female,1,Baseline,16 +5024,C,18.00,7.00,1.00,Female,1,Baseline,7 +5025,B,19.00,8.00,10.0,Female,1,Baseline,80 +5026,C,19.00,3.00,4.00,Female,1,Baseline,12 +5027,B,21.00,2.00,3.00,Female,1,Baseline,6 +5029,C,19.00,0.00,0.00,Female,0,Baseline,0 +5030,C,18.00,0.00,0.00,Male,0,Baseline,0 +5031,C,21.00,4.00,4.00,Female,1,Baseline,16 +5032,C,18.00,2.00,8.00,Female,1,Baseline,16 +5033,C,21.00,8.00,3.00,Female,1,Baseline,24 +5036,A,25.00,2.00,2.00,Male,1,Baseline,4 +5037,A,22.00,7.00,8.00,Female,1,Baseline,56 +5038,C,19.00,2.00,6.00,Male,1,Baseline,12 +5039,A,20.00,0.00,0.00,Male,0,Baseline,0 +5040,B,19.00,0.00,0.00,Male,0,Baseline,0 +5041,C,18.00,2.00,1.00,Female,1,Baseline,2 +5043,C,20.00,12.0,5.00,Female,1,Baseline,60 +5044,C,26.00,0.00,0.00,Male,0,Baseline,0 +5046,B,45.00,2.00,2.00,Female,1,Baseline,4 +5047,B,21.00,2.00,2.00,Female,1,Baseline,4 +5048,C,18.00,5.00,12.0,Female,1,Baseline,60 +5049,A,19.00,0.00,0.00,Female,0,Baseline,0 +5050,B,20.00,1.00,6.00,Female,1,Baseline,6 +5051,A,20.00,2.00,5.00,Male,1,Baseline,10 +5052,C,21.00,0.00,0.00,Female,0,Baseline,0 +5053,A,23.00,2.00,4.00,Female,1,Baseline,8 +5054,A,22.00,6.00,7.00,Female,1,Baseline,42 +5055,A,20.00,2.00,7.00,Female,1,Baseline,14 +5056,B,18.00,5.00,6.00,Male,1,Baseline,30 +5057,A,41.00,0.00,0.00,Male,0,Baseline,0 +5058,C,31.00,1.00,1.00,Male,1,Baseline,1 +5059,C,23.00,5.00,7.00,Female,1,Baseline,35 +5060,C,23.00,7.00,8.00,Female,1,Baseline,56 +5061,B,19.00,0.00,0.00,Female,0,Baseline,0 +5062,B,20.00,2.00,1.00,Female,1,Baseline,2 +5063,A,24.00,0.00,0.00,Female,0,Baseline,0 +5064,B,18.00,2.00,4.00,Female,1,Baseline,8 +5065,B,24.00,0.00,0.00,Female,0,Baseline,0 +5066,B,30.00,0.00,0.00,Male,0,Baseline,0 +5067,A,35.00,3.00,1.00,Male,1,Baseline,3 +5068,B,22.00,4.00,7.00,Female,1,Baseline,28 +5070,A,21.00,6.00,2.00,Female,1,Baseline,12 +5071,C,20.00,0.00,0.00,Female,0,Baseline,0 +5072,B,20.00,3.00,10.0,Female,1,Baseline,30 +5073,B,28.00,2.00,2.00,Female,1,Baseline,4 +5074,A,22.00,3.00,2.00,Female,1,Baseline,6 +5075,C,19.00,4.00,4.00,Male,1,Baseline,16 +5076,A,18.00,2.00,1.00,Female,1,Baseline,2 +5077,C,23.00,1.00,5.00,Female,1,Baseline,5 +5079,A,18.00,8.00,7.00,Female,1,Baseline,56 +5080,B,48.00,21.0,2.00,Female,1,Baseline,42 +5081,C,20.00,12.0,6.00,Female,1,Baseline,72 +5082,C,27.00,4.00,5.00,Female,1,Baseline,20 +5083,A,22.00,2.00,10.0,Female,1,Baseline,20 +5084,A,20.00,0.00,0.00,Female,0,Baseline,0 +5085,A,27.00,0.00,0.00,Female,0,Baseline,0 +5087,A,20.00,4.00,2.00,Female,1,Baseline,8 +5088,B,21.00,2.00,1.00,Male,1,Baseline,2 +5091,B,28.00,14.0,4.00,Male,1,Baseline,56 +5092,B,18.00,0.00,0.00,Female,0,Baseline,0 +5093,C,27.00,5.00,1.00,Female,1,Baseline,5 +5094,B,53.00,8.00,3.00,Male,1,Baseline,24 +5095,B,34.00,1.00,2.00,Female,1,Baseline,2 +5096,A,23.00,9.00,2.00,Female,1,Baseline,18 +5098,C,24.00,10.0,1.00,Male,1,Baseline,10 +5099,C,20.00,10.0,2.00,Female,1,Baseline,20 +5100,B,20.00,5.00,5.00,Female,1,Baseline,25 +5101,B,24.00,22.0,2.00,Male,1,Baseline,44 +5102,A,19.00,0.00,0.00,Female,0,Baseline,0 +5103,C,19.00,4.00,1.00,Female,1,Baseline,4 +5104,B,53.00,20.0,1.00,Female,1,Baseline,20 +5105,B,20.00,3.00,10.0,Female,1,Baseline,30 +5106,A,22.00,3.00,7.00,Female,1,Baseline,21 +5107,A,20.00,4.00,8.00,Female,1,Baseline,32 +5108,B,43.00,12.0,1.00,Female,1,Baseline,12 +5110,A,32.00,14.0,2.00,Male,1,Baseline,28 +5111,B,24.00,4.00,12.0,Female,1,Baseline,48 +5112,C,21.00,4.00,3.00,Male,1,Baseline,12 +5113,B,24.00,5.00,2.00,Female,1,Baseline,10 +5114,A,24.00,13.0,1.00,Female,1,Baseline,13 +5115,B,41.00,0.00,0.00,Female,0,Baseline,0 +5116,A,18.00,1.00,1.00,Male,1,Baseline,1 +5117,C,21.00,6.00,12.0,Male,1,Baseline,72 +5120,C,26.00,8.00,2.00,Female,1,Baseline,16 +5121,C,19.00,1.00,1.00,Female,1,Baseline,1 +5122,B,32.00,10.0,8.00,Male,1,Baseline,80 +5123,B,19.00,4.00,2.00,Female,1,Baseline,8 +5125,C,21.00,0.00,0.00,Female,0,Baseline,0 +5126,B,20.00,0.00,0.00,Male,0,Baseline,0 +5127,C,22.00,27.0,2.00,Female,1,Baseline,54 +5128,C,32.00,0.00,0.00,Female,0,Baseline,0 +5129,A,63.00,3.00,1.00,Male,1,Baseline,3 +5130,A,21.00,6.00,10.0,Male,1,Baseline,60 +5131,B,35.00,1.00,8.00,Female,1,Baseline,8 +5132,B,18.00,1.00,3.00,Female,1,Baseline,3 +5133,C,19.00,20.0,2.00,Male,1,Baseline,40 +5134,A,19.00,3.00,6.00,Female,1,Baseline,18 +5135,A,21.00,5.00,4.00,Female,1,Baseline,20 +5136,C,20.00,3.00,1.00,Female,1,Baseline,3 +5137,A,18.00,0.00,0.00,Female,0,Baseline,0 +5138,B,22.00,10.0,1.00,Female,1,Baseline,10 +5139,C,17.00,4.00,4.00,Female,1,Baseline,16 +5140,C,20.00,2.00,8.00,Female,1,Baseline,16 +5141,B,18.00,2.00,5.00,Female,1,Baseline,10 +5142,B,26.00,14.0,2.00,Female,1,Baseline,28 +5143,A,22.00,8.00,4.00,Female,1,Baseline,32 +5144,C,37.00,0.00,0.00,Male,0,Baseline,0 +5145,B,36.00,0.00,0.00,Male,0,Baseline,0 +5146,A,26.00,0.00,0.00,Female,0,Baseline,0 +5147,B,46.00,0.00,0.00,Male,0,Baseline,0 +5148,A,21.00,0.00,0.00,Male,0,Baseline,0 +5149,A,19.00,15.0,3.00,Female,1,Baseline,45 +5151,C,19.00,2.00,2.00,Male,1,Baseline,4 +5152,B,22.00,4.00,3.00,Female,1,Baseline,12 +5155,A,21.00,2.00,6.00,Female,1,Baseline,12 +5156,A,40.00,20.0,1.00,Female,1,Baseline,20 +5157,C,32.00,3.00,2.00,Female,1,Baseline,6 +5158,C,18.00,1.00,4.00,Male,1,Baseline,4 +5159,C,19.00,0.00,0.00,Male,0,Baseline,0 +5160,A,53.00,0.00,0.00,Female,0,Baseline,0 +5161,A,20.00,0.00,0.00,Female,0,Baseline,0 +5162,A,17.00,0.00,0.00,Female,0,Baseline,0 +5163,B,23.00,5.00,1.00,Male,1,Baseline,5 +5164,C,25.00,3.00,3.00,Female,1,Baseline,9 +5165,B,18.00,5.00,6.00,Female,1,Baseline,30 +5166,C,32.00,4.00,1.00,Male,1,Baseline,4 +5167,A,21.00,0.00,0.00,Male,0,Baseline,0 +5168,B,23.00,10.0,18.0,Male,1,Baseline,180 +5169,C,24.00,12.0,4.00,Male,1,Baseline,48 +5170,B,21.00,6.00,7.00,Female,1,Baseline,42 +5172,A,71.00,2.00,1.00,Female,1,Baseline,2 +5173,B,21.00,1.00,1.00,Female,1,Baseline,1 +5174,A,21.00,0.00,0.00,Female,0,Baseline,0 +5175,A,19.00,4.00,8.00,Male,1,Baseline,32 +5176,B,20.00,3.00,12.0,Male,1,Baseline,36 +5177,B,19.00,0.00,0.00,Male,0,Baseline,0 +5178,C,19.00,2.00,1.00,Female,1,Baseline,2 +5179,A,20.00,5.00,1.00,Female,1,Baseline,5 +5180,B,18.00,2.00,1.00,Male,1,Baseline,2 +5181,C,21.00,11.0,5.00,Male,1,Baseline,55 +5182,A,21.00,1.00,1.00,Female,1,Baseline,1 +5184,C,20.00,4.00,2.00,Female,1,Baseline,8 +5185,A,19.00,0.00,0.00,Female,0,Baseline,0 +5186,B,19.00,2.00,3.00,Female,1,Baseline,6 +5187,C,19.00,1.00,2.00,Male,1,Baseline,2 +5188,B,26.00,0.00,0.00,Male,0,Baseline,0 +5189,A,21.00,4.00,3.00,Male,1,Baseline,12 +5190,A,20.00,2.00,1.00,Male,1,Baseline,2 +5191,C,20.00,5.00,8.00,Female,1,Baseline,40 +5192,C,20.00,10.0,6.00,Male,1,Baseline,60 +5193,A,19.00,0.00,0.00,Female,0,Baseline,0 +5194,A,19.00,0.00,0.00,Female,0,Baseline,0 +5195,B,20.00,0.00,0.00,Female,0,Baseline,0 +5196,A,18.00,0.00,0.00,Male,0,Baseline,0 +5197,B,20.00,2.00,2.00,Female,1,Baseline,4 +5199,C,23.00,12.0,3.00,Female,1,Baseline,36 +5200,B,22.00,6.00,10.0,Male,1,Baseline,60 +5201,A,22.00,2.00,2.00,Male,1,Baseline,4 +5202,A,26.00,10.0,3.00,Male,1,Baseline,30 +5203,C,26.00,1.00,1.00,Female,1,Baseline,1 +5204,A,20.00,2.00,1.00,Female,1,Baseline,2 +5205,A,19.00,12.0,14.0,Male,1,Baseline,168 +5206,B,21.00,2.00,5.00,Female,1,Baseline,10 +5207,A,20.00,5.00,3.00,Female,1,Baseline,15 +5208,B,21.00,3.00,4.00,Female,1,Baseline,12 +5209,C,19.00,10.0,9.00,Male,1,Baseline,90 +5210,B,25.00,3.00,1.00,Male,1,Baseline,3 +5211,B,18.00,9.00,2.00,Female,1,Baseline,18 +5212,A,18.00,0.00,0.00,Male,0,Baseline,0 +5214,B,22.00,0.00,0.00,Male,0,Baseline,0 +5216,A,23.00,0.00,0.00,Female,0,Baseline,0 +5217,B,44.00,0.00,0.00,Male,0,Baseline,0 +5218,B,53.00,28.0,1.00,Male,1,Baseline,28 +5219,A,29.00,8.00,5.00,Male,1,Baseline,40 +5220,B,42.00,0.00,0.00,Female,0,Baseline,0 +5221,B,32.00,0.00,0.00,Male,0,Baseline,0 +5222,C,23.00,12.0,5.00,Female,1,Baseline,60 +5223,B,32.00,10.0,1.00,Male,1,Baseline,10 +5224,A,18.00,0.00,0.00,Male,0,Baseline,0 +5227,B,24.00,2.00,1.00,Female,1,Baseline,2 +5228,C,22.00,1.00,4.00,Female,1,Baseline,4 +5229,B,20.00,2.00,3.00,Male,1,Baseline,6 +5230,B,18.00,2.00,7.00,Female,1,Baseline,14 +5231,C,21.00,5.00,8.00,Female,1,Baseline,40 +5232,A,29.00,8.00,2.00,Male,1,Baseline,16 +5233,B,23.00,3.00,3.00,Female,1,Baseline,9 +5235,C,25.00,10.0,7.00,Male,1,Baseline,70 +5236,C,20.00,5.00,12.0,Male,1,Baseline,60 +5237,C,18.00,1.00,1.00,Female,1,Baseline,1 +5238,B,25.00,0.00,0.00,Male,0,Baseline,0 +5239,B,22.00,0.00,0.00,Female,0,Baseline,0 +5240,B,48.00,8.00,1.00,Female,1,Baseline,8 +5241,C,18.00,10.0,3.00,Female,1,Baseline,30 +5243,C,18.00,3.00,7.00,Female,1,Baseline,21 +5244,C,25.00,10.0,2.00,Male,1,Baseline,20 +5245,A,21.00,12.0,10.0,Female,1,Baseline,120 +5246,A,29.00,4.00,4.00,Female,1,Baseline,16 +5248,C,24.00,4.00,13.0,Female,1,Baseline,52 +5249,B,20.00,0.00,0.00,Female,0,Baseline,0 +5250,A,19.00,8.00,12.0,Male,1,Baseline,96 +5251,C,25.00,4.00,2.00,Female,1,Baseline,8 +5252,A,18.00,6.00,6.00,Male,1,Baseline,36 +5253,B,34.00,8.00,3.00,Female,1,Baseline,24 +5255,B,21.00,4.00,2.00,Female,1,Baseline,8 +5256,C,18.00,0.00,0.00,Male,0,Baseline,0 +5257,C,21.00,16.0,2.00,Male,1,Baseline,32 +5258,A,25.00,1.00,4.00,Female,1,Baseline,4 +5259,A,23.00,5.00,3.00,Female,1,Baseline,15 +5260,A,22.00,5.00,2.00,Female,1,Baseline,10 +5261,A,21.00,8.00,4.00,Female,1,Baseline,32 +5262,C,20.00,8.00,6.00,Female,1,Baseline,48 +5263,C,22.00,5.00,5.00,Female,1,Baseline,25 +5264,C,19.00,5.00,7.00,Female,1,Baseline,35 +5265,A,21.00,5.00,6.00,Female,1,Baseline,30 +5266,B,18.00,5.00,5.00,Female,1,Baseline,25 +5267,C,19.00,5.00,4.00,Female,1,Baseline,20 +5268,B,21.00,7.00,6.00,Female,1,Baseline,42 +5269,A,18.00,2.00,1.00,Female,1,Baseline,2 +5270,B,22.00,9.00,1.00,Female,1,Baseline,9 +5271,B,19.00,1.00,4.00,Female,1,Baseline,4 +5272,B,23.00,12.0,1.00,Male,1,Baseline,12 +5273,B,19.00,8.00,7.00,Male,1,Baseline,56 +5274,B,21.00,0.00,0.00,Male,0,Baseline,0 +5275,B,19.00,0.00,0.00,Female,0,Baseline,0 +5277,C,21.00,2.00,6.00,Male,1,Baseline,12 +5278,C,24.00,8.00,3.00,Female,1,Baseline,24 +5279,C,18.00,0.00,0.00,Female,0,Baseline,0 +5280,C,20.00,0.00,0.00,Female,0,Baseline,0 +5281,A,19.00,10.0,12.0,Male,1,Baseline,120 +5282,A,23.00,16.0,1.00,Male,1,Baseline,16 +5283,A,26.00,7.00,2.00,Female,1,Baseline,14 +5285,B,19.00,7.00,6.00,Female,1,Baseline,42 +5287,A,48.00,0.00,0.00,Female,0,Baseline,0 +5288,A,20.00,14.0,2.00,Male,1,Baseline,28 +5289,A,23.00,4.00,1.00,Male,1,Baseline,4 +5290,C,19.00,0.00,0.00,Female,0,Baseline,0 +5291,C,23.00,0.00,0.00,Male,0,Baseline,0 +5292,C,18.00,4.00,1.00,Female,1,Baseline,4 +5293,C,23.00,5.00,6.00,Female,1,Baseline,30 +5294,A,22.00,2.00,2.00,Female,1,Baseline,4 +5295,A,20.00,3.00,2.00,Female,1,Baseline,6 +5296,C,20.00,0.00,0.00,Female,0,Baseline,0 +5297,C,32.00,4.00,4.00,Female,1,Baseline,16 +5298,B,23.00,2.00,2.00,Female,1,Baseline,4 +5299,C,24.00,5.00,4.00,Female,1,Baseline,20 +5300,C,21.00,4.00,4.00,Female,1,Baseline,16 +5301,A,23.00,21.0,8.00,Male,1,Baseline,168 +5302,B,21.00,4.00,1.00,Female,1,Baseline,4 +5303,B,22.00,4.00,1.00,Female,1,Baseline,4 +5305,B,27.00,3.00,8.00,Male,1,Baseline,24 +5306,C,20.00,2.00,1.00,Female,1,Baseline,2 +5307,C,21.00,0.00,0.00,Female,0,Baseline,0 +5308,B,28.00,0.00,0.00,Male,0,Baseline,0 +5309,B,20.00,5.00,6.00,Female,1,Baseline,30 +5310,C,37.00,2.00,10.0,Male,1,Baseline,20 +5311,C,37.00,0.00,0.00,Female,0,Baseline,0 +5312,B,19.00,0.00,0.00,Female,0,Baseline,0 +5313,B,21.00,14.0,2.00,Female,1,Baseline,28 +5314,B,23.00,5.00,2.00,Female,1,Baseline,10 +5315,A,19.00,4.00,9.00,Male,1,Baseline,36 +5316,A,56.00,12.0,1.00,Female,1,Baseline,12 +5317,B,37.00,14.0,2.00,Female,1,Baseline,28 +5318,A,18.00,2.00,2.00,Female,1,Baseline,4 +5319,B,23.00,0.00,0.00,Female,0,Baseline,0 +5320,B,19.00,2.00,1.00,Female,1,Baseline,2 +5323,C,19.00,1.00,3.00,Male,1,Baseline,3 +5324,A,18.00,0.00,0.00,Male,0,Baseline,0 +5325,C,22.00,4.00,1.00,Female,1,Baseline,4 +5326,A,20.00,2.00,4.00,Female,1,Baseline,8 +5327,C,22.00,0.00,0.00,Female,0,Baseline,0 +5328,B,19.00,2.00,1.00,Male,1,Baseline,2 +5329,C,24.00,2.00,1.00,Female,1,Baseline,2 +5330,C,22.00,1.00,3.00,Female,1,Baseline,3 +5331,C,19.00,1.00,1.00,Female,1,Baseline,1 +5332,A,24.00,3.00,3.00,Female,1,Baseline,9 +5335,B,19.00,0.00,0.00,Female,0,Baseline,0 +5336,A,20.00,1.00,5.00,Male,1,Baseline,5 +5339,A,25.00,0.00,0.00,Female,0,Baseline,0 +5340,A,20.00,4.00,10.0,Male,1,Baseline,40 +5341,A,18.00,4.00,1.00,Male,1,Baseline,4 +5342,B,31.00,4.00,2.00,Male,1,Baseline,8 +5344,B,20.00,8.00,6.00,Female,1,Baseline,48 +5345,C,55.00,6.00,2.00,Female,1,Baseline,12 +5346,B,36.00,8.00,3.00,Male,1,Baseline,24 +5347,C,19.00,2.00,4.00,Female,1,Baseline,8 +5348,A,51.00,0.00,0.00,Female,0,Baseline,0 +5349,B,21.00,0.00,0.00,Female,0,Baseline,0 +5350,C,23.00,0.00,0.00,Female,0,Baseline,0 +5351,A,25.00,10.0,2.00,Male,1,Baseline,20 +5352,B,23.00,8.00,6.00,Female,1,Baseline,48 +5353,C,18.00,0.00,0.00,Female,0,Baseline,0 +5354,B,31.00,12.0,8.00,Female,1,Baseline,96 +5356,A,19.00,4.00,3.00,Female,1,Baseline,12 +5357,B,30.00,10.0,1.00,Female,1,Baseline,10 +5359,C,19.00,7.00,20.0,Male,1,Baseline,140 +5360,A,18.00,0.00,0.00,Male,0,Baseline,0 +5361,B,18.00,5.00,6.00,Female,1,Baseline,30 +5363,B,31.00,4.00,8.00,Male,1,Baseline,32 +5364,B,19.00,7.00,6.00,Female,1,Baseline,42 +5365,A,22.00,3.00,1.00,Female,1,Baseline,3 +5366,C,21.00,4.00,3.00,Female,1,Baseline,12 +5368,C,18.00,4.00,8.00,Female,1,Baseline,32 +5370,A,21.00,4.00,4.00,Female,1,Baseline,16 +5372,C,21.00,1.00,3.00,Female,1,Baseline,3 +5374,B,21.00,3.00,3.00,Male,1,Baseline,9 +5375,B,36.00,5.00,2.00,Male,1,Baseline,10 +5376,C,18.00,1.00,5.00,Female,1,Baseline,5 +5377,C,20.00,0.00,0.00,Female,0,Baseline,0 +5378,A,22.00,4.00,20.0,Male,1,Baseline,80 +5379,B,24.00,6.00,3.00,Male,1,Baseline,18 +5380,C,20.00,0.00,0.00,Female,0,Baseline,0 +5382,C,20.00,17.0,6.00,Male,1,Baseline,102 +5383,A,19.00,6.00,4.00,Male,1,Baseline,24 +5384,B,21.00,4.00,2.00,Female,1,Baseline,8 +5386,C,35.00,6.00,1.00,Male,1,Baseline,6 +5388,B,47.00,0.00,0.00,Female,0,Baseline,0 +5389,A,19.00,1.00,1.00,Male,1,Baseline,1 +5390,C,22.00,0.00,0.00,Female,0,Baseline,0 +5392,B,31.00,25.0,1.00,Male,1,Baseline,25 +5393,B,18.00,3.00,2.00,Female,1,Baseline,6 +5394,B,22.00,5.00,1.00,Female,1,Baseline,5 +5395,B,22.00,6.00,2.00,Female,1,Baseline,12 +5396,C,25.00,5.00,3.00,Female,1,Baseline,15 +5397,C,61.00,27.0,2.00,Female,1,Baseline,54 +5398,B,18.00,0.00,0.00,Female,0,Baseline,0 +5399,B,24.00,1.00,1.00,Male,1,Baseline,1 +5400,C,27.00,4.00,4.00,Male,1,Baseline,16 +5402,A,49.00,1.00,3.00,Female,1,Baseline,3 +5403,B,20.00,3.00,4.00,Male,1,Baseline,12 +5404,B,55.00,14.0,2.00,Male,1,Baseline,28 +5405,B,22.00,10.0,1.00,Female,1,Baseline,10 +5406,B,19.00,5.00,4.00,Female,1,Baseline,20 +5408,B,18.00,4.00,5.00,Male,1,Baseline,20 +5410,B,27.00,0.00,0.00,Female,0,Baseline,0 +5411,A,26.00,2.00,1.00,Female,1,Baseline,2 +5412,A,22.00,1.00,1.00,Female,1,Baseline,1 +5413,B,51.00,20.0,1.00,Female,1,Baseline,20 +5415,C,19.00,1.00,1.00,Female,1,Baseline,1 +5417,C,51.00,20.0,2.00,Male,1,Baseline,40 +5418,C,21.00,0.00,0.00,Female,0,Baseline,0 +5420,B,22.00,4.00,10.0,Female,1,Baseline,40 +5421,C,51.00,1.00,1.00,Female,1,Baseline,1 +5422,C,19.00,2.00,2.00,Female,1,Baseline,4 +5423,B,19.00,1.00,2.00,Male,1,Baseline,2 +5424,C,21.00,4.00,8.00,Female,1,Baseline,32 +5426,C,22.00,4.00,6.00,Female,1,Baseline,24 +5427,B,22.00,1.00,1.00,Female,1,Baseline,1 +5428,A,20.00,1.00,6.00,Male,1,Baseline,6 +5430,A,28.00,10.0,5.00,Female,1,Baseline,50 +5432,C,39.00,20.0,1.00,Female,1,Baseline,20 +5433,C,24.00,1.00,1.00,Female,1,Baseline,1 +5434,C,21.00,6.00,14.0,Male,1,Baseline,84 +5435,C,23.00,7.00,2.00,Female,1,Baseline,14 +5436,B,20.00,5.00,8.00,Female,1,Baseline,40 +5437,C,25.00,9.00,2.00,Female,1,Baseline,18 +5438,C,26.00,1.00,1.00,Female,1,Baseline,1 +5439,B,24.00,9.00,3.00,Female,1,Baseline,27 +5442,C,21.00,4.00,9.00,Female,1,Baseline,36 +5443,B,20.00,6.00,3.00,Female,1,Baseline,18 +5444,C,21.00,4.00,7.00,Female,1,Baseline,28 +5445,B,21.00,2.00,10.0,Male,1,Baseline,20 +5446,A,18.00,7.00,2.00,Female,1,Baseline,14 +5447,A,55.00,20.0,2.00,Female,1,Baseline,40 +5448,B,19.00,0.00,0.00,Female,0,Baseline,0 +5449,C,44.00,5.00,2.00,Female,1,Baseline,10 +5450,C,22.00,3.00,1.00,Male,1,Baseline,3 +5453,C,46.00,16.0,2.00,Female,1,Baseline,32 +5454,A,19.00,0.00,0.00,Male,0,Baseline,0 +5455,A,22.00,3.00,7.00,Female,1,Baseline,21 +5456,C,26.00,1.00,6.00,Female,1,Baseline,6 +5457,B,26.00,2.00,1.00,Female,1,Baseline,2 +5458,B,31.00,9.00,4.00,Female,1,Baseline,36 +5460,C,20.00,2.00,1.00,Female,1,Baseline,2 +5461,B,23.00,0.00,0.00,Female,0,Baseline,0 +5462,B,18.00,2.00,2.00,Male,1,Baseline,4 +5463,C,21.00,2.00,1.00,Female,1,Baseline,2 +5464,B,23.00,0.00,0.00,Male,0,Baseline,0 +5465,A,22.00,4.00,3.00,Male,1,Baseline,12 +5466,C,39.00,0.00,0.00,Female,0,Baseline,0 +5467,C,38.00,2.00,6.00,Female,1,Baseline,12 +5468,A,38.00,7.00,5.00,Male,1,Baseline,35 +5470,B,20.00,0.00,0.00,Female,0,Baseline,0 +5471,A,19.00,2.00,4.00,Female,1,Baseline,8 +5474,B,20.00,0.00,0.00,Female,0,Baseline,0 +5475,A,34.00,4.00,2.00,Male,1,Baseline,8 +5476,B,24.00,1.00,5.00,Female,1,Baseline,5 +5477,B,21.00,2.00,1.00,Male,1,Baseline,2 +5478,A,23.00,4.00,2.00,Female,1,Baseline,8 +5479,A,18.00,1.00,1.00,Male,1,Baseline,1 +5480,A,18.00,3.00,5.00,Female,1,Baseline,15 +5481,B,21.00,1.00,1.00,Male,1,Baseline,1 +5482,B,21.00,5.00,3.00,Female,1,Baseline,15 +5483,B,18.00,2.00,2.00,Male,1,Baseline,4 +5484,A,20.00,2.00,1.00,Female,1,Baseline,2 +5485,C,21.00,6.00,2.00,Female,1,Baseline,12 +5486,A,24.00,2.00,1.00,Female,1,Baseline,2 +5487,C,21.00,4.00,6.00,Female,1,Baseline,24 +5488,A,20.00,4.00,1.00,Female,1,Baseline,4 +5489,A,30.00,0.00,0.00,Male,0,Baseline,0 +5490,C,22.00,2.00,4.00,Female,1,Baseline,8 +5491,B,24.00,0.00,0.00,Female,0,Baseline,0 +5492,A,52.00,1.00,1.00,Female,1,Baseline,1 +5493,A,21.00,14.0,3.00,Male,1,Baseline,42 +5494,A,21.00,2.00,2.00,Female,1,Baseline,4 +5495,A,20.00,3.00,7.00,Male,1,Baseline,21 +5496,C,21.00,6.00,2.00,Male,1,Baseline,12 +5497,B,23.00,6.00,8.00,Female,1,Baseline,48 +5498,B,19.00,0.00,0.00,Female,0,Baseline,0 +5499,A,24.00,0.00,0.00,Male,0,Baseline,0 +5500,B,18.00,8.00,6.00,Female,1,Baseline,48 +5501,A,20.00,3.00,4.00,Male,1,Baseline,12 +5502,A,20.00,3.00,6.00,Female,1,Baseline,18 +5503,A,22.00,10.0,8.00,Male,1,Baseline,80 +5504,A,35.00,4.00,2.00,Female,1,Baseline,8 +5505,C,55.00,8.00,2.00,Female,1,Baseline,16 +5506,C,23.00,4.00,1.00,Male,1,Baseline,4 +5507,B,28.00,4.00,3.00,Female,1,Baseline,12 +5510,A,19.00,11.0,10.0,Female,1,Baseline,110 +5511,C,31.00,4.00,3.00,Male,1,Baseline,12 +5512,C,19.00,3.00,4.00,Female,1,Baseline,12 +5513,A,35.00,1.00,4.00,Female,1,Baseline,4 +5514,A,52.00,0.00,0.00,Female,0,Baseline,0 +5515,C,19.00,0.00,0.00,Male,0,Baseline,0 +5516,A,20.00,0.00,0.00,Female,0,Baseline,0 +5517,A,29.00,1.00,2.00,Female,1,Baseline,2 +5518,B,53.00,19.0,3.00,Male,1,Baseline,57 +5520,C,21.00,4.00,3.00,Female,1,Baseline,12 +5521,B,20.00,0.00,0.00,Female,0,Baseline,0 +5522,B,20.00,3.00,10.0,Female,1,Baseline,30 +5523,A,20.00,0.00,0.00,Female,0,Baseline,0 +5524,A,41.00,4.00,1.00,Male,1,Baseline,4 +5525,A,24.00,4.00,6.00,Female,1,Baseline,24 +5527,B,19.00,2.00,5.00,Female,1,Baseline,10 +5528,A,32.00,4.00,2.00,Female,1,Baseline,8 +5529,C,18.00,1.00,2.00,Female,1,Baseline,2 +5530,C,57.00,0.00,0.00,Female,0,Baseline,0 +5531,B,19.00,0.00,0.00,Male,0,Baseline,0 +5532,C,44.00,12.0,2.00,Female,1,Baseline,24 +5533,C,44.00,2.00,1.00,Female,1,Baseline,2 +5537,C,23.00,1.00,1.00,Male,1,Baseline,1 +5538,B,19.00,2.00,7.00,Female,1,Baseline,14 +5540,B,21.00,1.00,1.00,Female,1,Baseline,1 +5541,A,56.00,21.0,1.00,Male,1,Baseline,21 +5542,B,19.00,0.00,0.00,Male,0,Baseline,0 +5543,C,19.00,3.00,1.00,Female,1,Baseline,3 +5544,A,25.00,22.0,2.00,Female,1,Baseline,44 +5546,B,22.00,5.00,18.0,Female,1,Baseline,90 +5547,C,21.00,4.00,9.00,Female,1,Baseline,36 +5548,A,22.00,2.00,5.00,Male,1,Baseline,10 +5549,C,18.00,0.00,0.00,Female,0,Baseline,0 +5550,B,18.00,9.00,6.00,Female,1,Baseline,54 +5553,A,19.00,2.00,1.00,Male,1,Baseline,2 +5555,B,22.00,0.00,0.00,Female,0,Baseline,0 +5556,C,24.00,15.0,1.00,Female,1,Baseline,15 +5557,B,25.00,0.00,0.00,Female,0,Baseline,0 +5558,B,20.00,2.00,4.00,Female,1,Baseline,8 +5559,A,42.00,2.00,4.00,Female,1,Baseline,8 +5560,B,20.00,0.00,0.00,Female,0,Baseline,0 +5562,C,30.00,1.00,1.00,Female,1,Baseline,1 +5563,A,20.00,4.00,2.00,Female,1,Baseline,8 +5565,C,39.00,7.00,1.00,Male,1,Baseline,7 +5566,A,26.00,4.00,2.00,Male,1,Baseline,8 +5568,A,21.00,0.00,0.00,Female,0,Baseline,0 +5569,A,24.00,4.00,2.00,Female,1,Baseline,8 +5571,A,26.00,18.0,10.0,Female,1,Baseline,180 +5572,A,44.00,4.00,2.00,Female,1,Baseline,8 +5574,B,18.00,4.00,14.0,Male,1,Baseline,56 +5575,A,18.00,0.00,0.00,Female,0,Baseline,0 +5576,B,53.00,14.0,1.00,Female,1,Baseline,14 +5578,A,23.00,2.00,10.0,Male,1,Baseline,20 +5579,C,43.00,0.00,0.00,Female,0,Baseline,0 +5580,B,48.00,2.00,1.00,Male,1,Baseline,2 +5581,B,22.00,3.00,1.00,Female,1,Baseline,3 +5582,B,21.00,2.00,2.00,Male,1,Baseline,4 +5583,B,34.00,10.0,8.00,Female,1,Baseline,80 +5584,A,25.00,1.00,1.00,Female,1,Baseline,1 +5585,C,23.00,4.00,4.00,Female,1,Baseline,16 +5586,B,19.00,0.00,0.00,Female,0,Baseline,0 +5587,A,42.00,14.0,1.00,Female,1,Baseline,14 +5588,B,44.00,28.0,1.00,Female,1,Baseline,28 +5589,C,21.00,2.00,2.00,Female,1,Baseline,4 +5590,A,25.00,0.00,0.00,Female,0,Baseline,0 +5591,A,26.00,3.00,2.00,Male,1,Baseline,6 +5592,C,21.00,5.00,2.00,Male,1,Baseline,10 +5593,C,22.00,6.00,8.00,Male,1,Baseline,48 +5594,B,22.00,8.00,8.00,Male,1,Baseline,64 +5595,B,21.00,4.00,6.00,Female,1,Baseline,24 +5596,B,25.00,19.0,4.00,Female,1,Baseline,76 +5597,A,35.00,3.00,1.00,Female,1,Baseline,3 +5599,B,38.00,0.00,0.00,Male,0,Baseline,0 +5601,B,18.00,0.00,0.00,Male,0,Baseline,0 +5602,B,35.00,10.0,7.00,Male,1,Baseline,70 +5603,B,23.00,1.00,1.00,Female,1,Baseline,1 +5604,A,23.00,4.00,2.00,Female,1,Baseline,8 +5605,C,18.00,1.00,5.00,Female,1,Baseline,5 +5606,C,21.00,2.00,8.00,Female,1,Baseline,16 +5607,A,22.00,0.00,0.00,Male,0,Baseline,0 +5608,A,36.00,28.0,1.00,Female,1,Baseline,28 +5610,A,35.00,3.00,1.00,Male,1,Baseline,3 +5611,A,40.00,7.00,2.00,Male,1,Baseline,14 +5612,B,40.00,0.00,0.00,Female,0,Baseline,0 +5613,B,22.00,3.00,3.00,Female,1,Baseline,9 +5615,C,33.00,0.00,0.00,Male,0,Baseline,0 +5616,A,26.00,2.00,6.00,Male,1,Baseline,12 +5617,B,19.00,4.00,8.00,Female,1,Baseline,32 +5618,C,18.00,2.00,1.00,Male,1,Baseline,2 +5619,C,23.00,1.00,1.00,Male,1,Baseline,1 +5620,A,25.00,2.00,1.00,Female,1,Baseline,2 +5621,C,39.00,10.0,1.00,Female,1,Baseline,10 +5623,C,35.00,1.00,2.00,Female,1,Baseline,2 +5624,A,18.00,1.00,1.00,Female,1,Baseline,1 +5625,A,24.00,3.00,6.00,Female,1,Baseline,18 +5626,C,21.00,2.00,2.00,Female,1,Baseline,4 +5627,B,31.00,20.0,1.00,Female,1,Baseline,20 +5629,C,20.00,0.00,0.00,Female,0,Baseline,0 +5630,C,22.00,4.00,4.00,Male,1,Baseline,16 +5631,A,34.00,0.00,0.00,Female,0,Baseline,0 +5633,C,41.00,9.00,2.00,Female,1,Baseline,18 +5634,A,58.00,1.00,1.00,Female,1,Baseline,1 +5635,A,18.00,5.00,6.00,Female,1,Baseline,30 +5636,B,19.00,2.00,2.00,Female,1,Baseline,4 +5637,C,24.00,4.00,10.0,Female,1,Baseline,40 +5638,B,25.00,0.00,0.00,Female,0,Baseline,0 +5640,C,23.00,0.00,0.00,Female,0,Baseline,0 +5641,B,20.00,1.00,1.00,Female,1,Baseline,1 +5642,C,30.00,3.00,1.00,Female,1,Baseline,3 +5643,C,26.00,0.00,0.00,Female,0,Baseline,0 +5644,A,22.00,1.00,5.00,Female,1,Baseline,5 +5645,A,20.00,2.00,2.00,Female,1,Baseline,4 +5646,C,22.00,0.00,0.00,Female,0,Baseline,0 +5647,A,24.00,15.0,2.00,Male,1,Baseline,30 +5648,A,20.00,1.00,6.00,Female,1,Baseline,6 +5649,B,18.00,0.00,0.00,Male,0,Baseline,0 +5650,C,20.00,4.00,2.00,Female,1,Baseline,8 +5651,A,22.00,4.00,6.00,Male,1,Baseline,24 +5652,C,22.00,5.00,3.00,Female,1,Baseline,15 +5655,B,20.00,7.00,2.00,Male,1,Baseline,14 +5656,C,22.00,7.00,2.00,Female,1,Baseline,14 +5657,C,23.00,8.00,2.00,Female,1,Baseline,16 +5659,A,21.00,3.00,4.00,Male,1,Baseline,12 +5660,C,20.00,4.00,2.00,Female,1,Baseline,8 +5661,B,21.00,2.00,3.00,Female,1,Baseline,6 +5662,C,22.00,2.00,2.00,Female,1,Baseline,4 +5663,C,20.00,0.00,0.00,Male,0,Baseline,0 +5664,C,21.00,9.00,2.00,Female,1,Baseline,18 +5665,A,20.00,15.0,1.00,Female,1,Baseline,15 +5666,A,22.00,4.00,2.00,Female,1,Baseline,8 +5669,C,21.00,5.00,2.00,Female,1,Baseline,10 +5670,A,30.00,6.00,1.00,Male,1,Baseline,6 +5671,A,21.00,4.00,3.00,Female,1,Baseline,12 +5672,A,20.00,2.00,2.00,Female,1,Baseline,4 +5673,B,21.00,11.0,6.00,Male,1,Baseline,66 +5674,B,20.00,1.00,7.00,Female,1,Baseline,7 +5675,A,24.00,7.00,3.00,Female,1,Baseline,21 +5676,B,21.00,3.00,2.00,Female,1,Baseline,6 +5677,C,26.00,8.00,2.00,Female,1,Baseline,16 +5678,A,20.00,1.00,3.00,Male,1,Baseline,3 +5679,C,19.00,0.00,0.00,Male,0,Baseline,0 +5681,C,30.00,0.00,0.00,Male,0,Baseline,0 +5682,C,23.00,0.00,0.00,Female,0,Baseline,0 +5683,B,22.00,3.00,3.00,Female,1,Baseline,9 +5684,C,22.00,4.00,6.00,Male,1,Baseline,24 +5685,A,20.00,10.0,1.00,Male,1,Baseline,10 +5686,B,24.00,20.0,1.00,Female,1,Baseline,20 +5687,C,37.00,8.00,3.00,Female,1,Baseline,24 +5688,A,20.00,5.00,4.00,Female,1,Baseline,20 +5689,A,23.00,3.00,1.00,Female,1,Baseline,3 +5691,A,23.00,7.00,2.00,Female,1,Baseline,14 +5693,C,35.00,2.00,1.00,Male,1,Baseline,2 +5694,B,38.00,27.0,5.00,Male,1,Baseline,135 +5695,C,23.00,6.00,1.00,Female,1,Baseline,6 +5696,C,19.00,0.00,0.00,Female,0,Baseline,0 +5697,C,21.00,7.00,2.00,Female,1,Baseline,14 +5698,C,19.00,9.00,8.00,Female,1,Baseline,72 +5700,B,18.00,1.00,2.00,Male,1,Baseline,2 +5701,B,25.00,10.0,1.00,Male,1,Baseline,10 +5702,C,21.00,0.00,0.00,Female,0,Baseline,0 +5703,B,19.00,4.00,5.00,Female,1,Baseline,20 +5704,B,45.00,3.00,1.00,Female,1,Baseline,3 +5705,A,37.00,0.00,0.00,Male,0,Baseline,0 +5706,B,42.00,0.00,0.00,Female,0,Baseline,0 +5707,B,23.00,4.00,2.00,Female,1,Baseline,8 +5708,C,18.00,3.00,2.00,Male,1,Baseline,6 +5709,B,25.00,0.00,0.00,Male,0,Baseline,0 +5710,B,36.00,0.00,0.00,Male,0,Baseline,0 +5711,A,21.00,5.00,2.00,Female,1,Baseline,10 +5713,B,25.00,2.00,3.00,Female,1,Baseline,6 +5715,C,24.00,2.00,2.00,Female,1,Baseline,4 +5716,A,29.00,0.00,0.00,Female,0,Baseline,0 +5717,B,29.00,20.0,2.00,Female,1,Baseline,40 +5719,B,21.00,4.00,5.00,Female,1,Baseline,20 +5720,B,37.00,3.00,3.00,Male,1,Baseline,9 +5721,C,20.00,5.00,2.00,Female,1,Baseline,10 +5722,B,19.00,1.00,2.00,Female,1,Baseline,2 +5723,A,18.00,4.00,12.0,Male,1,Baseline,48 +5724,B,21.00,3.00,7.00,Female,1,Baseline,21 +5725,B,28.00,2.00,1.00,Female,1,Baseline,2 +5726,C,24.00,0.00,0.00,Male,0,Baseline,0 +5727,B,18.00,7.00,1.00,Male,1,Baseline,7 +5729,C,24.00,6.00,2.00,Female,1,Baseline,12 +5730,C,20.00,3.00,3.00,Male,1,Baseline,9 +5731,A,34.00,0.00,0.00,Male,0,Baseline,0 +5733,B,21.00,5.00,4.00,Female,1,Baseline,20 +5734,B,19.00,3.00,2.00,Female,1,Baseline,6 +5736,A,21.00,0.00,0.00,Male,0,Baseline,0 +5737,C,19.00,0.00,0.00,Male,0,Baseline,0 +5739,A,21.00,1.00,2.00,Female,1,Baseline,2 +5740,A,22.00,4.00,5.00,Female,1,Baseline,20 +5741,C,20.00,3.00,1.00,Female,1,Baseline,3 +5742,B,25.00,0.00,0.00,Female,0,Baseline,0 +5743,B,21.00,3.00,4.00,Female,1,Baseline,12 +5744,A,19.00,8.00,4.00,Female,1,Baseline,32 +5745,C,19.00,3.00,4.00,Female,1,Baseline,12 +5746,B,19.00,6.00,5.00,Female,1,Baseline,30 +5747,A,21.00,0.00,0.00,Female,0,Baseline,0 +5748,C,19.00,3.00,4.00,Male,1,Baseline,12 +5749,A,23.00,0.00,0.00,Female,0,Baseline,0 +5750,C,19.00,0.00,0.00,Female,0,Baseline,0 +5751,C,34.00,0.00,0.00,Male,0,Baseline,0 +5752,A,22.00,3.00,9.00,Male,1,Baseline,27 +5753,C,21.00,0.00,0.00,Female,0,Baseline,0 +5754,C,32.00,8.00,4.00,Female,1,Baseline,32 +5755,B,20.00,4.00,11.0,Female,1,Baseline,44 +5756,A,20.00,3.00,3.00,Female,1,Baseline,9 +5757,B,19.00,4.00,1.00,Female,1,Baseline,4 +5758,A,23.00,2.00,1.00,Female,1,Baseline,2 +5759,B,31.00,20.0,3.00,Female,1,Baseline,60 +5760,C,18.00,7.00,13.0,Male,1,Baseline,91 +5761,C,20.00,1.00,1.00,Female,1,Baseline,1 +5762,B,20.00,7.00,3.00,Female,1,Baseline,21 +5763,C,25.00,4.00,2.00,Female,1,Baseline,8 +5765,B,22.00,5.00,1.00,Female,1,Baseline,5 +5766,C,41.00,22.0,1.00,Female,1,Baseline,22 +5767,B,21.00,3.00,6.00,Male,1,Baseline,18 +5768,B,18.00,5.00,6.00,Female,1,Baseline,30 +5769,A,36.00,0.00,0.00,Female,0,Baseline,0 +5770,C,30.00,7.00,4.00,Female,1,Baseline,28 +5771,B,23.00,7.00,1.00,Male,1,Baseline,7 +5773,C,38.00,0.00,0.00,Female,0,Baseline,0 +5774,B,19.00,4.00,2.00,Female,1,Baseline,8 +5776,A,23.00,0.00,0.00,Female,0,Baseline,0 +5777,A,21.00,8.00,23.0,Female,1,Baseline,184 +5778,B,24.00,21.0,2.00,Female,1,Baseline,42 +5779,A,22.00,5.00,1.00,Male,1,Baseline,5 +5781,C,27.00,4.00,2.00,Male,1,Baseline,8 +5782,A,21.00,4.00,5.00,Male,1,Baseline,20 +5783,A,29.00,4.00,2.00,Female,1,Baseline,8 +5784,C,22.00,4.00,2.00,Female,1,Baseline,8 +5785,B,28.00,0.00,0.00,Male,0,Baseline,0 +5786,B,21.00,1.00,2.00,Female,1,Baseline,2 +5787,B,20.00,6.00,8.00,Female,1,Baseline,48 +5788,B,54.00,6.00,2.00,Male,1,Baseline,12 +5789,B,18.00,7.00,1.00,Female,1,Baseline,7 +5790,A,19.00,0.00,0.00,Female,0,Baseline,0 +5791,C,33.00,4.00,2.00,Male,1,Baseline,8 +5793,C,21.00,1.00,1.00,Female,1,Baseline,1 +5794,A,18.00,5.00,8.00,Male,1,Baseline,40 +5795,A,22.00,0.00,0.00,Female,0,Baseline,0 +5797,C,19.00,7.00,6.00,Male,1,Baseline,42 +5798,B,24.00,6.00,1.00,Female,1,Baseline,6 +5799,C,21.00,2.00,3.00,Female,1,Baseline,6 +5801,B,20.00,12.0,3.00,Female,1,Baseline,36 +5802,C,21.00,5.00,2.00,Male,1,Baseline,10 +5803,C,35.00,28.0,2.00,Female,1,Baseline,56 +5805,B,21.00,0.00,0.00,Female,0,Baseline,0 +5806,A,38.00,0.00,0.00,Female,0,Baseline,0 +5808,B,34.00,24.0,2.00,Male,1,Baseline,48 +5810,A,23.00,10.0,1.00,Female,1,Baseline,10 +5811,A,26.00,7.00,3.00,Male,1,Baseline,21 +5813,B,22.00,2.00,5.00,Female,1,Baseline,10 +5814,B,22.00,18.0,2.00,Female,1,Baseline,36 +5815,C,32.00,0.00,0.00,Female,0,Baseline,0 +5816,A,49.00,0.00,0.00,Female,0,Baseline,0 +5817,C,21.00,0.00,0.00,Female,0,Baseline,0 +5819,A,22.00,0.00,0.00,Female,0,Baseline,0 +5820,C,21.00,3.00,3.00,Female,1,Baseline,9 +5821,A,35.00,0.00,0.00,Male,0,Baseline,0 +5822,B,40.00,4.00,1.00,Female,1,Baseline,4 +5824,C,24.00,6.00,3.00,Female,1,Baseline,18 +5825,A,22.00,1.00,4.00,Male,1,Baseline,4 +5826,C,20.00,4.00,4.00,Female,1,Baseline,16 +5827,C,19.00,10.0,10.0,Female,1,Baseline,100 +5829,C,22.00,18.0,2.00,Female,1,Baseline,36 +5830,C,28.00,7.00,1.00,Female,1,Baseline,7 +5831,B,24.00,14.0,1.00,Female,1,Baseline,14 +5832,C,21.00,3.00,6.00,Female,1,Baseline,18 +5833,B,22.00,3.00,4.00,Male,1,Baseline,12 +5834,C,19.00,6.00,8.00,Female,1,Baseline,48 +5835,B,20.00,4.00,12.0,Female,1,Baseline,48 +5836,A,21.00,1.00,2.00,Female,1,Baseline,2 +5837,C,23.00,5.00,1.00,Female,1,Baseline,5 +5839,A,24.00,0.00,0.00,Male,0,Baseline,0 +5840,B,22.00,1.00,4.00,Male,1,Baseline,4 +5841,B,23.00,4.00,2.00,Male,1,Baseline,8 +5842,C,25.00,0.00,0.00,Female,0,Baseline,0 +5843,B,18.00,0.00,0.00,Female,0,Baseline,0 +5844,A,21.00,0.00,0.00,Female,0,Baseline,0 +5845,B,36.00,6.00,1.00,Female,1,Baseline,6 +5847,A,39.00,0.00,0.00,Male,0,Baseline,0 +5848,A,22.00,1.00,4.00,Male,1,Baseline,4 +5849,B,21.00,21.0,4.00,Male,1,Baseline,84 +5850,C,21.00,4.00,2.00,Female,1,Baseline,8 +5851,A,22.00,2.00,4.00,Female,1,Baseline,8 +5852,B,22.00,1.00,1.00,Female,1,Baseline,1 +5853,B,29.00,4.00,2.00,Female,1,Baseline,8 +5854,C,22.00,0.00,0.00,Female,0,Baseline,0 +5855,B,23.00,19.0,3.00,Female,1,Baseline,57 +5856,B,23.00,2.00,2.00,Female,1,Baseline,4 +5857,B,34.00,8.00,2.00,Female,1,Baseline,16 +5858,B,20.00,0.00,0.00,Female,0,Baseline,0 +5859,A,22.00,2.00,6.00,Male,1,Baseline,12 +5860,C,21.00,10.0,3.00,Female,1,Baseline,30 +5861,A,43.00,0.00,0.00,Female,0,Baseline,0 +5863,C,20.00,8.00,10.0,Male,1,Baseline,80 +5864,B,25.00,6.00,1.00,Female,1,Baseline,6 +5865,C,22.00,0.00,0.00,Female,0,Baseline,0 +5867,A,38.00,15.0,1.00,Male,1,Baseline,15 +5868,C,18.00,1.00,2.00,Female,1,Baseline,2 +5869,B,33.00,14.0,1.00,Male,1,Baseline,14 +5870,A,20.00,4.00,5.00,Male,1,Baseline,20 +5871,C,20.00,4.00,5.00,Male,1,Baseline,20 +5872,A,33.00,0.00,0.00,Female,0,Baseline,0 +5873,B,21.00,4.00,6.00,Female,1,Baseline,24 +5875,A,21.00,12.0,1.00,Male,1,Baseline,12 +5876,C,18.00,6.00,9.00,Female,1,Baseline,54 +5877,A,21.00,2.00,6.00,Female,1,Baseline,12 +5878,C,28.00,4.00,2.00,Female,1,Baseline,8 +5879,A,20.00,6.00,1.00,Male,1,Baseline,6 +5880,A,18.00,4.00,5.00,Female,1,Baseline,20 +5881,B,21.00,10.0,3.00,Female,1,Baseline,30 +5882,B,20.00,2.00,8.00,Male,1,Baseline,16 +5883,C,45.00,10.0,3.00,Female,1,Baseline,30 +5884,C,18.00,3.00,2.00,Female,1,Baseline,6 +5885,A,22.00,8.00,3.00,Male,1,Baseline,24 +5886,B,21.00,4.00,7.00,Female,1,Baseline,28 +5887,A,20.00,2.00,2.00,Female,1,Baseline,4 +5888,A,24.00,3.00,1.00,Female,1,Baseline,3 +5889,A,21.00,14.0,4.00,Female,1,Baseline,56 +5890,B,33.00,0.00,0.00,Female,0,Baseline,0 +5891,B,53.00,7.00,3.00,Female,1,Baseline,21 +5892,C,18.00,9.00,3.00,Male,1,Baseline,27 +5893,B,19.00,0.00,0.00,Female,0,Baseline,0 +5894,C,37.00,8.00,1.00,Male,1,Baseline,8 +5895,A,19.00,6.00,13.0,Male,1,Baseline,78 +5896,C,19.00,1.00,2.00,Female,1,Baseline,2 +5898,B,43.00,8.00,1.00,Female,1,Baseline,8 +5899,C,21.00,0.00,0.00,Female,0,Baseline,0 +5901,A,29.00,6.00,2.00,Female,1,Baseline,12 +5902,A,18.00,4.00,3.00,Female,1,Baseline,12 +5903,C,18.00,4.00,3.00,Female,1,Baseline,12 +5904,B,30.00,4.00,1.00,Female,1,Baseline,4 +5905,B,26.00,1.00,1.00,Female,1,Baseline,1 +5906,A,35.00,20.0,2.00,Male,1,Baseline,40 +5907,B,19.00,0.00,0.00,Female,0,Baseline,0 +5908,B,27.00,6.00,4.00,Male,1,Baseline,24 +5909,B,50.00,24.0,2.00,Female,1,Baseline,48 +5910,B,18.00,0.00,0.00,Female,0,Baseline,0 +5911,B,23.00,9.00,4.00,Male,1,Baseline,36 +5912,C,19.00,1.00,3.00,Female,1,Baseline,3 +5913,B,34.00,10.0,1.00,Female,1,Baseline,10 +5914,A,32.00,5.00,1.00,Female,1,Baseline,5 +5915,C,23.00,0.00,0.00,Female,0,Baseline,0 +5916,A,21.00,5.00,2.00,Male,1,Baseline,10 +5917,A,34.00,0.00,0.00,Male,0,Baseline,0 +5919,A,32.00,0.00,0.00,Male,0,Baseline,0 +5920,A,20.00,8.00,2.00,Female,1,Baseline,16 +5921,B,32.00,5.00,1.00,Male,1,Baseline,5 +5922,A,22.00,8.00,7.00,Female,1,Baseline,56 +5924,C,23.00,5.00,3.00,Male,1,Baseline,15 +5925,C,18.00,0.00,0.00,Male,0,Baseline,0 +5926,B,24.00,5.00,1.00,Male,1,Baseline,5 +5927,A,34.00,0.00,0.00,Female,0,Baseline,0 +5929,B,19.00,4.00,4.00,Female,1,Baseline,16 +5930,B,25.00,0.00,0.00,Male,0,Baseline,0 +5931,C,21.00,0.00,0.00,Female,0,Baseline,0 +5933,B,22.00,0.00,0.00,Female,0,Baseline,0 +5934,B,20.00,3.00,1.00,Female,1,Baseline,3 +5935,A,22.00,2.00,20.0,Male,1,Baseline,40 +5936,C,21.00,9.00,3.00,Male,1,Baseline,27 +5937,A,20.00,8.00,4.00,Female,1,Baseline,32 +5938,B,22.00,8.00,6.00,Male,1,Baseline,48 +5939,A,25.00,2.00,3.00,Female,1,Baseline,6 +5940,B,21.00,2.00,1.00,Male,1,Baseline,2 +5941,B,18.00,3.00,12.0,Female,1,Baseline,36 +5942,A,24.00,8.00,1.00,Male,1,Baseline,8 +5944,C,21.00,4.00,8.00,Female,1,Baseline,32 +5945,C,21.00,4.00,2.00,Male,1,Baseline,8 +5946,C,46.00,26.0,1.00,Female,1,Baseline,26 +5947,B,36.00,0.00,0.00,Female,0,Baseline,0 +5948,C,19.00,1.00,5.00,Female,1,Baseline,5 +5949,C,20.00,8.00,8.00,Male,1,Baseline,64 +5950,B,26.00,10.0,1.00,Female,1,Baseline,10 +5951,B,24.00,21.0,1.00,Female,1,Baseline,21 +5952,C,19.00,6.00,4.00,Female,1,Baseline,24 +5953,B,26.00,4.00,12.0,Male,1,Baseline,48 +5954,A,19.00,8.00,13.0,Male,1,Baseline,104 +5955,A,33.00,10.0,1.00,Male,1,Baseline,10 +5956,B,25.00,24.0,4.00,Male,1,Baseline,96 +5958,B,24.00,1.00,3.00,Female,1,Baseline,3 +5959,A,20.00,2.00,11.0,Female,1,Baseline,22 +5960,C,21.00,4.00,12.0,Male,1,Baseline,48 +5961,C,21.00,2.00,2.00,Male,1,Baseline,4 +5963,B,18.00,0.00,0.00,Male,0,Baseline,0 +5964,B,21.00,0.00,0.00,Female,0,Baseline,0 +5965,A,21.00,2.00,5.00,Female,1,Baseline,10 +5966,B,25.00,4.00,1.00,Female,1,Baseline,4 +5967,C,24.00,7.00,2.00,Female,1,Baseline,14 +5968,B,19.00,4.00,7.00,Male,1,Baseline,28 +5969,C,25.00,1.00,9.00,Male,1,Baseline,9 +5970,A,18.00,4.00,6.00,Female,1,Baseline,24 +5972,A,24.00,6.00,6.00,Female,1,Baseline,36 +5973,C,32.00,0.00,0.00,Female,0,Baseline,0 +5974,A,24.00,0.00,0.00,Female,0,Baseline,0 +5976,A,19.00,2.00,1.00,Female,1,Baseline,2 +5977,C,23.00,6.00,3.00,Female,1,Baseline,18 +5978,B,28.00,14.0,5.00,Male,1,Baseline,70 +5979,B,21.00,6.00,2.00,Female,1,Baseline,12 +5980,B,34.00,14.0,2.00,Male,1,Baseline,28 +5981,C,25.00,9.00,1.00,Male,1,Baseline,9 +5982,C,21.00,4.00,4.00,Female,1,Baseline,16 +5983,C,21.00,0.00,0.00,Female,0,Baseline,0 +5984,A,21.00,5.00,2.00,Female,1,Baseline,10 +5985,A,22.00,1.00,3.00,Female,1,Baseline,3 +5986,C,21.00,5.00,8.00,Male,1,Baseline,40 +5987,C,23.00,0.00,0.00,Male,0,Baseline,0 +5988,A,24.00,5.00,4.00,Female,1,Baseline,20 +5989,B,20.00,4.00,2.00,Female,1,Baseline,8 +5990,A,18.00,1.00,2.00,Female,1,Baseline,2 +5992,A,24.00,0.00,0.00,Female,0,Baseline,0 +5993,B,21.00,4.00,2.00,Female,1,Baseline,8 +5994,B,25.00,9.00,3.00,Male,1,Baseline,27 +5995,C,18.00,14.0,2.00,Male,1,Baseline,28 +5996,C,33.00,4.00,2.00,Male,1,Baseline,8 +5997,A,40.00,4.00,2.00,Female,1,Baseline,8 +5999,A,21.00,1.00,4.00,Male,1,Baseline,4 +6000,B,45.00,1.00,1.00,Male,1,Baseline,1 +6001,B,18.00,20.0,2.00,Male,1,Baseline,40 +6002,C,31.00,5.00,2.00,Female,1,Baseline,10 +6003,C,21.00,12.0,3.00,Male,1,Baseline,36 +6004,C,22.00,0.00,0.00,Male,0,Baseline,0 +6005,A,26.00,4.00,4.00,Female,1,Baseline,16 +6006,A,29.00,6.00,1.00,Male,1,Baseline,6 +6007,A,40.00,4.00,3.00,Female,1,Baseline,12 +6008,B,33.00,0.00,0.00,Male,0,Baseline,0 +6010,A,23.00,7.00,4.00,Female,1,Baseline,28 +6011,C,47.00,5.00,2.00,Male,1,Baseline,10 +6012,A,20.00,10.0,3.00,Male,1,Baseline,30 +6013,B,24.00,4.00,2.00,Female,1,Baseline,8 +6014,C,19.00,7.00,10.0,Female,1,Baseline,70 +6015,B,20.00,10.0,8.00,Female,1,Baseline,80 +6016,C,24.00,12.0,3.00,Female,1,Baseline,36 +6017,B,18.00,5.00,8.00,Male,1,Baseline,40 +6018,C,21.00,6.00,4.00,Female,1,Baseline,24 +6019,A,27.00,2.00,4.00,Female,1,Baseline,8 +6020,A,21.00,8.00,5.00,Female,1,Baseline,40 +6021,C,31.00,7.00,2.00,Male,1,Baseline,14 +6022,B,51.00,15.0,1.00,Female,1,Baseline,15 +6023,C,23.00,8.00,9.00,Male,1,Baseline,72 +6024,C,21.00,18.0,2.00,Male,1,Baseline,36 +6025,B,23.00,5.00,2.00,Male,1,Baseline,10 +6027,B,22.00,7.00,12.0,Male,1,Baseline,84 +6028,C,19.00,0.00,0.00,Female,0,Baseline,0 +6029,C,20.00,8.00,5.00,Female,1,Baseline,40 +6031,B,29.00,2.00,5.00,Female,1,Baseline,10 +6032,A,27.00,4.00,2.00,Female,1,Baseline,8 +6033,C,19.00,7.00,3.00,Male,1,Baseline,21 +6034,A,20.00,7.00,12.0,Male,1,Baseline,84 +6036,A,23.00,0.00,0.00,Female,0,Baseline,0 +6037,A,20.00,4.00,5.00,Female,1,Baseline,20 +6038,A,41.00,10.0,5.00,Female,1,Baseline,50 +6039,A,21.00,4.00,6.00,Male,1,Baseline,24 +6041,C,21.00,2.00,3.00,Female,1,Baseline,6 +6042,B,24.00,25.0,2.00,Female,1,Baseline,50 +6043,A,26.00,1.00,3.00,Female,1,Baseline,3 +6044,B,26.00,3.00,2.00,Female,1,Baseline,6 +6045,C,20.00,5.00,5.00,Female,1,Baseline,25 +6046,B,22.00,4.00,7.00,Female,1,Baseline,28 +6047,A,30.00,2.00,10.0,Female,1,Baseline,20 +6048,B,49.00,4.00,1.00,Male,1,Baseline,4 +6049,A,41.00,8.00,2.00,Female,1,Baseline,16 +6050,B,19.00,2.00,2.00,Male,1,Baseline,4 +6051,C,38.00,16.0,2.00,Male,1,Baseline,32 +6052,C,23.00,0.00,0.00,Female,0,Baseline,0 +6053,B,25.00,23.0,1.00,Female,1,Baseline,23 +6054,C,21.00,4.00,1.00,Female,1,Baseline,4 +6055,C,20.00,2.00,12.0,Male,1,Baseline,24 +6056,B,54.00,8.00,1.00,Female,1,Baseline,8 +6057,B,20.00,0.00,0.00,Female,0,Baseline,0 +6058,C,18.00,2.00,5.00,Male,1,Baseline,10 +6059,A,18.00,1.00,1.00,Female,1,Baseline,1 +6060,C,22.00,1.00,1.00,Male,1,Baseline,1 +6061,B,25.00,16.0,2.00,Female,1,Baseline,32 +6062,B,20.00,2.00,12.0,Male,1,Baseline,24 +6063,C,26.00,22.0,1.00,Male,1,Baseline,22 +6065,A,18.00,0.00,0.00,Male,0,Baseline,0 +6066,A,20.00,1.00,2.00,Female,1,Baseline,2 +6069,B,22.00,3.00,2.00,Male,1,Baseline,6 +6070,C,18.00,12.0,1.00,Male,1,Baseline,12 +6071,C,20.00,2.00,2.00,Female,1,Baseline,4 +6072,A,29.00,2.00,2.00,Female,1,Baseline,4 +6073,C,20.00,0.00,0.00,Female,0,Baseline,0 +6074,C,23.00,2.00,1.00,Female,1,Baseline,2 +6075,A,25.00,6.00,8.00,Male,1,Baseline,48 +6076,B,20.00,10.0,4.00,Female,1,Baseline,40 +6077,B,20.00,7.00,4.00,Male,1,Baseline,28 +6078,C,21.00,2.00,4.00,Female,1,Baseline,8 +6079,B,19.00,0.00,0.00,Female,0,Baseline,0 +6080,C,47.00,3.00,1.00,Female,1,Baseline,3 +6081,A,20.00,2.00,5.00,Female,1,Baseline,10 +6082,C,37.00,21.0,4.00,Male,1,Baseline,84 +6083,C,20.00,3.00,5.00,Female,1,Baseline,15 +6084,B,21.00,3.00,5.00,Female,1,Baseline,15 +6085,A,25.00,3.00,5.00,Male,1,Baseline,15 +6086,B,18.00,7.00,3.00,Male,1,Baseline,21 +6087,C,21.00,3.00,2.00,Male,1,Baseline,6 +6088,B,21.00,12.0,1.00,Female,1,Baseline,12 +6089,C,20.00,1.00,1.00,Female,1,Baseline,1 +6090,A,25.00,0.00,0.00,Male,0,Baseline,0 +6091,C,21.00,1.00,4.00,Female,1,Baseline,4 +6092,A,25.00,1.00,1.00,Male,1,Baseline,1 +6093,A,19.00,2.00,2.00,Female,1,Baseline,4 +6094,C,20.00,3.00,3.00,Female,1,Baseline,9 +6095,C,22.00,4.00,4.00,Female,1,Baseline,16 +6096,A,41.00,7.00,2.00,Male,1,Baseline,14 +6097,C,19.00,0.00,0.00,Male,0,Baseline,0 +6098,B,19.00,4.00,8.00,Male,1,Baseline,32 +6099,B,31.00,6.00,1.00,Female,1,Baseline,6 +6100,C,23.00,5.00,2.00,Male,1,Baseline,10 +6101,A,45.00,3.00,1.00,Female,1,Baseline,3 +6102,B,20.00,6.00,3.00,Female,1,Baseline,18 +6103,B,29.00,12.0,2.00,Female,1,Baseline,24 +6105,C,19.00,7.00,12.0,Male,1,Baseline,84 +6106,B,20.00,5.00,2.00,Male,1,Baseline,10 +6107,C,20.00,3.00,2.00,Female,1,Baseline,6 +6108,C,20.00,5.00,3.00,Male,1,Baseline,15 +6109,A,22.00,2.00,1.00,Female,1,Baseline,2 +6111,B,23.00,0.00,0.00,Female,0,Baseline,0 +6112,C,21.00,1.00,3.00,Female,1,Baseline,3 +6113,B,22.00,0.00,0.00,Female,0,Baseline,0 +6114,C,33.00,7.00,2.00,Male,1,Baseline,14 +6115,B,22.00,0.00,0.00,Male,0,Baseline,0 +6116,A,23.00,6.00,1.00,Female,1,Baseline,6 +6117,A,19.00,0.00,0.00,Female,0,Baseline,0 +6118,C,21.00,1.00,3.00,Male,1,Baseline,3 +6119,C,21.00,18.0,2.00,Male,1,Baseline,36 +6120,C,21.00,0.00,0.00,Male,0,Baseline,0 +6121,B,21.00,8.00,3.00,Male,1,Baseline,24 +6122,B,19.00,1.00,8.00,Male,1,Baseline,8 +6123,C,20.00,0.00,0.00,Male,0,Baseline,0 +6124,A,23.00,6.00,2.00,Male,1,Baseline,12 +6125,B,26.00,2.00,2.00,Male,1,Baseline,4 +6126,C,20.00,2.00,6.00,Male,1,Baseline,12 +6127,B,23.00,8.00,2.00,Male,1,Baseline,16 +6128,B,19.00,6.00,10.0,Male,1,Baseline,60 +6129,A,19.00,2.00,5.00,Female,1,Baseline,10 +6130,B,20.00,10.0,9.00,Male,1,Baseline,90 +6131,A,22.00,4.00,6.00,Male,1,Baseline,24 +6132,B,23.00,7.00,5.00,Female,1,Baseline,35 +6133,B,21.00,5.00,5.00,Female,1,Baseline,25 +6134,C,23.00,0.00,0.00,Male,0,Baseline,0 +6135,B,19.00,2.00,5.00,Male,1,Baseline,10 +6136,B,21.00,4.00,2.00,Female,1,Baseline,8 +6138,A,32.00,0.00,0.00,Female,0,Baseline,0 +6139,B,46.00,6.00,2.00,Female,1,Baseline,12 +6140,A,21.00,6.00,15.0,Male,1,Baseline,90 +6141,A,25.00,3.00,3.00,Female,1,Baseline,9 +6143,A,22.00,8.00,5.00,Female,1,Baseline,40 +6144,B,38.00,0.00,0.00,Male,0,Baseline,0 +6145,C,39.00,1.00,1.00,Female,1,Baseline,1 +6146,A,20.00,8.00,4.00,Male,1,Baseline,32 +6147,C,24.00,4.00,1.00,Female,1,Baseline,4 +6149,A,33.00,0.00,0.00,Female,0,Baseline,0 +6151,C,19.00,1.00,12.0,Male,1,Baseline,12 +6152,C,18.00,1.00,2.00,Female,1,Baseline,2 +6153,A,21.00,0.00,0.00,Female,0,Baseline,0 +6154,B,19.00,0.00,0.00,Male,0,Baseline,0 +6155,C,44.00,8.00,2.00,Female,1,Baseline,16 +6156,B,36.00,7.00,3.00,Female,1,Baseline,21 +6157,C,19.00,8.00,7.00,Female,1,Baseline,56 +6158,A,21.00,3.00,3.00,Female,1,Baseline,9 +6159,B,24.00,15.0,1.00,Female,1,Baseline,15 +6160,C,21.00,4.00,8.00,Male,1,Baseline,32 +6161,A,28.00,8.00,3.00,Female,1,Baseline,24 +6162,B,22.00,7.00,2.00,Female,1,Baseline,14 +6163,B,23.00,2.00,1.00,Female,1,Baseline,2 +6164,B,22.00,4.00,1.00,Female,1,Baseline,4 +6165,B,21.00,3.00,2.00,Female,1,Baseline,6 +6166,A,23.00,9.00,1.00,Female,1,Baseline,9 +6167,A,19.00,0.00,0.00,Male,0,Baseline,0 +6168,B,18.00,5.00,6.00,Male,1,Baseline,30 +6169,A,20.00,7.00,4.00,Male,1,Baseline,28 +6170,A,28.00,2.00,4.00,Male,1,Baseline,8 +6171,C,19.00,1.00,3.00,Female,1,Baseline,3 +6172,A,18.00,1.00,4.00,Male,1,Baseline,4 +6173,B,22.00,7.00,1.00,Female,1,Baseline,7 +6174,B,20.00,4.00,2.00,Female,1,Baseline,8 +6175,B,20.00,0.00,0.00,Male,0,Baseline,0 +6177,A,51.00,6.00,2.00,Female,1,Baseline,12 +6178,C,20.00,0.00,0.00,Female,0,Baseline,0 +6179,B,21.00,7.00,2.00,Female,1,Baseline,14 +6180,C,36.00,3.00,15.0,Male,1,Baseline,45 +6182,B,39.00,0.00,0.00,Female,0,Baseline,0 +6183,C,25.00,7.00,2.00,Male,1,Baseline,14 +6184,A,22.00,2.00,3.00,Female,1,Baseline,6 +6185,A,22.00,0.00,0.00,Male,0,Baseline,0 +6186,C,22.00,11.0,2.00,Female,1,Baseline,22 +6187,B,23.00,1.00,2.00,Male,1,Baseline,2 +6188,A,22.00,2.00,1.00,Female,1,Baseline,2 +6189,A,18.00,6.00,7.00,Female,1,Baseline,42 +6191,A,21.00,0.00,0.00,Female,0,Baseline,0 +6192,A,30.00,18.0,2.00,Female,1,Baseline,36 +6193,A,20.00,4.00,14.0,Male,1,Baseline,56 +6194,B,21.00,1.00,3.00,Female,1,Baseline,3 +6195,A,32.00,0.00,0.00,Male,0,Baseline,0 +6196,B,19.00,4.00,2.00,Female,1,Baseline,8 +6197,A,44.00,21.0,2.00,Female,1,Baseline,42 +6198,B,22.00,4.00,1.00,Female,1,Baseline,4 +6199,B,27.00,15.0,1.00,Male,1,Baseline,15 +6200,C,20.00,14.0,4.00,Male,1,Baseline,56 +6202,A,19.00,2.00,5.00,Male,1,Baseline,10 +6203,B,21.00,0.00,0.00,Female,0,Baseline,0 +6204,B,27.00,0.00,0.00,Female,0,Baseline,0 +6205,A,29.00,0.00,0.00,Male,0,Baseline,0 +6206,B,20.00,1.00,5.00,Female,1,Baseline,5 +6207,A,29.00,8.00,3.00,Male,1,Baseline,24 +6208,B,31.00,0.00,0.00,Female,0,Baseline,0 +6209,A,50.00,8.00,1.00,Female,1,Baseline,8 +6210,B,20.00,8.00,4.00,Female,1,Baseline,32 +6211,B,37.00,7.00,1.00,Female,1,Baseline,7 +6212,B,19.00,8.00,5.00,Female,1,Baseline,40 +6213,B,45.00,12.0,1.00,Male,1,Baseline,12 +6214,C,19.00,12.0,5.00,Male,1,Baseline,60 +6215,C,21.00,2.00,5.00,Male,1,Baseline,10 +6216,A,21.00,12.0,8.00,Male,1,Baseline,96 +6217,C,22.00,3.00,1.00,Female,1,Baseline,3 +6218,C,21.00,3.00,7.00,Female,1,Baseline,21 +6219,B,31.00,6.00,5.00,Male,1,Baseline,30 +6220,C,19.00,1.00,2.00,Female,1,Baseline,2 +6221,A,26.00,1.00,2.00,Female,1,Baseline,2 +6222,A,23.00,0.00,0.00,Male,0,Baseline,0 +6224,C,52.00,0.00,0.00,Female,0,Baseline,0 +6225,A,25.00,0.00,0.00,Male,0,Baseline,0 +6226,C,26.00,4.00,1.00,Female,1,Baseline,4 +6227,C,25.00,3.00,1.00,Female,1,Baseline,3 +6228,B,30.00,6.00,3.00,Female,1,Baseline,18 +6229,A,25.00,7.00,4.00,Male,1,Baseline,28 +6230,C,47.00,12.0,1.00,Female,1,Baseline,12 +6232,C,21.00,0.00,0.00,Female,0,Baseline,0 +6233,A,20.00,16.0,2.00,Male,1,Baseline,32 +6234,A,18.00,0.00,0.00,Female,0,Baseline,0 +6235,C,34.00,10.0,3.00,Male,1,Baseline,30 +6236,A,20.00,1.00,4.00,Female,1,Baseline,4 +6237,A,21.00,1.00,7.00,Male,1,Baseline,7 +6239,B,35.00,3.00,4.00,Male,1,Baseline,12 +6240,C,20.00,0.00,0.00,Female,0,Baseline,0 +6241,B,20.00,6.00,2.00,Female,1,Baseline,12 +6242,C,28.00,12.0,2.00,Male,1,Baseline,24 +6243,A,20.00,4.00,1.00,Female,1,Baseline,4 +6244,A,28.00,8.00,2.00,Female,1,Baseline,16 +6245,B,25.00,2.00,1.00,Male,1,Baseline,2 +6246,C,54.00,0.00,0.00,Female,0,Baseline,0 +6247,C,21.00,2.00,2.00,Male,1,Baseline,4 +6248,C,18.00,8.00,6.00,Female,1,Baseline,48 +6249,B,32.00,1.00,1.00,Male,1,Baseline,1 +6250,A,19.00,3.00,3.00,Female,1,Baseline,9 +6251,B,20.00,0.00,0.00,Female,0,Baseline,0 +6252,B,20.00,4.00,6.00,Male,1,Baseline,24 +6253,B,21.00,4.00,8.00,Female,1,Baseline,32 +6254,C,30.00,8.00,6.00,Male,1,Baseline,48 +6255,A,20.00,2.00,5.00,Female,1,Baseline,10 +6256,A,20.00,0.00,0.00,Female,0,Baseline,0 +6257,C,27.00,2.00,2.00,Male,1,Baseline,4 +6258,A,53.00,2.00,2.00,Female,1,Baseline,4 +6259,A,33.00,8.00,3.00,Male,1,Baseline,24 +6260,A,22.00,4.00,4.00,Female,1,Baseline,16 +6261,B,19.00,8.00,1.00,Male,1,Baseline,8 +6262,A,32.00,2.00,6.00,Male,1,Baseline,12 +6263,C,26.00,2.00,1.00,Female,1,Baseline,2 +6264,A,34.00,0.00,0.00,Female,0,Baseline,0 +6265,A,20.00,5.00,4.00,Female,1,Baseline,20 +6266,C,31.00,2.00,3.00,Female,1,Baseline,6 +6268,A,19.00,6.00,12.0,Female,1,Baseline,72 +6269,C,48.00,14.0,6.00,Female,1,Baseline,84 +6270,B,22.00,0.00,0.00,Female,0,Baseline,0 +6271,B,19.00,15.0,2.00,Male,1,Baseline,30 +6272,A,24.00,4.00,1.00,Female,1,Baseline,4 +6273,A,21.00,7.00,2.00,Female,1,Baseline,14 +6275,A,35.00,16.0,2.00,Female,1,Baseline,32 +6276,C,20.00,4.00,3.00,Female,1,Baseline,12 +6277,B,43.00,4.00,1.00,Male,1,Baseline,4 +6278,C,20.00,0.00,0.00,Male,0,Baseline,0 +6279,A,19.00,4.00,2.00,Female,1,Baseline,8 +6280,B,22.00,14.0,3.00,Female,1,Baseline,42 +6282,C,19.00,1.00,2.00,Female,1,Baseline,2 +6283,A,22.00,0.00,0.00,Male,0,Baseline,0 +6284,C,23.00,0.00,0.00,Female,0,Baseline,0 +6285,A,23.00,12.0,2.00,Female,1,Baseline,24 +6286,A,22.00,2.00,1.00,Female,1,Baseline,2 +6287,C,20.00,1.00,3.00,Female,1,Baseline,3 +6288,C,21.00,3.00,15.0,Male,1,Baseline,45 +6289,C,20.00,6.00,9.00,Male,1,Baseline,54 +6290,B,22.00,6.00,2.00,Female,1,Baseline,12 +6291,C,24.00,4.00,2.00,Female,1,Baseline,8 +6292,A,22.00,2.00,1.00,Male,1,Baseline,2 +6293,C,39.00,19.0,2.00,Male,1,Baseline,38 +6295,C,21.00,5.00,4.00,Male,1,Baseline,20 +6296,B,27.00,2.00,3.00,Female,1,Baseline,6 +6297,C,26.00,0.00,0.00,Female,0,Baseline,0 +6298,C,23.00,5.00,4.00,Male,1,Baseline,20 +6299,C,20.00,3.00,3.00,Female,1,Baseline,9 +6300,C,22.00,2.00,4.00,Female,1,Baseline,8 +6301,B,19.00,5.00,3.00,Female,1,Baseline,15 +6302,A,20.00,0.00,0.00,Female,0,Baseline,0 +6304,A,23.00,14.0,1.00,Male,1,Baseline,14 +6305,A,18.00,1.00,1.00,Female,1,Baseline,1 +6306,A,22.00,14.0,4.00,Male,1,Baseline,56 +6307,B,51.00,6.00,1.00,Female,1,Baseline,6 +6309,A,19.00,4.00,4.00,Female,1,Baseline,16 +6310,A,36.00,14.0,1.00,Male,1,Baseline,14 +6311,B,18.00,2.00,1.00,Female,1,Baseline,2 +6312,A,48.00,1.00,1.00,Female,1,Baseline,1 +6313,A,22.00,1.00,2.00,Male,1,Baseline,2 +6314,C,19.00,3.00,5.00,Female,1,Baseline,15 +6315,B,28.00,2.00,3.00,Female,1,Baseline,6 +6316,B,35.00,7.00,1.00,Female,1,Baseline,7 +6318,A,22.00,4.00,7.00,Male,1,Baseline,28 +6319,C,19.00,2.00,1.00,Female,1,Baseline,2 +6321,B,21.00,5.00,12.0,Male,1,Baseline,60 +6322,B,22.00,1.00,1.00,Female,1,Baseline,1 +6323,C,63.00,7.00,1.00,Female,1,Baseline,7 +6324,C,29.00,0.00,0.00,Female,0,Baseline,0 +6325,C,20.00,7.00,4.00,Female,1,Baseline,28 +6326,B,21.00,1.00,6.00,Male,1,Baseline,6 +6327,B,40.00,3.00,4.00,Female,1,Baseline,12 +6328,B,31.00,20.0,2.00,Female,1,Baseline,40 +6329,C,25.00,0.00,0.00,Female,0,Baseline,0 +6330,C,20.00,1.00,1.00,Male,1,Baseline,1 +6331,A,24.00,6.00,4.00,Female,1,Baseline,24 +6332,B,21.00,1.00,1.00,Female,1,Baseline,1 +6333,A,32.00,8.00,4.00,Male,1,Baseline,32 +6334,B,27.00,10.0,1.00,Female,1,Baseline,10 +6335,A,34.00,0.00,0.00,Female,0,Baseline,0 +6336,C,21.00,4.00,4.00,Female,1,Baseline,16 +6337,A,21.00,4.00,7.00,Female,1,Baseline,28 +6338,C,19.00,3.00,3.00,Male,1,Baseline,9 +6339,A,22.00,2.00,2.00,Female,1,Baseline,4 +6340,B,22.00,0.00,0.00,Female,0,Baseline,0 +6341,C,23.00,0.00,0.00,Female,0,Baseline,0 +6342,A,24.00,3.00,2.00,Female,1,Baseline,6 +6343,A,35.00,16.0,3.00,Male,1,Baseline,48 +6344,A,21.00,1.00,8.00,Female,1,Baseline,8 +6345,A,21.00,1.00,1.00,Female,1,Baseline,1 +6346,B,22.00,8.00,6.00,Male,1,Baseline,48 +6347,C,30.00,2.00,3.00,Male,1,Baseline,6 +6348,A,21.00,5.00,12.0,Male,1,Baseline,60 +6349,B,28.00,4.00,3.00,Female,1,Baseline,12 +6350,C,25.00,8.00,2.00,Female,1,Baseline,16 +6351,B,24.00,4.00,3.00,Female,1,Baseline,12 +6352,A,26.00,0.00,0.00,Female,0,Baseline,0 +6353,C,36.00,0.00,0.00,Male,0,Baseline,0 +6354,A,25.00,4.00,4.00,Female,1,Baseline,16 +6355,C,30.00,7.00,2.00,Female,1,Baseline,14 +6356,A,41.00,14.0,1.00,Female,1,Baseline,14 +6357,C,26.00,8.00,2.00,Female,1,Baseline,16 +6358,B,20.00,0.00,0.00,Male,0,Baseline,0 +6359,C,63.00,0.00,0.00,Male,0,Baseline,0 +6361,C,51.00,2.00,2.00,Male,1,Baseline,4 +6362,B,25.00,3.00,2.00,Female,1,Baseline,6 +6363,A,52.00,2.00,1.00,Female,1,Baseline,2 +6365,C,18.00,5.00,6.00,Female,1,Baseline,30 +6366,B,52.00,4.00,2.00,Male,1,Baseline,8 +6367,B,21.00,1.00,1.00,Female,1,Baseline,1 +6368,A,32.00,21.0,4.00,Male,1,Baseline,84 +6369,C,20.00,6.00,5.00,Male,1,Baseline,30 +6370,C,18.00,3.00,6.00,Female,1,Baseline,18 +6371,C,21.00,0.00,0.00,Female,0,Baseline,0 +6372,C,19.00,0.00,0.00,Male,0,Baseline,0 +6373,B,21.00,7.00,9.00,Male,1,Baseline,63 +6374,A,22.00,6.00,3.00,Female,1,Baseline,18 +6376,B,19.00,2.00,6.00,Female,1,Baseline,12 +6378,A,21.00,7.00,4.00,Male,1,Baseline,28 +6379,A,36.00,0.00,0.00,Male,0,Baseline,0 +6380,A,23.00,3.00,2.00,Male,1,Baseline,6 +6381,A,21.00,2.00,3.00,Male,1,Baseline,6 +6383,C,23.00,1.00,1.00,Female,1,Baseline,1 +6384,A,49.00,1.00,3.00,Female,1,Baseline,3 +6385,A,24.00,2.00,1.00,Female,1,Baseline,2 +6386,C,19.00,2.00,1.00,Female,1,Baseline,2 +6387,C,73.00,20.0,2.00,Male,1,Baseline,40 +6388,B,22.00,10.0,2.00,Female,1,Baseline,20 +6390,C,26.00,14.0,2.00,Female,1,Baseline,28 +6391,A,20.00,0.00,0.00,Female,0,Baseline,0 +6392,C,41.00,8.00,2.00,Male,1,Baseline,16 +6393,C,20.00,3.00,3.00,Female,1,Baseline,9 +6394,B,20.00,5.00,5.00,Female,1,Baseline,25 +6396,B,18.00,0.00,0.00,Female,0,Baseline,0 +6397,A,20.00,2.00,1.00,Female,1,Baseline,2 +6399,B,21.00,5.00,6.00,Female,1,Baseline,30 +6400,B,21.00,3.00,2.00,Female,1,Baseline,6 +6401,A,26.00,2.00,2.00,Female,1,Baseline,4 +6402,A,22.00,25.0,2.00,Male,1,Baseline,50 +6403,C,19.00,4.00,4.00,Female,1,Baseline,16 +6404,A,20.00,0.00,0.00,Male,0,Baseline,0 +6405,A,31.00,26.0,3.00,Female,1,Baseline,78 +6407,A,27.00,7.00,2.00,Male,1,Baseline,14 +6408,C,20.00,0.00,0.00,Female,0,Baseline,0 +6409,A,36.00,25.0,2.00,Male,1,Baseline,50 +6410,A,29.00,4.00,7.00,Male,1,Baseline,28 +6411,B,22.00,14.0,1.00,Male,1,Baseline,14 +6412,A,22.00,0.00,0.00,Female,0,Baseline,0 +6413,B,63.00,22.0,4.00,Male,1,Baseline,88 +6414,B,21.00,2.00,4.00,Female,1,Baseline,8 +6416,A,25.00,10.0,1.00,Female,1,Baseline,10 +6417,A,18.00,7.00,5.00,Female,1,Baseline,35 +6418,C,24.00,7.00,3.00,Male,1,Baseline,21 +6420,C,28.00,1.00,1.00,Female,1,Baseline,1 +6421,A,20.00,5.00,2.00,Female,1,Baseline,10 +6422,C,21.00,2.00,1.00,Female,1,Baseline,2 +6423,B,21.00,2.00,6.00,Male,1,Baseline,12 +6424,A,23.00,0.00,0.00,Male,0,Baseline,0 +6425,A,21.00,0.00,0.00,Male,0,Baseline,0 +6426,C,21.00,3.00,9.00,Male,1,Baseline,27 +6427,A,19.00,1.00,5.00,Female,1,Baseline,5 +6428,B,22.00,0.00,0.00,Male,0,Baseline,0 +6429,B,20.00,4.00,8.00,Male,1,Baseline,32 +6430,A,27.00,2.00,1.00,Male,1,Baseline,2 +6431,B,21.00,0.00,0.00,Female,0,Baseline,0 +6432,B,38.00,20.0,1.00,Female,1,Baseline,20 +6433,B,23.00,2.00,3.00,Male,1,Baseline,6 +6435,B,21.00,1.00,1.00,Male,1,Baseline,1 +6436,C,26.00,0.00,0.00,Female,0,Baseline,0 +6437,A,22.00,4.00,7.00,Female,1,Baseline,28 +6438,A,20.00,3.00,1.00,Female,1,Baseline,3 +6439,A,54.00,5.00,2.00,Female,1,Baseline,10 +6440,B,20.00,15.0,1.00,Female,1,Baseline,15 +6441,C,27.00,2.00,1.00,Female,1,Baseline,2 +6442,A,23.00,2.00,3.00,Female,1,Baseline,6 +6443,C,22.00,8.00,4.00,Female,1,Baseline,32 +6444,B,26.00,0.00,0.00,Female,0,Baseline,0 +6445,A,20.00,1.00,4.00,Female,1,Baseline,4 +6447,C,18.00,0.00,0.00,Female,0,Baseline,0 +6448,C,21.00,6.00,8.00,Female,1,Baseline,48 +6449,B,19.00,0.00,0.00,Female,0,Baseline,0 +6450,B,20.00,6.00,4.00,Female,1,Baseline,24 +6451,C,20.00,8.00,10.0,Female,1,Baseline,80 +6452,C,46.00,1.00,1.00,Female,1,Baseline,1 +6453,A,21.00,1.00,9.00,Female,1,Baseline,9 +6454,A,22.00,2.00,4.00,Female,1,Baseline,8 +6456,B,41.00,0.00,0.00,Male,0,Baseline,0 +6457,C,22.00,1.00,2.00,Male,1,Baseline,2 +6458,C,18.00,4.00,6.00,Female,1,Baseline,24 +6459,B,52.00,6.00,1.00,Female,1,Baseline,6 +6460,B,22.00,6.00,3.00,Female,1,Baseline,18 +6462,A,18.00,1.00,4.00,Female,1,Baseline,4 +6463,A,35.00,3.00,2.00,Male,1,Baseline,6 +6464,B,30.00,0.00,0.00,Female,0,Baseline,0 +6465,C,20.00,0.00,0.00,Male,0,Baseline,0 +6466,B,20.00,4.00,4.00,Female,1,Baseline,16 +6468,B,20.00,5.00,6.00,Female,1,Baseline,30 +6469,C,36.00,2.00,1.00,Female,1,Baseline,2 +6470,C,18.00,2.00,1.00,Female,1,Baseline,2 +6471,C,46.00,3.00,2.00,Male,1,Baseline,6 +6472,A,37.00,2.00,2.00,Female,1,Baseline,4 +6473,A,20.00,1.00,3.00,Female,1,Baseline,3 +6474,A,23.00,7.00,8.00,Female,1,Baseline,56 +6475,C,21.00,3.00,2.00,Female,1,Baseline,6 +6477,B,19.00,7.00,5.00,Male,1,Baseline,35 +6478,A,19.00,2.00,2.00,Male,1,Baseline,4 +6479,C,30.00,5.00,1.00,Female,1,Baseline,5 +6480,A,20.00,20.0,1.00,Female,1,Baseline,20 +6482,C,21.00,0.00,0.00,Female,0,Baseline,0 +6483,C,21.00,1.00,1.00,Male,1,Baseline,1 +6484,C,18.00,0.00,0.00,Female,0,Baseline,0 +6486,C,29.00,12.0,2.00,Female,1,Baseline,24 +6488,C,42.00,0.00,0.00,Male,0,Baseline,0 +6489,B,23.00,0.00,0.00,Female,0,Baseline,0 +6490,A,21.00,6.00,5.00,Male,1,Baseline,30 +6491,A,22.00,4.00,2.00,Male,1,Baseline,8 +6492,C,33.00,8.00,4.00,Female,1,Baseline,32 +6493,C,19.00,2.00,2.00,Female,1,Baseline,4 +6494,C,20.00,2.00,6.00,Male,1,Baseline,12 +6495,C,28.00,1.00,2.00,Male,1,Baseline,2 +6497,A,31.00,13.0,2.00,Female,1,Baseline,26 +6498,B,21.00,8.00,5.00,Female,1,Baseline,40 +6499,A,22.00,0.00,0.00,Male,0,Baseline,0 +6500,B,25.00,20.0,1.00,Female,1,Baseline,20 +6502,A,20.00,10.0,5.00,Female,1,Baseline,50 +6503,C,27.00,5.00,8.00,Male,1,Baseline,40 +6504,A,18.00,2.00,4.00,Female,1,Baseline,8 +6505,C,21.00,4.00,1.00,Female,1,Baseline,4 +6506,C,18.00,2.00,4.00,Female,1,Baseline,8 +6507,B,21.00,3.00,7.00,Male,1,Baseline,21 +6508,C,21.00,7.00,6.00,Female,1,Baseline,42 +6509,A,19.00,2.00,1.00,Male,1,Baseline,2 +6510,A,22.00,7.00,10.0,Female,1,Baseline,70 +6511,B,21.00,4.00,2.00,Female,1,Baseline,8 +6513,B,18.00,8.00,6.00,Female,1,Baseline,48 +6514,B,44.00,12.0,4.00,Female,1,Baseline,48 +6515,C,20.00,0.00,0.00,Male,0,Baseline,0 +6516,A,22.00,4.00,4.00,Male,1,Baseline,16 +6517,C,19.00,4.00,7.00,Male,1,Baseline,28 +6518,B,18.00,2.00,6.00,Female,1,Baseline,12 +6520,B,23.00,1.00,1.00,Female,1,Baseline,1 +6521,B,20.00,0.00,0.00,Female,0,Baseline,0 +6522,B,26.00,18.0,20.0,Male,1,Baseline,360 +6523,B,26.00,7.00,1.00,Male,1,Baseline,7 +6524,B,36.00,0.00,0.00,Female,0,Baseline,0 +6525,B,20.00,10.0,1.00,Male,1,Baseline,10 +6526,A,20.00,2.00,6.00,Male,1,Baseline,12 +6527,C,20.00,3.00,8.00,Female,1,Baseline,24 +6528,C,45.00,0.00,0.00,Female,0,Baseline,0 +6529,B,21.00,5.00,3.00,Male,1,Baseline,15 +6530,C,36.00,24.0,1.00,Female,1,Baseline,24 +6532,B,25.00,3.00,1.00,Male,1,Baseline,3 +6533,C,18.00,0.00,0.00,Female,0,Baseline,0 +6534,A,23.00,3.00,2.00,Female,1,Baseline,6 +6535,C,21.00,1.00,8.00,Female,1,Baseline,8 +6536,B,42.00,1.00,1.00,Female,1,Baseline,1 +6540,B,21.00,5.00,3.00,Female,1,Baseline,15 +6541,A,36.00,0.00,0.00,Female,0,Baseline,0 +6542,B,58.00,0.00,0.00,Male,0,Baseline,0 +6543,B,25.00,4.00,2.00,Female,1,Baseline,8 +6544,B,22.00,4.00,18.0,Male,1,Baseline,72 +6547,C,28.00,3.00,3.00,Male,1,Baseline,9 +6549,C,22.00,6.00,12.0,Male,1,Baseline,72 +6550,B,24.00,1.00,4.00,Female,1,Baseline,4 +6551,B,21.00,10.0,2.00,Female,1,Baseline,20 +6552,C,30.00,8.00,6.00,Male,1,Baseline,48 +6553,B,20.00,3.00,4.00,Female,1,Baseline,12 +6554,A,24.00,6.00,2.00,Male,1,Baseline,12 +6556,C,21.00,3.00,10.0,Male,1,Baseline,30 +6557,A,20.00,20.0,3.00,Male,1,Baseline,60 +6558,C,19.00,1.00,1.00,Female,1,Baseline,1 +6559,B,21.00,0.00,0.00,Female,0,Baseline,0 +6562,A,24.00,5.00,1.00,Male,1,Baseline,5 +6563,C,22.00,2.00,2.00,Female,1,Baseline,4 +6564,B,21.00,0.00,0.00,Male,0,Baseline,0 +6565,A,19.00,4.00,4.00,Male,1,Baseline,16 +6566,C,22.00,4.00,8.00,Female,1,Baseline,32 +6567,C,21.00,1.00,7.00,Male,1,Baseline,7 +6569,C,18.00,6.00,4.00,Female,1,Baseline,24 +6570,C,42.00,10.0,2.00,Male,1,Baseline,20 +6571,C,23.00,0.00,0.00,Male,0,Baseline,0 +6572,A,20.00,4.00,4.00,Female,1,Baseline,16 +6573,C,31.00,0.00,0.00,Female,0,Baseline,0 +6574,C,23.00,6.00,4.00,Male,1,Baseline,24 +6575,B,27.00,8.00,5.00,Male,1,Baseline,40 +6576,C,19.00,9.00,3.00,Female,1,Baseline,27 +6577,C,28.00,5.00,2.00,Male,1,Baseline,10 +6578,C,22.00,8.00,5.00,Female,1,Baseline,40 +6579,C,24.00,2.00,4.00,Female,1,Baseline,8 +6580,A,21.00,2.00,1.00,Male,1,Baseline,2 +6581,B,20.00,0.00,0.00,Male,0,Baseline,0 +6583,A,25.00,0.00,0.00,Female,0,Baseline,0 +6584,A,21.00,4.00,1.00,Male,1,Baseline,4 +6585,C,31.00,18.0,1.00,Female,1,Baseline,18 +6586,C,30.00,20.0,1.00,Female,1,Baseline,20 +6587,C,21.00,8.00,2.00,Female,1,Baseline,16 +6588,B,20.00,0.00,0.00,Female,0,Baseline,0 +6589,C,56.00,0.00,0.00,Female,0,Baseline,0 +6592,C,22.00,2.00,2.00,Male,1,Baseline,4 +6593,B,18.00,9.00,12.0,Male,1,Baseline,108 +6594,C,19.00,0.00,0.00,Female,0,Baseline,0 +6595,C,20.00,0.00,0.00,Male,0,Baseline,0 +6596,A,29.00,3.00,1.00,Male,1,Baseline,3 +6598,A,19.00,0.00,0.00,Male,0,Baseline,0 +6599,A,20.00,3.00,1.00,Female,1,Baseline,3 +6600,C,28.00,10.0,2.00,Female,1,Baseline,20 +6601,A,21.00,4.00,4.00,Female,1,Baseline,16 +6603,A,43.00,1.00,1.00,Female,1,Baseline,1 +6604,B,18.00,0.00,0.00,Female,0,Baseline,0 +6605,A,30.00,0.00,0.00,Female,0,Baseline,0 +6607,C,24.00,6.00,7.00,Female,1,Baseline,42 +6608,A,22.00,0.00,0.00,Female,0,Baseline,0 +6611,A,18.00,0.00,0.00,Female,0,Baseline,0 +6613,C,33.00,7.00,2.00,Male,1,Baseline,14 +6614,A,47.00,7.00,1.00,Female,1,Baseline,7 +6615,C,34.00,1.00,3.00,Male,1,Baseline,3 +6616,B,21.00,0.00,0.00,Female,0,Baseline,0 +6617,A,21.00,0.00,0.00,Female,0,Baseline,0 +6618,B,34.00,0.00,0.00,Female,0,Baseline,0 +6619,B,22.00,21.0,2.00,Female,1,Baseline,42 +6620,B,26.00,0.00,0.00,Male,0,Baseline,0 +6623,C,29.00,1.00,1.00,Female,1,Baseline,1 +6624,A,44.00,0.00,0.00,Female,0,Baseline,0 +6625,B,23.00,5.00,5.00,Male,1,Baseline,25 +6626,B,22.00,7.00,2.00,Female,1,Baseline,14 +6627,B,22.00,0.00,0.00,Female,0,Baseline,0 +6628,C,26.00,8.00,1.00,Female,1,Baseline,8 +6629,B,21.00,0.00,0.00,Female,0,Baseline,0 +6630,B,18.00,0.00,0.00,Female,0,Baseline,0 +6631,A,39.00,0.00,0.00,Female,0,Baseline,0 +6632,C,18.00,5.00,9.00,Female,1,Baseline,45 +6633,B,20.00,0.00,0.00,Female,0,Baseline,0 +6634,A,21.00,12.0,2.00,Male,1,Baseline,24 +6635,C,20.00,3.00,5.00,Female,1,Baseline,15 +6636,A,21.00,4.00,5.00,Male,1,Baseline,20 +6637,B,19.00,5.00,2.00,Female,1,Baseline,10 +6638,C,22.00,2.00,1.00,Female,1,Baseline,2 +6639,C,28.00,4.00,9.00,Male,1,Baseline,36 +6641,B,20.00,0.00,0.00,Female,0,Baseline,0 +6642,B,20.00,3.00,4.00,Female,1,Baseline,12 +6645,A,25.00,2.00,2.00,Female,1,Baseline,4 +6646,A,21.00,9.00,18.0,Male,1,Baseline,162 +6647,C,64.00,2.00,1.00,Male,1,Baseline,2 +6648,C,20.00,2.00,10.0,Female,1,Baseline,20 +6649,C,19.00,2.00,3.00,Male,1,Baseline,6 +6652,C,21.00,10.0,1.00,Female,1,Baseline,10 +6653,B,26.00,0.00,0.00,Female,0,Baseline,0 +6654,B,20.00,7.00,7.00,Female,1,Baseline,49 +6655,A,19.00,3.00,2.00,Male,1,Baseline,6 +6656,A,20.00,7.00,2.00,Female,1,Baseline,14 +6657,C,20.00,1.00,1.00,Male,1,Baseline,1 +6658,A,33.00,6.00,1.00,Female,1,Baseline,6 +6659,A,22.00,0.00,0.00,Male,0,Baseline,0 +6660,A,30.00,0.00,0.00,Female,0,Baseline,0 +6661,C,19.00,0.00,0.00,Female,0,Baseline,0 +6662,A,29.00,0.00,0.00,Male,0,Baseline,0 +6663,A,43.00,9.00,1.00,Female,1,Baseline,9 +6664,C,18.00,6.00,7.00,Male,1,Baseline,42 +6665,C,23.00,4.00,4.00,Male,1,Baseline,16 +6668,C,41.00,5.00,2.00,Female,1,Baseline,10 +6669,A,30.00,2.00,1.00,Male,1,Baseline,2 +6670,A,18.00,10.0,4.00,Female,1,Baseline,40 +6671,B,23.00,2.00,3.00,Female,1,Baseline,6 +6672,B,19.00,1.00,5.00,Male,1,Baseline,5 +6673,B,29.00,4.00,4.00,Male,1,Baseline,16 +6674,A,19.00,0.00,0.00,Female,0,Baseline,0 +6675,C,19.00,4.00,6.00,Male,1,Baseline,24 +6676,B,27.00,13.0,2.00,Male,1,Baseline,26 +6677,A,19.00,0.00,0.00,Female,0,Baseline,0 +6678,B,18.00,0.00,0.00,Male,0,Baseline,0 +6679,C,18.00,2.00,4.00,Female,1,Baseline,8 +6680,B,23.00,12.0,2.00,Female,1,Baseline,24 +6681,B,23.00,2.00,3.00,Female,1,Baseline,6 +6682,C,19.00,4.00,5.00,Female,1,Baseline,20 +6683,B,19.00,7.00,2.00,Male,1,Baseline,14 +6684,C,20.00,1.00,2.00,Female,1,Baseline,2 +6685,C,24.00,1.00,5.00,Female,1,Baseline,5 +6687,A,21.00,3.00,5.00,Female,1,Baseline,15 +6688,A,22.00,9.00,2.00,Female,1,Baseline,18 +6689,A,29.00,18.0,2.00,Female,1,Baseline,36 +6690,C,56.00,4.00,3.00,Female,1,Baseline,12 +6692,A,18.00,14.0,4.00,Male,1,Baseline,56 +6693,C,20.00,1.00,10.0,Male,1,Baseline,10 +6694,C,22.00,3.00,8.00,Female,1,Baseline,24 +6695,A,58.00,16.0,1.00,Female,1,Baseline,16 +6696,A,53.00,6.00,2.00,Male,1,Baseline,12 +6697,C,21.00,0.00,0.00,Female,0,Baseline,0 +6699,B,21.00,10.0,8.00,Male,1,Baseline,80 +6700,B,22.00,2.00,4.00,Female,1,Baseline,8 +6703,B,22.00,1.00,1.00,Male,1,Baseline,1 +6704,A,21.00,1.00,6.00,Male,1,Baseline,6 +6705,C,19.00,3.00,1.00,Female,1,Baseline,3 +6706,A,21.00,7.00,1.00,Male,1,Baseline,7 +6707,A,23.00,8.00,4.00,Female,1,Baseline,32 +6709,A,18.00,1.00,1.00,Female,1,Baseline,1 +6710,B,25.00,12.0,2.00,Female,1,Baseline,24 +6712,C,20.00,0.00,0.00,Female,0,Baseline,0 +6713,A,22.00,5.00,7.00,Female,1,Baseline,35 +6714,B,29.00,12.0,4.00,Female,1,Baseline,48 +6715,A,21.00,2.00,4.00,Female,1,Baseline,8 +6716,C,20.00,15.0,1.00,Female,1,Baseline,15 +6717,A,20.00,0.00,0.00,Male,0,Baseline,0 +6718,A,21.00,2.00,8.00,Female,1,Baseline,16 +6720,A,54.00,0.00,0.00,Female,0,Baseline,0 +6722,A,24.00,14.0,1.00,Male,1,Baseline,14 +6723,A,21.00,6.00,3.00,Female,1,Baseline,18 +6725,B,22.00,1.00,1.00,Female,1,Baseline,1 +6726,C,21.00,2.00,2.00,Female,1,Baseline,4 +6727,C,20.00,5.00,6.00,Male,1,Baseline,30 +6728,A,34.00,28.0,3.00,Female,1,Baseline,84 +6729,B,24.00,4.00,1.00,Male,1,Baseline,4 +6731,B,18.00,0.00,0.00,Female,0,Baseline,0 +6732,C,20.00,3.00,2.00,Female,1,Baseline,6 +6733,A,23.00,0.00,0.00,Female,0,Baseline,0 +6734,A,72.00,26.0,1.00,Female,1,Baseline,26 +6736,B,19.00,2.00,10.0,Male,1,Baseline,20 +6737,B,22.00,2.00,3.00,Male,1,Baseline,6 +6738,B,18.00,0.00,0.00,Male,0,Baseline,0 +6739,C,38.00,0.00,0.00,Female,0,Baseline,0 +6740,A,18.00,3.00,4.00,Female,1,Baseline,12 +6742,B,25.00,2.00,1.00,Female,1,Baseline,2 +6743,C,20.00,0.00,0.00,Female,0,Baseline,0 +6745,B,20.00,0.00,0.00,Female,0,Baseline,0 +6746,C,21.00,3.00,8.00,Female,1,Baseline,24 +6747,C,36.00,20.0,1.00,Female,1,Baseline,20 +6749,A,18.00,3.00,8.00,Female,1,Baseline,24 +6750,B,20.00,2.00,10.0,Male,1,Baseline,20 +6751,A,32.00,0.00,0.00,Male,0,Baseline,0 +6752,B,23.00,1.00,1.00,Female,1,Baseline,1 +6753,C,19.00,6.00,3.00,Female,1,Baseline,18 +6754,B,34.00,0.00,0.00,Male,0,Baseline,0 +6755,A,19.00,8.00,20.0,Male,1,Baseline,160 +6757,A,21.00,0.00,0.00,Female,0,Baseline,0 +6758,A,25.00,5.00,2.00,Male,1,Baseline,10 +6759,C,21.00,2.00,2.00,Male,1,Baseline,4 +6760,A,18.00,4.00,5.00,Female,1,Baseline,20 +6761,B,21.00,10.0,2.00,Male,1,Baseline,20 +6762,A,22.00,0.00,0.00,Female,0,Baseline,0 +6764,B,22.00,14.0,1.00,Female,1,Baseline,14 +6765,A,20.00,3.00,1.00,Female,1,Baseline,3 +6766,C,21.00,6.00,6.00,Female,1,Baseline,36 +6767,B,22.00,7.00,2.00,Male,1,Baseline,14 +6768,B,18.00,0.00,0.00,Male,0,Baseline,0 +6769,B,18.00,4.00,4.00,Male,1,Baseline,16 +6770,A,29.00,12.0,5.00,Male,1,Baseline,60 +6771,B,19.00,8.00,3.00,Male,1,Baseline,24 +6772,A,24.00,2.00,2.00,Female,1,Baseline,4 +6773,A,20.00,1.00,1.00,Female,1,Baseline,1 +6775,A,35.00,1.00,1.00,Male,1,Baseline,1 +6776,C,20.00,0.00,0.00,Female,0,Baseline,0 +6777,C,22.00,8.00,4.00,Male,1,Baseline,32 +6778,C,21.00,0.00,0.00,Male,0,Baseline,0 +6779,C,24.00,8.00,2.00,Male,1,Baseline,16 +6780,A,32.00,22.0,1.00,Female,1,Baseline,22 +6781,B,21.00,6.00,3.00,Female,1,Baseline,18 +6783,B,19.00,3.00,3.00,Male,1,Baseline,9 +6785,C,23.00,4.00,2.00,Female,1,Baseline,8 +6786,C,20.00,3.00,2.00,Male,1,Baseline,6 +6788,A,20.00,5.00,2.00,Female,1,Baseline,10 +6789,B,33.00,0.00,0.00,Female,0,Baseline,0 +6790,C,19.00,3.00,5.00,Male,1,Baseline,15 +6791,B,34.00,4.00,1.00,Female,1,Baseline,4 +6792,C,25.00,4.00,6.00,Male,1,Baseline,24 +6793,B,19.00,0.00,0.00,Female,0,Baseline,0 +6795,C,33.00,2.00,2.00,Female,1,Baseline,4 +6796,A,19.00,8.00,6.00,Male,1,Baseline,48 +6797,C,20.00,1.00,4.00,Male,1,Baseline,4 +6798,B,20.00,3.00,4.00,Male,1,Baseline,12 +6799,B,24.00,4.00,4.00,Female,1,Baseline,16 +6800,A,19.00,0.00,0.00,Female,0,Baseline,0 +6801,C,21.00,2.00,1.00,Female,1,Baseline,2 +6802,A,20.00,1.00,2.00,Female,1,Baseline,2 +6803,C,39.00,8.00,1.00,Male,1,Baseline,8 +6804,A,22.00,0.00,0.00,Female,0,Baseline,0 +6805,B,32.00,16.0,2.00,Female,1,Baseline,32 +6806,C,19.00,6.00,4.00,Female,1,Baseline,24 +6807,C,43.00,1.00,1.00,Female,1,Baseline,1 +6808,C,22.00,20.0,3.00,Male,1,Baseline,60 +6809,A,51.00,0.00,0.00,Male,0,Baseline,0 +6810,C,18.00,2.00,7.00,Male,1,Baseline,14 +6812,C,21.00,4.00,3.00,Male,1,Baseline,12 +6813,B,26.00,12.0,2.00,Male,1,Baseline,24 +6814,A,22.00,0.00,0.00,Female,0,Baseline,0 +6815,B,19.00,2.00,1.00,Male,1,Baseline,2 +6816,A,50.00,26.0,1.00,Female,1,Baseline,26 +6818,B,18.00,1.00,2.00,Female,1,Baseline,2 +6819,A,45.00,6.00,1.00,Male,1,Baseline,6 +6820,B,21.00,2.00,6.00,Female,1,Baseline,12 +6822,C,22.00,12.0,2.00,Female,1,Baseline,24 +6823,C,55.00,21.0,1.00,Female,1,Baseline,21 +6824,A,26.00,4.00,3.00,Female,1,Baseline,12 +6825,C,28.00,6.00,4.00,Male,1,Baseline,24 +6826,C,21.00,4.00,7.00,Male,1,Baseline,28 +6828,C,39.00,8.00,10.0,Male,1,Baseline,80 +6829,B,19.00,1.00,1.00,Female,1,Baseline,1 +6830,A,24.00,8.00,3.00,Male,1,Baseline,24 +6831,C,26.00,6.00,6.00,Male,1,Baseline,36 +6832,B,19.00,2.00,3.00,Female,1,Baseline,6 +6833,C,20.00,6.00,4.00,Male,1,Baseline,24 +6834,C,25.00,2.00,1.00,Male,1,Baseline,2 +6835,C,21.00,0.00,0.00,Female,0,Baseline,0 +6836,B,23.00,0.00,0.00,Male,0,Baseline,0 +6837,C,19.00,1.00,1.00,Female,1,Baseline,1 +6838,A,21.00,4.00,6.00,Female,1,Baseline,24 +6839,A,19.00,9.00,2.00,Male,1,Baseline,18 +6840,C,39.00,1.00,2.00,Male,1,Baseline,2 +6841,C,23.00,5.00,2.00,Male,1,Baseline,10 +6843,C,22.00,0.00,0.00,Female,0,Baseline,0 +6844,C,23.00,2.00,4.00,Female,1,Baseline,8 +6845,A,21.00,0.00,0.00,Female,0,Baseline,0 +6846,B,20.00,0.00,0.00,Female,0,Baseline,0 +6847,A,20.00,12.0,12.0,Male,1,Baseline,144 +6848,C,19.00,3.00,6.00,Male,1,Baseline,18 +6850,C,23.00,0.00,0.00,Female,0,Baseline,0 +6852,C,40.00,26.0,5.00,Female,1,Baseline,130 +6853,C,18.00,7.00,2.00,Male,1,Baseline,14 +6854,B,19.00,12.0,15.0,Male,1,Baseline,180 +6855,A,50.00,0.00,0.00,Male,0,Baseline,0 +6856,B,20.00,0.00,0.00,Female,0,Baseline,0 +6858,A,20.00,5.00,6.00,Female,1,Baseline,30 +6860,C,19.00,0.00,0.00,Male,0,Baseline,0 +6861,A,24.00,5.00,2.00,Female,1,Baseline,10 +6862,C,24.00,3.00,9.00,Male,1,Baseline,27 +6864,A,22.00,1.00,8.00,Male,1,Baseline,8 +6866,C,24.00,7.00,1.00,Female,1,Baseline,7 +6867,B,59.00,4.00,1.00,Female,1,Baseline,4 +6869,C,23.00,2.00,2.00,Female,1,Baseline,4 +6870,B,19.00,2.00,4.00,Female,1,Baseline,8 +6871,C,19.00,1.00,1.00,Male,1,Baseline,1 +6873,B,30.00,16.0,1.00,Female,1,Baseline,16 +6875,A,21.00,5.00,12.0,Male,1,Baseline,60 +6876,A,19.00,0.00,0.00,Female,0,Baseline,0 +6878,C,49.00,8.00,1.00,Female,1,Baseline,8 +6879,A,18.00,7.00,8.00,Male,1,Baseline,56 +6880,C,22.00,3.00,1.00,Female,1,Baseline,3 +6881,A,46.00,2.00,2.00,Female,1,Baseline,4 +6882,C,20.00,11.0,10.0,Female,1,Baseline,110 +6883,A,20.00,8.00,3.00,Female,1,Baseline,24 +6884,A,21.00,6.00,2.00,Male,1,Baseline,12 +6885,A,19.00,6.00,15.0,Male,1,Baseline,90 +6888,B,21.00,4.00,3.00,Female,1,Baseline,12 +6889,C,22.00,0.00,0.00,Female,0,Baseline,0 +6890,A,20.00,8.00,1.00,Male,1,Baseline,8 +6891,C,19.00,0.00,0.00,Male,0,Baseline,0 +6892,B,25.00,0.00,0.00,Male,0,Baseline,0 +6893,B,32.00,8.00,1.00,Female,1,Baseline,8 +6894,A,40.00,28.0,10.0,Female,1,Baseline,280 +6895,B,21.00,4.00,4.00,Female,1,Baseline,16 +6897,B,22.00,4.00,6.00,Female,1,Baseline,24 +6898,A,32.00,2.00,1.00,Female,1,Baseline,2 +6899,B,21.00,3.00,4.00,Female,1,Baseline,12 +6900,A,21.00,5.00,2.00,Female,1,Baseline,10 +6901,C,33.00,0.00,0.00,Female,0,Baseline,0 +6902,A,20.00,5.00,1.00,Female,1,Baseline,5 +6904,A,23.00,8.00,2.00,Male,1,Baseline,16 +6906,A,20.00,0.00,0.00,Female,0,Baseline,0 +6907,C,20.00,3.00,6.00,Female,1,Baseline,18 +6908,B,21.00,2.00,6.00,Female,1,Baseline,12 +6909,A,20.00,2.00,10.0,Male,1,Baseline,20 +6910,C,19.00,3.00,4.00,Female,1,Baseline,12 +6911,C,48.00,0.00,0.00,Female,0,Baseline,0 +6912,C,21.00,2.00,2.00,Female,1,Baseline,4 +6913,C,20.00,5.00,3.00,Male,1,Baseline,15 +6914,A,21.00,2.00,3.00,Female,1,Baseline,6 +6915,C,29.00,12.0,2.00,Female,1,Baseline,24 +6916,A,20.00,0.00,0.00,Female,0,Baseline,0 +6918,A,21.00,8.00,5.00,Female,1,Baseline,40 +6919,C,18.00,0.00,0.00,Female,0,Baseline,0 +6920,B,22.00,3.00,3.00,Female,1,Baseline,9 +6921,A,22.00,0.00,0.00,Male,0,Baseline,0 +6923,A,28.00,24.0,1.00,Female,1,Baseline,24 +6924,A,22.00,20.0,1.00,Female,1,Baseline,20 +6925,A,31.00,0.00,0.00,Female,0,Baseline,0 +6926,C,20.00,4.00,4.00,Female,1,Baseline,16 +6927,A,24.00,0.00,0.00,Male,0,Baseline,0 +6928,A,20.00,3.00,1.00,Female,1,Baseline,3 +6929,C,23.00,2.00,2.00,Female,1,Baseline,4 +6931,B,20.00,0.00,0.00,Female,0,Baseline,0 +6932,B,20.00,6.00,6.00,Male,1,Baseline,36 +6933,B,57.00,24.0,1.00,Female,1,Baseline,24 +6934,C,20.00,2.00,1.00,Female,1,Baseline,2 +6935,B,20.00,2.00,3.00,Female,1,Baseline,6 +6936,B,18.00,12.0,1.00,Female,1,Baseline,12 +6938,C,20.00,5.00,2.00,Male,1,Baseline,10 +6939,B,19.00,9.00,2.00,Female,1,Baseline,18 +6940,B,20.00,3.00,5.00,Female,1,Baseline,15 +6942,C,21.00,0.00,0.00,Female,0,Baseline,0 +6943,A,31.00,5.00,4.00,Male,1,Baseline,20 +6944,C,22.00,9.00,6.00,Male,1,Baseline,54 +6945,A,44.00,8.00,1.00,Female,1,Baseline,8 +6949,C,33.00,0.00,0.00,Female,0,Baseline,0 +6951,C,19.00,1.00,1.00,Female,1,Baseline,1 +6952,B,26.00,3.00,4.00,Male,1,Baseline,12 +6954,C,47.00,0.00,0.00,Female,0,Baseline,0 +6955,B,20.00,0.00,0.00,Female,0,Baseline,0 +6956,C,22.00,0.00,0.00,Female,0,Baseline,0 +6957,A,20.00,0.00,0.00,Female,0,Baseline,0 +6958,A,26.00,12.0,1.00,Male,1,Baseline,12 +6959,A,21.00,0.00,0.00,Female,0,Baseline,0 +6960,C,20.00,8.00,2.00,Male,1,Baseline,16 +6961,B,18.00,1.00,5.00,Female,1,Baseline,5 +6962,C,22.00,0.00,0.00,Female,0,Baseline,0 +6963,C,24.00,10.0,3.00,Female,1,Baseline,30 +6964,A,18.00,0.00,0.00,Male,0,Baseline,0 +6965,A,43.00,12.0,2.00,Female,1,Baseline,24 +6966,C,52.00,0.00,0.00,Male,0,Baseline,0 +6967,A,40.00,0.00,0.00,Female,0,Baseline,0 +6969,B,22.00,14.0,1.00,Female,1,Baseline,14 +6970,C,20.00,1.00,3.00,Female,1,Baseline,3 +6971,B,20.00,0.00,0.00,Female,0,Baseline,0 +6974,C,21.00,4.00,2.00,Female,1,Baseline,8 +6975,C,19.00,2.00,5.00,Male,1,Baseline,10 +6976,A,24.00,0.00,0.00,Female,0,Baseline,0 +6977,C,21.00,0.00,0.00,Female,0,Baseline,0 +6978,B,24.00,4.00,1.00,Male,1,Baseline,4 +6979,B,41.00,20.0,1.00,Female,1,Baseline,20 +6981,C,26.00,1.00,2.00,Female,1,Baseline,2 +6982,A,19.00,0.00,0.00,Female,0,Baseline,0 +6983,B,22.00,4.00,2.00,Female,1,Baseline,8 +6984,A,20.00,0.00,0.00,Male,0,Baseline,0 +6985,A,22.00,8.00,4.00,Female,1,Baseline,32 +6986,C,20.00,2.00,5.00,Female,1,Baseline,10 +6987,C,34.00,12.0,1.00,Female,1,Baseline,12 +6988,B,22.00,2.00,3.00,Female,1,Baseline,6 +6989,A,34.00,12.0,2.00,Male,1,Baseline,24 +6990,C,19.00,0.00,0.00,Female,0,Baseline,0 +6991,C,19.00,4.00,6.00,Male,1,Baseline,24 +6992,B,26.00,0.00,0.00,Female,0,Baseline,0 +6993,A,21.00,8.00,10.0,Female,1,Baseline,80 +6994,A,18.00,3.00,2.00,Female,1,Baseline,6 +6995,B,24.00,0.00,0.00,Female,0,Baseline,0 +6996,B,19.00,0.00,0.00,Female,0,Baseline,0 +6997,A,20.00,8.00,1.00,Male,1,Baseline,8 +7000,C,22.00,8.00,6.00,Female,1,Baseline,48 +7001,C,29.00,10.0,3.00,Female,1,Baseline,30 +7002,C,19.00,1.00,2.00,Female,1,Baseline,2 +7003,C,21.00,2.00,4.00,Male,1,Baseline,8 +7004,A,20.00,0.00,0.00,Female,0,Baseline,0 +7005,C,37.00,14.0,1.00,Female,1,Baseline,14 +7006,C,23.00,0.00,0.00,Male,0,Baseline,0 +7007,A,20.00,0.00,0.00,Female,0,Baseline,0 +7009,A,28.00,0.00,0.00,Male,0,Baseline,0 +7010,A,19.00,1.00,1.00,Female,1,Baseline,1 +7011,C,18.00,1.00,4.00,Female,1,Baseline,4 +7013,C,21.00,7.00,1.00,Female,1,Baseline,7 +7014,C,27.00,6.00,4.00,Female,1,Baseline,24 +7015,C,18.00,1.00,10.0,Male,1,Baseline,10 +7016,A,21.00,4.00,4.00,Female,1,Baseline,16 +7019,A,23.00,24.0,1.00,Female,1,Baseline,24 +7020,A,20.00,0.00,0.00,Female,0,Baseline,0 +7021,A,22.00,0.00,0.00,Female,0,Baseline,0 +7022,A,25.00,16.0,3.00,Female,1,Baseline,48 +7023,B,27.00,2.00,1.00,Male,1,Baseline,2 +7024,C,24.00,8.00,2.00,Male,1,Baseline,16 +7025,C,21.00,2.00,3.00,Female,1,Baseline,6 +7026,B,20.00,0.00,0.00,Female,0,Baseline,0 +7027,B,18.00,0.00,0.00,Female,0,Baseline,0 +7028,A,30.00,0.00,0.00,Female,0,Baseline,0 +7029,A,22.00,3.00,5.00,Female,1,Baseline,15 +7030,C,18.00,2.00,5.00,Female,1,Baseline,10 +7031,C,21.00,4.00,3.00,Female,1,Baseline,12 +7032,B,21.00,10.0,3.00,Female,1,Baseline,30 +7033,B,36.00,4.00,2.00,Male,1,Baseline,8 +7035,B,24.00,12.0,2.00,Female,1,Baseline,24 +7037,B,26.00,3.00,1.00,Male,1,Baseline,3 +7038,C,23.00,2.00,3.00,Female,1,Baseline,6 +7039,A,22.00,0.00,0.00,Female,0,Baseline,0 +7042,B,19.00,2.00,2.00,Male,1,Baseline,4 +7043,B,32.00,4.00,2.00,Female,1,Baseline,8 +7044,A,42.00,3.00,3.00,Male,1,Baseline,9 +7048,B,29.00,0.00,0.00,Female,0,Baseline,0 +7049,C,19.00,0.00,0.00,Female,0,Baseline,0 +7050,A,18.00,3.00,8.00,Female,1,Baseline,24 +7051,A,22.00,2.00,5.00,Male,1,Baseline,10 +7052,B,22.00,6.00,3.00,Male,1,Baseline,18 +7054,C,22.00,2.00,6.00,Male,1,Baseline,12 +7055,B,19.00,0.00,0.00,Male,0,Baseline,0 +7056,B,26.00,10.0,6.00,Female,1,Baseline,60 +7057,A,21.00,4.00,1.00,Male,1,Baseline,4 +7058,B,28.00,6.00,1.00,Male,1,Baseline,6 +7059,A,32.00,5.00,1.00,Female,1,Baseline,5 +7060,B,19.00,9.00,7.00,Female,1,Baseline,63 +7062,C,42.00,20.0,1.00,Female,1,Baseline,20 +7063,A,23.00,0.00,0.00,Female,0,Baseline,0 +7064,A,21.00,11.0,1.00,Male,1,Baseline,11 +7065,A,22.00,0.00,0.00,Female,0,Baseline,0 +7066,A,21.00,3.00,6.00,Female,1,Baseline,18 +7067,C,20.00,0.00,0.00,Female,0,Baseline,0 +7068,A,24.00,9.00,2.00,Female,1,Baseline,18 +7069,C,20.00,1.00,2.00,Female,1,Baseline,2 +7070,B,18.00,15.0,6.00,Female,1,Baseline,90 +7071,B,22.00,12.0,1.00,Female,1,Baseline,12 +7072,A,20.00,6.00,4.00,Female,1,Baseline,24 +7073,C,63.00,26.0,2.00,Male,1,Baseline,52 +7074,B,20.00,0.00,0.00,Male,0,Baseline,0 +7075,B,54.00,4.00,1.00,Female,1,Baseline,4 +7077,A,19.00,6.00,10.0,Female,1,Baseline,60 +7078,C,21.00,12.0,4.00,Female,1,Baseline,48 +7081,A,28.00,17.0,2.00,Female,1,Baseline,34 +7082,C,20.00,14.0,3.00,Female,1,Baseline,42 +7083,A,23.00,12.0,2.00,Male,1,Baseline,24 +7084,B,18.00,4.00,5.00,Female,1,Baseline,20 +7085,A,19.00,10.0,10.0,Female,1,Baseline,100 +7087,C,19.00,7.00,5.00,Female,1,Baseline,35 +7088,A,29.00,9.00,2.00,Female,1,Baseline,18 +7089,C,21.00,0.00,0.00,Female,0,Baseline,0 +7090,A,19.00,5.00,2.00,Female,1,Baseline,10 +7091,B,19.00,0.00,0.00,Male,0,Baseline,0 +7092,C,19.00,20.0,3.00,Female,1,Baseline,60 +7093,C,19.00,5.00,4.00,Male,1,Baseline,20 +7094,A,29.00,3.00,2.00,Female,1,Baseline,6 +7095,C,28.00,3.00,2.00,Male,1,Baseline,6 +7096,C,20.00,0.00,0.00,Female,0,Baseline,0 +7099,A,22.00,2.00,10.0,Male,1,Baseline,20 +7100,C,49.00,28.0,8.00,Female,1,Baseline,224 +7102,C,21.00,3.00,2.00,Male,1,Baseline,6 +7103,A,19.00,28.0,2.00,Male,1,Baseline,56 +7104,B,31.00,4.00,6.00,Male,1,Baseline,24 +7105,A,22.00,0.00,0.00,Female,0,Baseline,0 +7106,A,20.00,4.00,3.00,Female,1,Baseline,12 +7107,C,31.00,3.00,5.00,Male,1,Baseline,15 +7108,A,20.00,4.00,8.00,Female,1,Baseline,32 +7109,C,18.00,2.00,1.00,Female,1,Baseline,2 +7110,A,23.00,4.00,1.00,Female,1,Baseline,4 +7111,C,22.00,2.00,2.00,Male,1,Baseline,4 +7112,B,27.00,8.00,5.00,Female,1,Baseline,40 +7113,C,24.00,4.00,4.00,Female,1,Baseline,16 +7114,A,21.00,3.00,4.00,Female,1,Baseline,12 +7115,A,19.00,4.00,6.00,Male,1,Baseline,24 +7116,B,36.00,0.00,0.00,Male,0,Baseline,0 +7117,A,27.00,3.00,1.00,Female,1,Baseline,3 +7118,A,24.00,0.00,0.00,Male,0,Baseline,0 +7119,A,19.00,4.00,8.00,Male,1,Baseline,32 +7120,C,33.00,0.00,0.00,Female,0,Baseline,0 +7121,A,19.00,3.00,3.00,Female,1,Baseline,9 +7122,B,19.00,4.00,12.0,Male,1,Baseline,48 +7123,B,28.00,3.00,,Male,1,Baseline, +7124,C,22.00,6.00,8.00,Female,1,Baseline,48 +7125,C,20.00,2.00,6.00,Female,1,Baseline,12 +7127,A,25.00,6.00,1.00,Male,1,Baseline,6 +7128,A,19.00,4.00,5.00,Female,1,Baseline,20 +7129,B,21.00,0.00,0.00,Female,0,Baseline,0 +7130,C,19.00,0.00,0.00,Female,0,Baseline,0 +7131,B,21.00,0.00,0.00,Female,0,Baseline,0 +7132,A,31.00,0.00,0.00,Female,0,Baseline,0 +7133,A,21.00,1.00,1.00,Male,1,Baseline,1 +7134,B,20.00,4.00,9.00,Female,1,Baseline,36 +7135,B,18.00,0.00,0.00,Male,0,Baseline,0 +7136,B,20.00,0.00,0.00,Female,0,Baseline,0 +7137,A,38.00,6.00,1.00,Male,1,Baseline,6 +7138,B,19.00,4.00,4.00,Female,1,Baseline,16 +7139,C,18.00,5.00,4.00,Female,1,Baseline,20 +7141,A,18.00,0.00,0.00,Male,0,Baseline,0 +7142,C,50.00,0.00,0.00,Female,0,Baseline,0 +7146,A,20.00,4.00,6.00,Female,1,Baseline,24 +7147,A,19.00,8.00,4.00,Female,1,Baseline,32 +7148,B,24.00,0.00,0.00,Female,0,Baseline,0 +7149,C,25.00,7.00,4.00,Female,1,Baseline,28 +7151,B,30.00,5.00,1.00,Female,1,Baseline,5 +7153,A,28.00,3.00,1.00,Female,1,Baseline,3 +7154,A,20.00,0.00,0.00,Male,0,Baseline,0 +7155,B,20.00,4.00,5.00,Female,1,Baseline,20 +7156,C,21.00,0.00,0.00,Female,0,Baseline,0 +7157,A,40.00,1.00,8.00,Female,1,Baseline,8 +7158,B,46.00,1.00,3.00,Female,1,Baseline,3 +7159,C,19.00,0.00,0.00,Female,0,Baseline,0 +7160,B,21.00,1.00,8.00,Female,1,Baseline,8 +7161,B,22.00,5.00,3.00,Female,1,Baseline,15 +7162,A,24.00,0.00,0.00,Female,0,Baseline,0 +7163,C,19.00,1.00,1.00,Female,1,Baseline,1 +7164,B,19.00,2.00,1.00,Female,1,Baseline,2 +7168,C,22.00,2.00,1.00,Male,1,Baseline,2 +7169,B,20.00,0.00,0.00,Male,0,Baseline,0 +7170,C,47.00,0.00,0.00,Female,0,Baseline,0 +7172,C,22.00,27.0,1.00,Female,1,Baseline,27 +7173,A,33.00,15.0,1.00,Female,1,Baseline,15 +7174,B,19.00,2.00,4.00,Female,1,Baseline,8 +7175,B,18.00,0.00,0.00,Female,0,Baseline,0 +7177,A,20.00,3.00,2.00,Female,1,Baseline,6 +7178,A,21.00,4.00,6.00,Male,1,Baseline,24 +7179,C,20.00,6.00,5.00,Female,1,Baseline,30 +7180,B,21.00,6.00,1.00,Female,1,Baseline,6 +7181,C,21.00,0.00,0.00,Male,0,Baseline,0 +7184,B,18.00,1.00,1.00,Female,1,Baseline,1 +7185,B,23.00,0.00,0.00,Female,0,Baseline,0 +7187,B,19.00,17.0,5.00,Female,1,Baseline,85 +7188,C,23.00,0.00,0.00,Female,0,Baseline,0 +7189,C,19.00,0.00,0.00,Female,0,Baseline,0 +7190,A,18.00,0.00,0.00,Male,0,Baseline,0 +7191,C,18.00,9.00,15.0,Male,1,Baseline,135 +7192,C,21.00,9.00,2.00,Female,1,Baseline,18 +7193,B,37.00,7.00,4.00,Male,1,Baseline,28 +7194,A,48.00,14.0,1.00,Female,1,Baseline,14 +7199,A,20.00,0.00,0.00,Female,0,Baseline,0 +7201,A,18.00,0.00,0.00,Female,0,Baseline,0 +7202,C,25.00,4.00,3.00,Male,1,Baseline,12 +7203,A,22.00,0.00,0.00,Female,0,Baseline,0 +7204,A,21.00,4.00,1.00,Female,1,Baseline,4 +7205,A,25.00,5.00,3.00,Female,1,Baseline,15 +7206,A,20.00,0.00,0.00,Male,0,Baseline,0 +7207,B,29.00,0.00,0.00,Female,0,Baseline,0 +7208,A,19.00,0.00,0.00,Female,0,Baseline,0 +7210,B,18.00,1.00,1.00,Female,1,Baseline,1 +7212,A,19.00,5.00,2.00,Male,1,Baseline,10 +7214,B,59.00,12.0,2.00,Male,1,Baseline,24 +7215,B,29.00,0.00,0.00,Female,0,Baseline,0 +7216,C,23.00,3.00,1.00,Female,1,Baseline,3 +7217,C,20.00,4.00,4.00,Female,1,Baseline,16 +7218,C,21.00,1.00,1.00,Male,1,Baseline,1 +7219,B,21.00,0.00,0.00,Female,0,Baseline,0 +7220,C,21.00,7.00,6.00,Female,1,Baseline,42 +7221,B,19.00,0.00,0.00,Female,0,Baseline,0 +7222,C,38.00,2.00,3.00,Female,1,Baseline,6 +7223,B,18.00,1.00,3.00,Female,1,Baseline,3 +7224,A,22.00,0.00,0.00,Female,0,Baseline,0 +7226,B,20.00,3.00,8.00,Female,1,Baseline,24 +7228,B,30.00,4.00,7.00,Female,1,Baseline,28 +7229,B,21.00,4.00,4.00,Male,1,Baseline,16 +7231,B,22.00,8.00,2.00,Female,1,Baseline,16 +7233,B,19.00,0.00,0.00,Male,0,Baseline,0 +7234,B,20.00,8.00,7.00,Male,1,Baseline,56 +7235,B,30.00,20.0,4.00,Male,1,Baseline,80 +7236,C,20.00,4.00,4.00,Female,1,Baseline,16 +7240,A,22.00,4.00,3.00,Female,1,Baseline,12 +7241,A,49.00,9.00,2.00,Male,1,Baseline,18 +7242,C,19.00,4.00,3.00,Female,1,Baseline,12 +7243,B,22.00,5.00,4.00,Female,1,Baseline,20 +7244,A,23.00,10.0,4.00,Male,1,Baseline,40 +7245,B,21.00,4.00,5.00,Female,1,Baseline,20 +7246,A,20.00,2.00,2.00,Male,1,Baseline,4 +7247,A,21.00,0.00,0.00,Female,0,Baseline,0 +7248,C,21.00,1.00,1.00,Male,1,Baseline,1 +7249,C,19.00,4.00,1.00,Male,1,Baseline,4 +7250,A,24.00,6.00,5.00,Male,1,Baseline,30 +7251,A,21.00,4.00,4.00,Female,1,Baseline,16 +7252,C,20.00,1.00,1.00,Female,1,Baseline,1 +7253,A,18.00,4.00,4.00,Male,1,Baseline,16 +7255,C,20.00,3.00,4.00,Female,1,Baseline,12 +7256,A,21.00,0.00,0.00,Male,0,Baseline,0 +7257,C,20.00,2.00,1.00,Female,1,Baseline,2 +7258,B,18.00,4.00,5.00,Male,1,Baseline,20 +7259,B,20.00,1.00,2.00,Male,1,Baseline,2 +7262,B,23.00,4.00,4.00,Female,1,Baseline,16 +7263,A,21.00,2.00,3.00,Male,1,Baseline,6 +7264,B,20.00,5.00,5.00,Male,1,Baseline,25 +7265,C,20.00,2.00,12.0,Male,1,Baseline,24 +7266,A,20.00,0.00,0.00,Female,0,Baseline,0 +7267,A,30.00,0.00,0.00,Female,0,Baseline,0 +7269,B,20.00,1.00,1.00,Female,1,Baseline,1 +7270,A,19.00,4.00,5.00,Female,1,Baseline,20 +7271,A,25.00,8.00,10.0,Male,1,Baseline,80 +7272,A,18.00,0.00,0.00,Female,0,Baseline,0 +7273,B,20.00,0.00,0.00,Male,0,Baseline,0 +7274,B,43.00,28.0,3.00,Female,1,Baseline,84 +7275,C,27.00,5.00,2.00,Female,1,Baseline,10 +7276,C,18.00,4.00,6.00,Male,1,Baseline,24 +7277,C,19.00,12.0,4.00,Male,1,Baseline,48 +7278,A,25.00,2.00,3.00,Female,1,Baseline,6 +7280,B,21.00,5.00,11.0,Male,1,Baseline,55 +7281,C,19.00,4.00,12.0,Male,1,Baseline,48 +7283,C,19.00,1.00,6.00,Female,1,Baseline,6 +7284,B,25.00,14.0,3.00,Female,1,Baseline,42 +7286,C,20.00,8.00,2.00,Female,1,Baseline,16 +7289,C,18.00,6.00,8.00,Male,1,Baseline,48 +7291,C,26.00,3.00,8.00,Female,1,Baseline,24 +7292,B,28.00,6.00,2.00,Male,1,Baseline,12 +7295,A,19.00,1.00,1.00,Male,1,Baseline,1 +7297,B,20.00,0.00,0.00,Female,0,Baseline,0 +7298,C,35.00,1.00,1.00,Female,1,Baseline,1 +7299,A,21.00,0.00,0.00,Female,0,Baseline,0 +7300,A,37.00,20.0,1.00,Female,1,Baseline,20 +7301,A,21.00,0.00,0.00,Male,0,Baseline,0 +7302,B,26.00,8.00,3.00,Female,1,Baseline,24 +7303,B,30.00,6.00,2.00,Female,1,Baseline,12 +7305,C,18.00,4.00,6.00,Female,1,Baseline,24 +7306,A,20.00,4.00,3.00,Female,1,Baseline,12 +7308,A,55.00,28.0,2.00,Female,1,Baseline,56 +7309,C,20.00,8.00,10.0,Female,1,Baseline,80 +7310,A,21.00,0.00,0.00,Female,0,Baseline,0 +7311,A,23.00,2.00,4.00,Male,1,Baseline,8 +7312,C,19.00,4.00,3.00,Female,1,Baseline,12 +7313,C,21.00,0.00,0.00,Female,0,Baseline,0 +7314,C,57.00,7.00,2.00,Female,1,Baseline,14 +7315,C,21.00,0.00,0.00,Female,0,Baseline,0 +7316,B,19.00,0.00,0.00,Female,0,Baseline,0 +7318,C,24.00,0.00,0.00,Female,0,Baseline,0 +7319,C,40.00,0.00,0.00,Female,0,Baseline,0 +7320,B,20.00,4.00,4.00,Female,1,Baseline,16 +7321,C,49.00,12.0,4.00,Male,1,Baseline,48 +7322,B,22.00,5.00,1.00,Female,1,Baseline,5 +7323,C,19.00,1.00,1.00,Female,1,Baseline,1 +7324,C,18.00,2.00,2.00,Female,1,Baseline,4 +7325,B,19.00,5.00,8.00,Male,1,Baseline,40 +7326,A,18.00,1.00,1.00,Female,1,Baseline,1 +7327,B,20.00,14.0,2.00,Male,1,Baseline,28 +7328,C,22.00,4.00,2.00,Female,1,Baseline,8 +7329,C,20.00,0.00,0.00,Male,0,Baseline,0 +7330,B,23.00,4.00,2.00,Female,1,Baseline,8 +7333,B,21.00,4.00,3.00,Male,1,Baseline,12 +7335,C,25.00,15.0,5.00,Female,1,Baseline,75 +7336,B,23.00,0.00,0.00,Female,0,Baseline,0 +7338,B,22.00,4.00,1.00,Female,1,Baseline,4 +7339,C,21.00,0.00,0.00,Female,0,Baseline,0 +7340,A,22.00,5.00,2.00,Female,1,Baseline,10 +7342,B,22.00,0.00,0.00,Female,0,Baseline,0 +7343,A,21.00,0.00,0.00,Male,0,Baseline,0 +7344,B,20.00,2.00,8.00,Male,1,Baseline,16 +7345,A,22.00,15.0,2.00,Male,1,Baseline,30 +7346,A,37.00,1.00,2.00,Female,1,Baseline,2 +7347,B,29.00,14.0,2.00,Female,1,Baseline,28 +7348,C,20.00,6.00,10.0,Male,1,Baseline,60 +7349,B,27.00,10.0,1.00,Female,1,Baseline,10 +7350,C,49.00,21.0,4.00,Male,1,Baseline,84 +7351,C,19.00,4.00,2.00,Female,1,Baseline,8 +7352,B,22.00,3.00,4.00,Female,1,Baseline,12 +7353,B,22.00,12.0,18.0,Male,1,Baseline,216 +7354,C,21.00,11.0,7.00,Female,1,Baseline,77 +7355,C,28.00,6.00,3.00,Male,1,Baseline,18 +7357,B,19.00,1.00,5.00,Female,1,Baseline,5 +7358,B,20.00,4.00,3.00,Female,1,Baseline,12 +7360,C,20.00,2.00,1.00,Male,1,Baseline,2 +7361,A,22.00,5.00,6.00,Female,1,Baseline,30 +7362,C,19.00,8.00,10.0,Female,1,Baseline,80 +7363,C,29.00,6.00,1.00,Male,1,Baseline,6 +7364,B,26.00,0.00,0.00,Male,0,Baseline,0 +7365,A,20.00,2.00,7.00,Female,1,Baseline,14 +7367,B,21.00,1.00,2.00,Female,1,Baseline,2 +7368,B,19.00,1.00,1.00,Female,1,Baseline,1 +7369,C,31.00,0.00,0.00,Male,0,Baseline,0 +7370,A,63.00,28.0,1.00,Male,1,Baseline,28 +7371,C,23.00,9.00,2.00,Female,1,Baseline,18 +7372,A,19.00,8.00,7.00,Male,1,Baseline,56 +7373,C,20.00,1.00,1.00,Male,1,Baseline,1 +7374,C,19.00,2.00,4.00,Female,1,Baseline,8 +7375,C,19.00,3.00,1.00,Male,1,Baseline,3 +7377,C,21.00,1.00,3.00,Female,1,Baseline,3 +7378,A,19.00,3.00,3.00,Male,1,Baseline,9 +7379,B,27.00,9.00,1.00,Female,1,Baseline,9 +7380,C,20.00,2.00,2.00,Female,1,Baseline,4 +7381,B,23.00,3.00,1.00,Male,1,Baseline,3 +7383,A,19.00,4.00,6.00,Female,1,Baseline,24 +7384,C,25.00,12.0,4.00,Female,1,Baseline,48 +7385,B,21.00,3.00,3.00,Female,1,Baseline,9 +7386,B,25.00,9.00,2.00,Female,1,Baseline,18 +7387,A,21.00,2.00,5.00,Female,1,Baseline,10 +7388,C,21.00,3.00,3.00,Female,1,Baseline,9 +7389,A,19.00,5.00,5.00,Male,1,Baseline,25 +7390,C,22.00,4.00,5.00,Female,1,Baseline,20 +7391,C,20.00,2.00,3.00,Female,1,Baseline,6 +7393,C,49.00,0.00,0.00,Male,0,Baseline,0 +7394,A,63.00,4.00,2.00,Female,1,Baseline,8 +7395,C,32.00,2.00,3.00,Female,1,Baseline,6 +7396,B,18.00,0.00,0.00,Female,0,Baseline,0 +7398,C,19.00,0.00,0.00,Female,0,Baseline,0 +7399,B,19.00,5.00,7.00,Female,1,Baseline,35 +7400,A,19.00,0.00,0.00,Female,0,Baseline,0 +7401,C,25.00,5.00,3.00,Male,1,Baseline,15 +7402,A,23.00,6.00,3.00,Male,1,Baseline,18 +7404,B,45.00,20.0,2.00,Female,1,Baseline,40 +7406,C,20.00,7.00,2.00,Female,1,Baseline,14 +7407,C,18.00,0.00,0.00,Female,0,Baseline,0 +7408,B,23.00,0.00,0.00,Female,0,Baseline,0 +7409,B,18.00,4.00,8.00,Male,1,Baseline,32 +7410,A,23.00,4.00,7.00,Male,1,Baseline,28 +7411,A,19.00,3.00,7.00,Female,1,Baseline,21 +7412,B,23.00,3.00,8.00,Female,1,Baseline,24 +7413,C,24.00,2.00,2.00,Female,1,Baseline,4 +7414,B,33.00,8.00,3.00,Female,1,Baseline,24 +7415,A,20.00,5.00,4.00,Female,1,Baseline,20 +7416,A,22.00,3.00,2.00,Female,1,Baseline,6 +7417,A,22.00,4.00,1.00,Male,1,Baseline,4 +7418,A,19.00,0.00,0.00,Female,0,Baseline,0 +7419,C,28.00,18.0,2.00,Female,1,Baseline,36 +7421,B,21.00,9.00,15.0,Male,1,Baseline,135 +7422,C,19.00,2.00,6.00,Female,1,Baseline,12 +7424,A,19.00,1.00,1.00,Male,1,Baseline,1 +7425,C,24.00,2.00,2.00,Female,1,Baseline,4 +7426,B,20.00,14.0,3.00,Female,1,Baseline,42 +7427,B,22.00,0.00,0.00,Female,0,Baseline,0 +7428,A,19.00,0.00,0.00,Male,0,Baseline,0 +7429,B,18.00,0.00,0.00,Male,0,Baseline,0 +7430,A,23.00,4.00,1.00,Female,1,Baseline,4 +7431,A,23.00,9.00,2.00,Female,1,Baseline,18 +7433,A,22.00,0.00,0.00,Male,0,Baseline,0 +7434,A,23.00,2.00,1.00,Female,1,Baseline,2 +7436,B,22.00,0.00,0.00,Male,0,Baseline,0 +7437,A,20.00,2.00,6.00,Female,1,Baseline,12 +7439,A,21.00,3.00,4.00,Male,1,Baseline,12 +7440,A,25.00,1.00,2.00,Female,1,Baseline,2 +7441,C,20.00,0.00,0.00,Female,0,Baseline,0 +7442,C,23.00,1.00,1.00,Male,1,Baseline,1 +7443,C,19.00,16.0,3.00,Female,1,Baseline,48 +7444,B,22.00,6.00,7.00,Female,1,Baseline,42 +7446,A,23.00,4.00,2.00,Male,1,Baseline,8 +7447,A,20.00,1.00,2.00,Female,1,Baseline,2 +7448,B,19.00,6.00,5.00,Female,1,Baseline,30 +7450,B,22.00,4.00,6.00,Female,1,Baseline,24 +7451,B,21.00,0.00,0.00,Male,0,Baseline,0 +7452,A,32.00,18.0,3.00,Female,1,Baseline,54 +7454,B,21.00,3.00,1.00,Male,1,Baseline,3 +7455,A,23.00,2.00,3.00,Female,1,Baseline,6 +7456,C,21.00,7.00,7.00,Female,1,Baseline,49 +7457,B,21.00,1.00,2.00,Female,1,Baseline,2 +7458,B,21.00,5.00,10.0,Female,1,Baseline,50 +7459,C,21.00,8.00,4.00,Male,1,Baseline,32 +7461,A,20.00,0.00,0.00,Female,0,Baseline,0 +7462,A,19.00,1.00,1.00,Female,1,Baseline,1 +7463,B,24.00,14.0,3.00,Female,1,Baseline,42 +7464,A,20.00,4.00,8.00,Female,1,Baseline,32 +7466,C,32.00,18.0,2.00,Female,1,Baseline,36 +7467,B,24.00,12.0,3.00,Female,1,Baseline,36 +7469,A,18.00,2.00,5.00,Female,1,Baseline,10 +7470,B,51.00,3.00,3.00,Female,1,Baseline,9 +7471,C,20.00,10.0,4.00,Male,1,Baseline,40 +7472,B,29.00,1.00,1.00,Female,1,Baseline,1 +7473,B,18.00,3.00,6.00,Female,1,Baseline,18 +7475,C,29.00,4.00,1.00,Female,1,Baseline,4 +7477,B,20.00,0.00,0.00,Female,0,Baseline,0 +7478,B,25.00,9.00,2.00,Female,1,Baseline,18 +7479,A,21.00,0.00,0.00,Male,0,Baseline,0 +7480,A,19.00,3.00,4.00,Female,1,Baseline,12 +7481,C,26.00,3.00,1.00,Female,1,Baseline,3 +7482,B,23.00,10.0,1.00,Male,1,Baseline,10 +7483,B,20.00,0.00,0.00,Female,0,Baseline,0 +7484,C,21.00,2.00,5.00,Female,1,Baseline,10 +7485,C,19.00,9.00,5.00,Female,1,Baseline,45 +7486,A,22.00,20.0,2.00,Female,1,Baseline,40 +7487,B,30.00,16.0,3.00,Male,1,Baseline,48 +7488,C,20.00,1.00,1.00,Female,1,Baseline,1 +7489,C,19.00,14.0,15.0,Male,1,Baseline,210 +7490,B,19.00,1.00,1.00,Male,1,Baseline,1 +7491,B,21.00,1.00,8.00,Female,1,Baseline,8 +7492,C,21.00,3.00,4.00,Female,1,Baseline,12 +7493,B,42.00,28.0,1.00,Female,1,Baseline,28 +7494,B,25.00,3.00,4.00,Male,1,Baseline,12 +7495,B,19.00,4.00,6.00,Female,1,Baseline,24 +7496,B,21.00,0.00,0.00,Male,0,Baseline,0 +7498,A,19.00,1.00,4.00,Female,1,Baseline,4 +7499,B,18.00,1.00,2.00,Female,1,Baseline,2 +7501,A,29.00,0.00,0.00,Female,0,Baseline,0 +7502,C,18.00,1.00,1.00,Male,1,Baseline,1 +7504,B,23.00,0.00,0.00,Female,0,Baseline,0 +7505,B,19.00,4.00,2.00,Female,1,Baseline,8 +7506,B,22.00,3.00,2.00,Female,1,Baseline,6 +7507,C,20.00,6.00,8.00,Male,1,Baseline,48 +7508,B,18.00,3.00,12.0,Female,1,Baseline,36 +7509,B,23.00,10.0,2.00,Female,1,Baseline,20 +7511,C,20.00,5.00,2.00,Male,1,Baseline,10 +7512,A,19.00,1.00,3.00,Female,1,Baseline,3 +7513,B,18.00,3.00,5.00,Female,1,Baseline,15 +7514,B,20.00,3.00,6.00,Female,1,Baseline,18 +7515,B,18.00,6.00,3.00,Female,1,Baseline,18 +7516,A,22.00,12.0,4.00,Female,1,Baseline,48 +7517,B,20.00,5.00,15.0,Male,1,Baseline,75 +7518,B,19.00,4.00,8.00,Male,1,Baseline,32 +7520,B,29.00,4.00,6.00,Female,1,Baseline,24 +7521,C,20.00,6.00,4.00,Female,1,Baseline,24 +7522,C,39.00,0.00,0.00,Male,0,Baseline,0 +7523,A,25.00,5.00,5.00,Female,1,Baseline,25 +7526,B,20.00,2.00,4.00,Female,1,Baseline,8 +7527,A,25.00,0.00,0.00,Female,0,Baseline,0 +7528,C,19.00,6.00,8.00,Male,1,Baseline,48 +7529,B,28.00,18.0,2.00,Male,1,Baseline,36 +7530,C,19.00,3.00,2.00,Female,1,Baseline,6 +7531,C,20.00,7.00,4.00,Female,1,Baseline,28 +7532,A,21.00,21.0,5.00,Female,1,Baseline,105 +7533,B,20.00,1.00,5.00,Male,1,Baseline,5 +7534,C,50.00,10.0,2.00,Female,1,Baseline,20 +7535,A,27.00,22.0,4.00,Male,1,Baseline,88 +7536,B,19.00,3.00,10.0,Female,1,Baseline,30 +7537,B,20.00,9.00,12.0,Male,1,Baseline,108 +7538,B,20.00,3.00,1.00,Male,1,Baseline,3 +7539,B,22.00,10.0,2.00,Male,1,Baseline,20 +7540,B,20.00,4.00,2.00,Female,1,Baseline,8 +7541,C,18.00,0.00,0.00,Female,0,Baseline,0 +7543,C,19.00,2.00,9.00,Female,1,Baseline,18 +7544,B,23.00,6.00,1.00,Female,1,Baseline,6 +7546,A,18.00,0.00,0.00,Female,0,Baseline,0 +7547,A,20.00,7.00,5.00,Female,1,Baseline,35 +7550,A,19.00,2.00,2.00,Female,1,Baseline,4 +7551,B,30.00,14.0,2.00,Female,1,Baseline,28 +7552,B,20.00,10.0,4.00,Female,1,Baseline,40 +7553,B,24.00,1.00,2.00,Female,1,Baseline,2 +7554,B,20.00,8.00,6.00,Female,1,Baseline,48 +7555,C,49.00,2.00,1.00,Female,1,Baseline,2 +7556,C,22.00,7.00,1.00,Female,1,Baseline,7 +7557,C,21.00,14.0,3.00,Male,1,Baseline,42 +7558,C,29.00,3.00,1.00,Female,1,Baseline,3 +7559,C,27.00,12.0,6.00,Male,1,Baseline,72 +7560,A,19.00,1.00,5.00,Female,1,Baseline,5 +7561,C,18.00,8.00,3.00,Male,1,Baseline,24 +7562,B,21.00,2.00,2.00,Female,1,Baseline,4 +7563,B,18.00,5.00,4.00,Female,1,Baseline,20 +7564,B,21.00,13.0,2.00,Female,1,Baseline,26 +7565,A,19.00,7.00,3.00,Female,1,Baseline,21 +7566,B,21.00,0.00,0.00,Female,0,Baseline,0 +7567,C,20.00,2.00,6.00,Male,1,Baseline,12 +7569,A,24.00,20.0,4.00,Male,1,Baseline,80 +7570,B,27.00,0.00,0.00,Female,0,Baseline,0 +7571,A,35.00,16.0,3.00,Female,1,Baseline,48 +7572,A,22.00,2.00,1.00,Female,1,Baseline,2 +7573,B,22.00,0.00,0.00,Female,0,Baseline,0 +7574,A,21.00,11.0,4.00,Female,1,Baseline,44 +7575,B,18.00,5.00,8.00,Female,1,Baseline,40 +7577,B,19.00,4.00,4.00,Female,1,Baseline,16 +7578,B,18.00,2.00,4.00,Female,1,Baseline,8 +7579,B,18.00,21.0,2.00,Female,1,Baseline,42 +7580,C,25.00,0.00,0.00,Male,0,Baseline,0 +7581,A,39.00,1.00,2.00,Female,1,Baseline,2 +7582,A,21.00,2.00,5.00,Male,1,Baseline,10 +7583,C,21.00,0.00,0.00,Female,0,Baseline,0 +7584,B,18.00,0.00,0.00,Male,0,Baseline,0 +7585,B,18.00,1.00,4.00,Female,1,Baseline,4 +7586,B,22.00,12.0,6.00,Female,1,Baseline,72 +7587,A,20.00,2.00,6.00,Male,1,Baseline,12 +7588,B,18.00,6.00,5.00,Female,1,Baseline,30 +7590,A,20.00,4.00,3.00,Female,1,Baseline,12 +7592,A,18.00,0.00,0.00,Male,0,Baseline,0 +7594,A,19.00,7.00,6.00,Male,1,Baseline,42 +7596,C,26.00,2.00,1.00,Male,1,Baseline,2 +7597,A,22.00,5.00,2.00,Female,1,Baseline,10 +7599,A,40.00,2.00,2.00,Male,1,Baseline,4 +7601,A,22.00,5.00,2.00,Female,1,Baseline,10 +7602,B,27.00,2.00,1.00,Female,1,Baseline,2 +7603,A,23.00,12.0,1.00,Male,1,Baseline,12 +7604,A,18.00,2.00,4.00,Female,1,Baseline,8 +7605,C,20.00,1.00,1.00,Female,1,Baseline,1 +7606,C,22.00,14.0,3.00,Male,1,Baseline,42 +7607,C,25.00,15.0,2.00,Female,1,Baseline,30 +7608,A,21.00,2.00,2.00,Female,1,Baseline,4 +7609,B,27.00,0.00,0.00,Male,0,Baseline,0 +7610,C,18.00,5.00,4.00,Male,1,Baseline,20 +7611,C,18.00,2.00,3.00,Male,1,Baseline,6 +7612,C,27.00,1.00,1.00,Male,1,Baseline,1 +7613,B,26.00,0.00,0.00,Male,0,Baseline,0 +7614,C,19.00,6.00,4.00,Female,1,Baseline,24 +7615,A,21.00,2.00,2.00,Female,1,Baseline,4 +7616,B,22.00,0.00,0.00,Female,0,Baseline,0 +7617,C,54.00,20.0,2.00,Male,1,Baseline,40 +7619,B,20.00,2.00,4.00,Female,1,Baseline,8 +7620,A,20.00,2.00,6.00,Male,1,Baseline,12 +7621,B,19.00,0.00,0.00,Female,0,Baseline,0 +7622,A,18.00,1.00,7.00,Female,1,Baseline,7 +7623,C,22.00,8.00,6.00,Male,1,Baseline,48 +7624,C,22.00,0.00,0.00,Female,0,Baseline,0 +7625,A,18.00,2.00,9.00,Male,1,Baseline,18 +7626,B,41.00,2.00,1.00,Female,1,Baseline,2 +7627,C,22.00,4.00,3.00,Male,1,Baseline,12 +7628,B,18.00,8.00,17.0,Female,1,Baseline,136 +7629,A,18.00,0.00,0.00,Male,0,Baseline,0 +7630,A,20.00,12.0,5.00,Male,1,Baseline,60 +7631,A,20.00,14.0,2.00,Female,1,Baseline,28 +7632,A,19.00,2.00,1.00,Female,1,Baseline,2 +7634,A,18.00,4.00,1.00,Female,1,Baseline,4 +7635,C,20.00,3.00,6.00,Female,1,Baseline,18 +7637,B,21.00,10.0,2.00,Female,1,Baseline,20 +7638,C,20.00,5.00,4.00,Female,1,Baseline,20 +7640,B,18.00,1.00,2.00,Male,1,Baseline,2 +7641,C,37.00,8.00,6.00,Male,1,Baseline,48 +7642,C,19.00,10.0,8.00,Male,1,Baseline,80 +7643,C,40.00,1.00,2.00,Female,1,Baseline,2 +7644,B,22.00,0.00,0.00,Female,0,Baseline,0 +7645,A,23.00,0.00,0.00,Male,0,Baseline,0 +7646,B,24.00,2.00,1.00,Female,1,Baseline,2 +7647,C,19.00,4.00,9.00,Female,1,Baseline,36 +7648,B,21.00,3.00,15.0,Male,1,Baseline,45 +7650,A,38.00,4.00,4.00,Male,1,Baseline,16 +7651,A,19.00,0.00,0.00,Male,0,Baseline,0 +7652,A,39.00,24.0,2.00,Female,1,Baseline,48 +7653,C,22.00,1.00,5.00,Male,1,Baseline,5 +7654,C,26.00,12.0,6.00,Female,1,Baseline,72 +7655,B,20.00,19.0,2.00,Female,1,Baseline,38 +7656,B,20.00,5.00,3.00,Female,1,Baseline,15 +7657,A,19.00,3.00,4.00,Female,1,Baseline,12 +7658,C,20.00,12.0,12.0,Male,1,Baseline,144 +7659,C,19.00,4.00,4.00,Female,1,Baseline,16 +7660,A,20.00,3.00,8.00,Male,1,Baseline,24 +7661,B,19.00,4.00,3.00,Female,1,Baseline,12 +7662,C,27.00,9.00,2.00,Female,1,Baseline,18 +7663,B,21.00,10.0,2.00,Female,1,Baseline,20 +7664,C,23.00,7.00,4.00,Female,1,Baseline,28 +7665,B,20.00,2.00,1.00,Male,1,Baseline,2 +7666,B,20.00,2.00,12.0,Male,1,Baseline,24 +7667,A,18.00,2.00,3.00,Female,1,Baseline,6 +7668,C,22.00,1.00,1.00,Female,1,Baseline,1 +7669,C,58.00,0.00,0.00,Male,0,Baseline,0 +7670,A,21.00,12.0,10.0,Male,1,Baseline,120 +7672,C,20.00,6.00,1.00,Female,1,Baseline,6 +7674,C,37.00,6.00,1.00,Male,1,Baseline,6 +7676,C,25.00,13.0,2.00,Female,1,Baseline,26 +7677,A,19.00,21.0,5.00,Male,1,Baseline,105 +7678,B,21.00,4.00,2.00,Female,1,Baseline,8 +7679,B,24.00,9.00,2.00,Female,1,Baseline,18 +7680,C,25.00,14.0,3.00,Male,1,Baseline,42 +7681,B,19.00,8.00,4.00,Female,1,Baseline,32 +7682,A,21.00,7.00,4.00,Male,1,Baseline,28 +7683,C,23.00,15.0,2.00,Female,1,Baseline,30 +7684,A,18.00,1.00,2.00,Female,1,Baseline,2 +7685,A,34.00,16.0,1.00,Female,1,Baseline,16 +7686,B,20.00,0.00,0.00,Female,0,Baseline,0 +7687,A,23.00,8.00,3.00,Male,1,Baseline,24 +7688,C,19.00,4.00,6.00,Female,1,Baseline,24 +7689,C,28.00,3.00,7.00,Male,1,Baseline,21 +7691,A,22.00,0.00,0.00,Male,0,Baseline,0 +7692,C,22.00,3.00,2.00,Female,1,Baseline,6 +7693,A,27.00,3.00,4.00,Female,1,Baseline,12 +7694,A,19.00,3.00,6.00,Female,1,Baseline,18 +7695,B,22.00,1.00,6.00,Female,1,Baseline,6 +7696,A,22.00,5.00,3.00,Female,1,Baseline,15 +7697,C,43.00,28.0,1.00,Female,1,Baseline,28 +7698,B,20.00,2.00,10.0,Female,1,Baseline,20 +7699,C,18.00,10.0,6.00,Male,1,Baseline,60 +7700,B,28.00,0.00,0.00,Female,0,Baseline,0 +7704,A,37.00,0.00,0.00,Female,0,Baseline,0 +7705,A,20.00,2.00,2.00,Female,1,Baseline,4 +7706,B,22.00,7.00,5.00,Female,1,Baseline,35 +7707,A,22.00,8.00,4.00,Male,1,Baseline,32 +7709,A,23.00,2.00,6.00,Female,1,Baseline,12 +7710,C,25.00,2.00,1.00,Female,1,Baseline,2 +7711,C,21.00,4.00,1.00,Female,1,Baseline,4 +7712,B,22.00,3.00,10.0,Male,1,Baseline,30 +7713,C,25.00,12.0,4.00,Female,1,Baseline,48 +7714,A,19.00,20.0,6.00,Female,1,Baseline,120 +7715,C,21.00,6.00,12.0,Male,1,Baseline,72 +7716,B,18.00,1.00,1.00,Female,1,Baseline,1 +7717,C,28.00,2.00,1.00,Female,1,Baseline,2 +7718,A,22.00,4.00,5.00,Female,1,Baseline,20 +7719,C,20.00,4.00,5.00,Female,1,Baseline,20 +7720,C,20.00,1.00,4.00,Male,1,Baseline,4 +7723,C,34.00,0.00,0.00,Male,0,Baseline,0 +7724,B,22.00,5.00,2.00,Male,1,Baseline,10 +7725,B,48.00,6.00,1.00,Male,1,Baseline,6 +7726,A,21.00,1.00,1.00,Male,1,Baseline,1 +7727,B,20.00,3.00,3.00,Female,1,Baseline,9 +7728,A,22.00,2.00,1.00,Female,1,Baseline,2 +7729,A,18.00,5.00,10.0,Male,1,Baseline,50 +7730,C,18.00,5.00,8.00,Female,1,Baseline,40 +7731,B,22.00,1.00,3.00,Female,1,Baseline,3 +7733,B,21.00,3.00,8.00,Female,1,Baseline,24 +7734,A,18.00,0.00,0.00,Female,0,Baseline,0 +7735,C,21.00,2.00,8.00,Female,1,Baseline,16 +7736,A,20.00,8.00,7.00,Female,1,Baseline,56 +7737,B,38.00,0.00,0.00,Female,0,Baseline,0 +7738,C,22.00,2.00,5.00,Female,1,Baseline,10 +7739,A,27.00,1.00,8.00,Female,1,Baseline,8 +7740,C,21.00,3.00,1.00,Female,1,Baseline,3 +7741,A,20.00,1.00,1.00,Female,1,Baseline,1 +7742,A,19.00,2.00,3.00,Male,1,Baseline,6 +7743,C,25.00,8.00,2.00,Male,1,Baseline,16 +7744,C,24.00,7.00,6.00,Male,1,Baseline,42 +7745,B,19.00,8.00,3.00,Female,1,Baseline,24 +7746,A,19.00,5.00,3.00,Female,1,Baseline,15 +7747,C,21.00,2.00,1.00,Male,1,Baseline,2 +7751,A,24.00,12.0,1.00,Male,1,Baseline,12 +7752,B,20.00,16.0,11.0,Female,1,Baseline,176 +7753,C,23.00,1.00,2.00,Female,1,Baseline,2 +7754,A,19.00,0.00,0.00,Female,0,Baseline,0 +7755,A,18.00,4.00,6.00,Female,1,Baseline,24 +7757,B,31.00,4.00,1.00,Female,1,Baseline,4 +7758,B,24.00,8.00,12.0,Female,1,Baseline,96 +7760,A,22.00,12.0,5.00,Male,1,Baseline,60 +7761,C,27.00,0.00,0.00,Female,0,Baseline,0 +7762,C,19.00,4.00,5.00,Female,1,Baseline,20 +7763,C,20.00,2.00,3.00,Female,1,Baseline,6 +7764,B,25.00,1.00,1.00,Male,1,Baseline,1 +7765,B,31.00,2.00,1.00,Male,1,Baseline,2 +7766,B,55.00,0.00,0.00,Female,0,Baseline,0 +7767,B,20.00,5.00,1.00,Female,1,Baseline,5 +7768,C,30.00,9.00,5.00,Female,1,Baseline,45 +7769,A,18.00,12.0,2.00,Female,1,Baseline,24 +7770,A,18.00,0.00,0.00,Female,0,Baseline,0 +7771,C,20.00,3.00,2.00,Female,1,Baseline,6 +7772,A,22.00,15.0,5.00,Female,1,Baseline,75 +7773,C,20.00,2.00,4.00,Female,1,Baseline,8 +7774,C,50.00,3.00,1.00,Female,1,Baseline,3 +7775,B,54.00,2.00,1.00,Female,1,Baseline,2 +7776,C,19.00,3.00,1.00,Female,1,Baseline,3 +7777,C,20.00,4.00,3.00,Male,1,Baseline,12 +7779,A,28.00,0.00,0.00,Female,0,Baseline,0 +7781,C,28.00,10.0,3.00,Male,1,Baseline,30 +7782,B,22.00,14.0,2.00,Female,1,Baseline,28 +7783,A,46.00,3.00,1.00,Male,1,Baseline,3 +7784,C,39.00,0.00,0.00,Female,0,Baseline,0 +7787,A,23.00,5.00,11.0,Male,1,Baseline,55 +7788,C,25.00,0.00,0.00,Male,0,Baseline,0 +7789,A,34.00,0.00,0.00,Female,0,Baseline,0 +7790,C,39.00,12.0,2.00,Female,1,Baseline,24 +7792,C,22.00,4.00,2.00,Female,1,Baseline,8 +7793,A,35.00,1.00,3.00,Female,1,Baseline,3 +7794,B,55.00,12.0,1.00,Female,1,Baseline,12 +7795,A,55.00,5.00,1.00,Female,1,Baseline,5 +7796,A,21.00,1.00,1.00,Female,1,Baseline,1 +7797,C,30.00,20.0,4.00,Male,1,Baseline,80 +7798,B,20.00,3.00,1.00,Female,1,Baseline,3 +7799,C,20.00,14.0,2.00,Female,1,Baseline,28 +7800,A,23.00,7.00,12.0,Female,1,Baseline,84 +7801,A,30.00,0.00,0.00,Female,0,Baseline,0 +7802,C,23.00,13.0,1.00,Female,1,Baseline,13 +7803,B,18.00,10.0,4.00,Male,1,Baseline,40 +7804,A,20.00,6.00,2.00,Female,1,Baseline,12 +7805,B,49.00,8.00,2.00,Female,1,Baseline,16 +7807,A,22.00,0.00,0.00,Male,0,Baseline,0 +7808,B,21.00,15.0,2.00,Female,1,Baseline,30 +7809,B,18.00,2.00,1.00,Female,1,Baseline,2 +7810,C,20.00,0.00,0.00,Female,0,Baseline,0 +7812,C,28.00,2.00,2.00,Female,1,Baseline,4 +7813,C,20.00,0.00,0.00,Female,0,Baseline,0 +7814,C,24.00,3.00,2.00,Female,1,Baseline,6 +7815,C,19.00,6.00,8.00,Female,1,Baseline,48 +7816,B,32.00,12.0,3.00,Female,1,Baseline,36 +7817,C,53.00,0.00,0.00,Female,0,Baseline,0 +7818,C,41.00,3.00,1.00,Female,1,Baseline,3 +7820,A,20.00,2.00,1.00,Female,1,Baseline,2 +7821,A,52.00,5.00,2.00,Female,1,Baseline,10 +7822,B,29.00,28.0,2.00,Female,1,Baseline,56 +7823,B,29.00,3.00,2.00,Female,1,Baseline,6 +7824,B,19.00,1.00,6.00,Female,1,Baseline,6 +7825,B,52.00,18.0,2.00,Female,1,Baseline,36 +7826,A,19.00,2.00,7.00,Female,1,Baseline,14 +7827,C,18.00,3.00,3.00,Female,1,Baseline,9 +7828,B,19.00,3.00,4.00,Female,1,Baseline,12 +7829,A,19.00,4.00,9.00,Female,1,Baseline,36 +7830,B,18.00,6.00,9.00,Female,1,Baseline,54 +7831,A,22.00,2.00,7.00,Female,1,Baseline,14 +7832,C,20.00,2.00,2.00,Female,1,Baseline,4 +7833,B,22.00,8.00,2.00,Female,1,Baseline,16 +7835,A,21.00,20.0,4.00,Male,1,Baseline,80 +7836,B,21.00,20.0,4.00,Male,1,Baseline,80 +7838,B,35.00,0.00,0.00,Female,0,Baseline,0 +7840,A,21.00,8.00,12.0,Female,1,Baseline,96 +7841,A,20.00,1.00,2.00,Female,1,Baseline,2 +7842,B,23.00,0.00,0.00,Male,0,Baseline,0 +7843,B,20.00,4.00,4.00,Male,1,Baseline,16 +7844,C,29.00,4.00,2.00,Female,1,Baseline,8 +7845,A,26.00,9.00,2.00,Female,1,Baseline,18 +7846,B,19.00,24.0,2.00,Male,1,Baseline,48 +7847,C,21.00,2.00,2.00,Female,1,Baseline,4 +7849,B,38.00,12.0,7.00,Male,1,Baseline,84 +7850,B,22.00,5.00,6.00,Male,1,Baseline,30 +7851,B,23.00,7.00,1.00,Female,1,Baseline,7 +7852,A,19.00,0.00,0.00,Female,0,Baseline,0 +7853,A,26.00,2.00,8.00,Male,1,Baseline,16 +7854,B,29.00,2.00,6.00,Male,1,Baseline,12 +7856,B,24.00,7.00,3.00,Female,1,Baseline,21 +7857,B,39.00,4.00,2.00,Female,1,Baseline,8 +7858,A,19.00,1.00,2.00,Female,1,Baseline,2 +7859,A,20.00,4.00,2.00,Male,1,Baseline,8 +7860,A,21.00,5.00,4.00,Female,1,Baseline,20 +7861,B,24.00,1.00,2.00,Male,1,Baseline,2 +7863,A,23.00,4.00,9.00,Male,1,Baseline,36 +7864,B,32.00,9.00,1.00,Female,1,Baseline,9 +7865,B,61.00,0.00,0.00,Female,0,Baseline,0 +7866,C,23.00,4.00,1.00,Male,1,Baseline,4 +7867,A,18.00,5.00,6.00,Male,1,Baseline,30 +7869,C,19.00,5.00,15.0,Female,1,Baseline,75 +7870,A,28.00,1.00,1.00,Female,1,Baseline,1 +7871,A,31.00,7.00,4.00,Male,1,Baseline,28 +7873,B,22.00,3.00,2.00,Female,1,Baseline,6 +7874,C,30.00,8.00,10.0,Male,1,Baseline,80 +7875,B,34.00,12.0,1.00,Male,1,Baseline,12 +7876,B,20.00,3.00,3.00,Female,1,Baseline,9 +7877,C,19.00,2.00,3.00,Female,1,Baseline,6 +7878,B,24.00,10.0,3.00,Female,1,Baseline,30 +7879,A,23.00,6.00,2.00,Female,1,Baseline,12 +7880,B,45.00,5.00,1.00,Female,1,Baseline,5 +7881,B,45.00,8.00,2.00,Female,1,Baseline,16 +7882,B,20.00,2.00,2.00,Female,1,Baseline,4 +7884,C,19.00,1.00,1.00,Female,1,Baseline,1 +7885,C,18.00,1.00,5.00,Female,1,Baseline,5 +7886,A,41.00,4.00,1.00,Male,1,Baseline,4 +7887,C,42.00,2.00,2.00,Female,1,Baseline,4 +7888,A,49.00,2.00,2.00,Female,1,Baseline,4 +7889,A,24.00,9.00,4.00,Female,1,Baseline,36 +7890,B,18.00,11.0,7.00,Female,1,Baseline,77 +7893,A,27.00,0.00,0.00,Female,0,Baseline,0 +7894,C,21.00,4.00,2.00,Male,1,Baseline,8 +7895,C,24.00,28.0,1.00,Female,1,Baseline,28 +7896,A,19.00,3.00,6.00,Female,1,Baseline,18 +7897,C,21.00,3.00,5.00,Female,1,Baseline,15 +7898,A,20.00,1.00,1.00,Female,1,Baseline,1 +7899,C,22.00,0.00,0.00,Male,0,Baseline,0 +7900,C,21.00,4.00,10.0,Male,1,Baseline,40 +7901,B,18.00,2.00,3.00,Male,1,Baseline,6 +7902,A,21.00,2.00,2.00,Male,1,Baseline,4 +7903,A,23.00,0.00,0.00,Female,0,Baseline,0 +7904,C,20.00,2.00,2.00,Female,1,Baseline,4 +7905,A,48.00,0.00,0.00,Female,0,Baseline,0 +7908,B,20.00,6.00,6.00,Female,1,Baseline,36 +7909,B,46.00,3.00,1.00,Female,1,Baseline,3 +7910,B,36.00,22.0,2.00,Female,1,Baseline,44 +7911,C,22.00,4.00,1.00,Female,1,Baseline,4 +7912,C,26.00,2.00,1.00,Male,1,Baseline,2 +7913,A,26.00,10.0,2.00,Female,1,Baseline,20 +7915,B,21.00,10.0,2.00,Female,1,Baseline,20 +7916,A,47.00,28.0,2.00,Female,1,Baseline,56 +7917,A,18.00,2.00,1.00,Female,1,Baseline,2 +7918,B,19.00,6.00,3.00,Male,1,Baseline,18 +7920,B,25.00,1.00,3.00,Female,1,Baseline,3 +7921,B,27.00,2.00,8.00,Male,1,Baseline,16 +7922,A,21.00,2.00,2.00,Female,1,Baseline,4 +7923,B,19.00,5.00,6.00,Female,1,Baseline,30 +7924,A,27.00,4.00,4.00,Male,1,Baseline,16 +7925,A,42.00,0.00,0.00,Female,0,Baseline,0 +7926,C,29.00,10.0,2.00,Male,1,Baseline,20 +7927,A,22.00,5.00,6.00,Female,1,Baseline,30 +7929,A,55.00,5.00,2.00,Female,1,Baseline,10 +7930,B,20.00,1.00,5.00,Female,1,Baseline,5 +7931,B,19.00,0.00,0.00,Female,0,Baseline,0 +7932,C,22.00,12.0,3.00,Female,1,Baseline,36 +7934,B,20.00,9.00,4.00,Male,1,Baseline,36 +7936,C,20.00,5.00,8.00,Female,1,Baseline,40 +7937,B,42.00,16.0,1.00,Female,1,Baseline,16 +7938,A,19.00,1.00,1.00,Female,1,Baseline,1 +7939,C,20.00,3.00,8.00,Male,1,Baseline,24 +7940,C,34.00,1.00,1.00,Female,1,Baseline,1 +7941,B,19.00,10.0,2.00,Male,1,Baseline,20 +7942,B,28.00,0.00,0.00,Female,0,Baseline,0 +7943,B,21.00,2.00,4.00,Female,1,Baseline,8 +7944,B,21.00,4.00,6.00,Female,1,Baseline,24 +7947,A,27.00,12.0,2.00,Female,1,Baseline,24 +7948,C,19.00,1.00,1.00,Female,1,Baseline,1 +7950,C,20.00,1.00,3.00,Female,1,Baseline,3 +7951,C,21.00,0.00,0.00,Male,0,Baseline,0 +7952,A,20.00,3.00,8.00,Female,1,Baseline,24 +7953,A,23.00,0.00,0.00,Female,0,Baseline,0 +7954,A,21.00,1.00,4.00,Female,1,Baseline,4 +7955,A,23.00,9.00,2.00,Female,1,Baseline,18 +7956,A,36.00,0.00,0.00,Male,0,Baseline,0 +7957,A,23.00,6.00,5.00,Female,1,Baseline,30 +7958,A,22.00,5.00,5.00,Female,1,Baseline,25 +7959,A,40.00,16.0,2.00,Female,1,Baseline,32 +7960,A,23.00,11.0,4.00,Female,1,Baseline,44 +7962,A,19.00,5.00,1.00,Female,1,Baseline,5 +7964,B,18.00,3.00,3.00,Female,1,Baseline,9 +7965,A,31.00,12.0,1.00,Male,1,Baseline,12 +7968,C,20.00,0.00,0.00,Male,0,Baseline,0 +7969,C,18.00,0.00,0.00,Female,0,Baseline,0 +7971,A,21.00,0.00,0.00,Female,0,Baseline,0 +7972,A,20.00,3.00,3.00,Female,1,Baseline,9 +7973,B,45.00,0.00,0.00,Male,0,Baseline,0 +7974,C,21.00,0.00,0.00,Female,0,Baseline,0 +7975,A,19.00,9.00,9.00,Male,1,Baseline,81 +7977,B,40.00,24.0,2.00,Female,1,Baseline,48 +7978,A,21.00,0.00,0.00,Male,0,Baseline,0 +7979,A,19.00,4.00,6.00,Male,1,Baseline,24 +7980,C,23.00,4.00,2.00,Female,1,Baseline,8 +7981,C,21.00,7.00,7.00,Male,1,Baseline,49 +7982,B,28.00,12.0,5.00,Male,1,Baseline,60 +7983,B,19.00,5.00,3.00,Female,1,Baseline,15 +7984,B,21.00,11.0,5.00,Female,1,Baseline,55 +7985,B,32.00,4.00,1.00,Female,1,Baseline,4 +7987,A,44.00,0.00,0.00,Female,0,Baseline,0 +7988,B,21.00,25.0,8.00,Male,1,Baseline,200 +7990,A,19.00,1.00,3.00,Female,1,Baseline,3 +7991,A,32.00,0.00,0.00,Male,0,Baseline,0 +7992,C,49.00,3.00,2.00,Female,1,Baseline,6 +7993,C,20.00,4.00,8.00,Female,1,Baseline,32 +7994,B,19.00,16.0,5.00,Female,1,Baseline,80 +7995,B,18.00,7.00,2.00,Female,1,Baseline,14 +7996,A,19.00,12.0,12.0,Male,1,Baseline,144 +7997,B,43.00,18.0,2.00,Female,1,Baseline,36 +7998,B,18.00,20.0,1.00,Female,1,Baseline,20 +7999,C,18.00,10.0,9.00,Female,1,Baseline,90 +8000,B,26.00,0.00,0.00,Male,0,Baseline,0 +8001,A,40.00,0.00,0.00,Male,0,Baseline,0 +8002,B,19.00,5.00,2.00,Female,1,Baseline,10 +8003,C,23.00,19.0,4.00,Male,1,Baseline,76 +8004,A,21.00,20.0,6.00,Male,1,Baseline,120 +8005,C,20.00,8.00,8.00,Female,1,Baseline,64 +8006,A,22.00,18.0,2.00,Male,1,Baseline,36 +8007,B,23.00,14.0,1.00,Male,1,Baseline,14 +8008,C,21.00,2.00,4.00,Female,1,Baseline,8 +8009,A,38.00,2.00,2.00,Female,1,Baseline,4 +8010,C,18.00,4.00,5.00,Male,1,Baseline,20 +8011,B,21.00,12.0,3.00,Female,1,Baseline,36 +8012,A,49.00,15.0,1.00,Female,1,Baseline,15 +8013,A,22.00,2.00,2.00,Male,1,Baseline,4 +8014,C,22.00,3.00,4.00,Female,1,Baseline,12 +8015,C,19.00,2.00,13.0,Female,1,Baseline,26 +8016,B,20.00,1.00,2.00,Male,1,Baseline,2 +8017,C,19.00,3.00,3.00,Female,1,Baseline,9 +8020,B,23.00,2.00,2.00,Male,1,Baseline,4 +8022,A,21.00,4.00,2.00,Female,1,Baseline,8 +8024,A,23.00,3.00,4.00,Female,1,Baseline,12 +8025,B,21.00,4.00,2.00,Male,1,Baseline,8 +8026,A,23.00,8.00,6.00,Male,1,Baseline,48 +8028,C,20.00,9.00,7.00,Female,1,Baseline,63 +8030,A,19.00,3.00,2.00,Female,1,Baseline,6 +8031,B,21.00,8.00,7.00,Female,1,Baseline,56 +8032,B,21.00,5.00,4.00,Female,1,Baseline,20 +8033,A,21.00,1.00,4.00,Female,1,Baseline,4 +8034,C,22.00,8.00,1.00,Male,1,Baseline,8 +8036,B,18.00,3.00,2.00,Female,1,Baseline,6 +8037,C,20.00,1.00,2.00,Male,1,Baseline,2 +8039,C,51.00,24.0,1.00,Female,1,Baseline,24 +8040,C,32.00,6.00,1.00,Female,1,Baseline,6 +8041,B,21.00,2.00,4.00,Female,1,Baseline,8 +8042,B,44.00,4.00,3.00,Male,1,Baseline,12 +8043,A,21.00,4.00,3.00,Female,1,Baseline,12 +8044,A,28.00,10.0,4.00,Male,1,Baseline,40 +8046,A,19.00,4.00,3.00,Male,1,Baseline,12 +8048,C,29.00,2.00,1.00,Female,1,Baseline,2 +8049,C,21.00,2.00,5.00,Female,1,Baseline,10 +8050,C,21.00,2.00,5.00,Female,1,Baseline,10 +8051,C,22.00,12.0,2.00,Male,1,Baseline,24 +8052,A,48.00,1.00,2.00,Female,1,Baseline,2 +8053,C,25.00,3.00,1.00,Female,1,Baseline,3 +8054,A,18.00,1.00,6.00,Female,1,Baseline,6 +8055,A,42.00,2.00,1.00,Female,1,Baseline,2 +8057,B,19.00,6.00,4.00,Male,1,Baseline,24 +8058,A,18.00,3.00,5.00,Female,1,Baseline,15 +8059,C,34.00,2.00,3.00,Male,1,Baseline,6 +8060,C,40.00,0.00,0.00,Female,0,Baseline,0 +8062,A,23.00,1.00,1.00,Female,1,Baseline,1 +8063,A,21.00,3.00,4.00,Female,1,Baseline,12 +8064,B,23.00,2.00,1.00,Male,1,Baseline,2 +8065,C,21.00,2.00,4.00,Male,1,Baseline,8 +8066,C,47.00,18.0,3.00,Female,1,Baseline,54 +8067,A,42.00,10.0,1.00,Female,1,Baseline,10 +8068,B,19.00,10.0,8.00,Female,1,Baseline,80 +8069,A,19.00,3.00,15.0,Male,1,Baseline,45 +8070,A,20.00,4.00,2.00,Female,1,Baseline,8 +8071,C,23.00,5.00,2.00,Male,1,Baseline,10 +8073,A,24.00,5.00,2.00,Female,1,Baseline,10 +8074,B,47.00,0.00,0.00,Female,0,Baseline,0 +8075,C,18.00,0.00,0.00,Male,0,Baseline,0 +8076,A,23.00,0.00,0.00,Male,0,Baseline,0 +8077,C,35.00,6.00,2.00,Female,1,Baseline,12 +8078,B,30.00,4.00,2.00,Female,1,Baseline,8 +8082,C,19.00,3.00,3.00,Female,1,Baseline,9 +8084,B,19.00,0.00,0.00,Female,0,Baseline,0 +8085,B,27.00,2.00,1.00,Female,1,Baseline,2 +8086,C,23.00,2.00,2.00,Female,1,Baseline,4 +8115,A,19.00,0.00,0.00,Female,0,Baseline,0 +8116,B,21.00,2.00,3.00,Female,1,Baseline,6 +8118,C,21.00,4.00,1.00,Female,1,Baseline,4 +8119,B,25.00,0.00,0.00,Female,0,Baseline,0 +8123,A,30.00,6.00,15.0,Male,1,Baseline,90 +8125,C,18.00,1.00,7.00,Female,1,Baseline,7 +8126,C,20.00,3.00,9.00,Male,1,Baseline,27 +8128,C,57.00,4.00,1.00,Female,1,Baseline,4 +8129,A,21.00,7.00,5.00,Female,1,Baseline,35 +2,B,20.00,0.00,0.00,Female,0,Followup,0 +5,A,21.00,0.00,0.00,Female,0,Followup,0 +6,A,20.00,12.0,2.00,Male,1,Followup,24 +7,A,22.00,0.00,0.00,Female,0,Followup,0 +8,A,18.00,0.00,0.00,Female,0,Followup,0 +10,A,23.00,12.0,2.00,Female,1,Followup,24 +11,B,26.00,0.00,0.00,Male,0,Followup,0 +12,A,20.00,1.00,1.00,Male,1,Followup,1 +13,B,19.00,1.00,6.00,Male,1,Followup,6 +14,A,24.00,4.00,2.00,Male,1,Followup,8 +15,A,26.00,0.00,0.00,Male,0,Followup,0 +16,A,20.00,6.00,5.00,Female,1,Followup,30 +17,A,19.00,8.00,15.0,Male,1,Followup,120 +19,A,21.00,1.00,1.00,Male,1,Followup,1 +20,A,26.00,0.00,0.00,Female,0,Followup,0 +22,C,19.00,6.00,2.00,Male,0,Followup,12 +23,B,22.00,0.00,0.00,Male,0,Followup,0 +25,A,18.00,0.00,0.00,Female,0,Followup,0 +26,C,23.00,0.00,0.00,Female,0,Followup,0 +28,A,20.00,2.00,3.00,Female,0,Followup,6 +29,C,24.00,7.00,1.00,Female,1,Followup,7 +31,C,31.00,0.00,0.00,Male,0,Followup,0 +32,B,22.00,4.00,2.00,Female,1,Followup,8 +34,A,22.00,4.00,7.00,Female,1,Followup,28 +35,C,27.00,4.00,2.00,Male,1,Followup,8 +36,A,42.00,0.00,0.00,Female,0,Followup,0 +37,B,39.00,0.00,0.00,Male,0,Followup,0 +38,C,23.00,2.00,8.00,Female,1,Followup,16 +39,A,28.00,28.0,3.00,Female,1,Followup,84 +41,B,33.00,3.00,2.00,Female,1,Followup,6 +43,B,24.00,0.00,0.00,Female,0,Followup,0 +44,A,21.00,3.00,1.00,Male,1,Followup,3 +45,A,19.00,0.00,0.00,Female,1,Followup,0 +50,C,19.00,1.00,2.00,Female,1,Followup,2 +52,B,20.00,0.00,0.00,Male,1,Followup,0 +53,B,20.00,28.0,3.00,Male,1,Followup,84 +54,C,18.00,10.0,6.00,Female,1,Followup,60 +55,C,20.00,1.00,3.00,Female,0,Followup,3 +56,C,23.00,0.00,0.00,Male,0,Followup,0 +57,B,22.00,0.00,0.00,Female,0,Followup,0 +59,A,18.00,0.00,0.00,Female,1,Followup,0 +60,C,19.00,2.00,7.00,Female,1,Followup,14 +62,B,19.00,0.00,0.00,Male,0,Followup,0 +63,B,27.00,3.00,3.00,Male,1,Followup,9 +64,B,22.00,2.00,5.00,Female,1,Followup,10 +67,C,49.00,2.00,3.00,Female,1,Followup,6 +68,B,20.00,2.00,8.00,Male,1,Followup,16 +72,C,22.00,5.00,2.00,Female,1,Followup,10 +73,C,22.00,0.00,0.00,Male,1,Followup,0 +75,A,23.00,4.00,2.00,Female,1,Followup,8 +76,A,21.00,10.0,2.00,Male,1,Followup,20 +78,B,28.00,0.00,0.00,Male,0,Followup,0 +79,B,27.00,4.00,3.00,Male,1,Followup,12 +82,B,50.00,5.00,2.00,Female,1,Followup,10 +85,B,21.00,4.00,1.00,Female,1,Followup,4 +87,B,18.00,2.00,6.00,Female,1,Followup,12 +89,A,20.00,1.00,6.00,Female,1,Followup,6 +90,A,31.00,4.00,1.00,Male,1,Followup,4 +91,C,25.00,0.00,0.00,Female,1,Followup,0 +95,C,21.00,15.0,3.00,Female,1,Followup,45 +96,B,67.00,5.00,1.00,Female,1,Followup,5 +97,C,23.00,15.0,2.00,Female,1,Followup,30 +98,A,19.00,3.00,16.0,Male,1,Followup,48 +99,B,20.00,4.00,5.00,Female,1,Followup,20 +100,C,23.00,3.00,1.00,Male,1,Followup,3 +102,A,20.00,0.00,0.00,Female,0,Followup,0 +104,A,47.00,16.0,2.00,Female,1,Followup,32 +105,B,32.00,10.0,1.00,Male,1,Followup,10 +106,C,29.00,0.00,0.00,Female,0,Followup,0 +107,A,19.00,9.00,1.00,Male,1,Followup,9 +108,C,38.00,3.00,2.00,Male,1,Followup,6 +109,C,40.00,12.0,1.00,Female,1,Followup,12 +110,A,18.00,0.00,0.00,Female,0,Followup,0 +112,B,21.00,4.00,4.00,Female,1,Followup,16 +113,A,20.00,0.00,0.00,Female,0,Followup,0 +114,C,17.00,0.00,0.00,Female,0,Followup,0 +115,C,22.00,0.00,0.00,Female,1,Followup,0 +116,B,26.00,8.00,2.00,Female,1,Followup,16 +117,A,21.00,0.00,0.00,Male,0,Followup,0 +118,B,20.00,5.00,2.00,Female,1,Followup,10 +119,C,22.00,0.00,0.00,Male,0,Followup,0 +120,A,23.00,8.00,2.00,Female,1,Followup,16 +121,A,18.00,0.00,0.00,Male,1,Followup,0 +122,B,21.00,8.00,3.00,Female,1,Followup,24 +123,A,18.00,1.00,6.00,Female,0,Followup,6 +124,A,45.00,3.00,1.00,Female,1,Followup,3 +125,A,20.00,0.00,0.00,Female,1,Followup,0 +126,B,22.00,3.00,2.00,Female,1,Followup,6 +127,A,44.00,16.0,2.00,Female,1,Followup,32 +128,B,19.00,1.00,10.0,Female,1,Followup,10 +129,C,23.00,1.00,7.00,Female,1,Followup,7 +130,B,34.00,3.00,2.00,Female,1,Followup,6 +131,C,20.00,15.0,7.00,Male,1,Followup,105 +132,A,21.00,2.00,2.00,Male,1,Followup,4 +136,A,34.00,2.00,2.00,Female,0,Followup,4 +137,A,22.00,0.00,0.00,Female,0,Followup,0 +139,B,28.00,6.00,2.00,Female,1,Followup,12 +141,A,30.00,0.00,0.00,Female,0,Followup,0 +143,C,19.00,4.00,18.0,Male,1,Followup,72 +144,C,22.00,0.00,0.00,Female,0,Followup,0 +145,A,36.00,5.00,3.00,Male,1,Followup,15 +146,A,18.00,2.00,1.00,Female,1,Followup,2 +147,C,18.00,6.00,8.00,Female,1,Followup,48 +150,B,18.00,1.00,2.00,Male,1,Followup,2 +151,B,26.00,0.00,0.00,Female,0,Followup,0 +152,C,27.00,14.0,1.00,Female,1,Followup,14 +154,C,21.00,0.00,0.00,Female,1,Followup,0 +156,B,21.00,0.00,0.00,Male,0,Followup,0 +159,A,19.00,12.0,6.00,Female,1,Followup,72 +160,B,37.00,4.00,6.00,Male,1,Followup,24 +161,B,20.00,1.00,2.00,Female,1,Followup,2 +162,C,19.00,0.00,0.00,Female,1,Followup,0 +163,C,20.00,5.00,5.00,Female,1,Followup,25 +164,B,21.00,4.00,2.00,Female,1,Followup,8 +165,C,40.00,7.00,2.00,Male,1,Followup,14 +167,A,45.00,24.0,1.00,Female,1,Followup,24 +168,C,22.00,4.00,2.00,Female,1,Followup,8 +169,B,24.00,7.00,3.00,Female,1,Followup,21 +170,C,20.00,5.00,8.00,Female,1,Followup,40 +171,C,26.00,1.00,1.00,Male,1,Followup,1 +172,A,20.00,3.00,4.00,Male,1,Followup,12 +173,A,25.00,0.00,0.00,Female,0,Followup,0 +174,C,50.00,28.0,1.00,Female,1,Followup,28 +175,A,22.00,0.00,0.00,Female,0,Followup,0 +180,A,20.00,0.00,0.00,Female,1,Followup,0 +181,A,25.00,4.00,6.00,Female,1,Followup,24 +182,A,24.00,5.00,2.00,Male,1,Followup,10 +183,C,18.00,0.00,0.00,Male,0,Followup,0 +184,C,18.00,0.00,0.00,Female,1,Followup,0 +185,A,50.00,0.00,0.00,Male,0,Followup,0 +186,C,39.00,0.00,0.00,Female,0,Followup,0 +187,C,47.00,10.0,2.00,Female,1,Followup,20 +189,A,18.00,0.00,0.00,Female,0,Followup,0 +190,C,25.00,5.00,2.00,Male,1,Followup,10 +191,B,18.00,0.00,0.00,Female,1,Followup,0 +194,A,41.00,14.0,2.00,Male,1,Followup,28 +195,A,23.00,1.00,4.00,Female,1,Followup,4 +196,B,23.00,2.00,2.00,Male,1,Followup,4 +198,B,22.00,4.00,4.00,Female,1,Followup,16 +200,C,39.00,20.0,1.00,Female,1,Followup,20 +201,A,22.00,3.00,5.00,Male,1,Followup,15 +202,A,18.00,0.00,0.00,Male,0,Followup,0 +203,C,23.00,4.00,4.00,Female,1,Followup,16 +204,B,22.00,0.00,0.00,Female,0,Followup,0 +205,A,21.00,4.00,6.00,Female,1,Followup,24 +206,A,43.00,8.00,1.00,Female,1,Followup,8 +207,C,19.00,0.00,0.00,Female,0,Followup,0 +208,C,26.00,10.0,1.00,Female,1,Followup,10 +209,B,21.00,0.00,0.00,Female,0,Followup,0 +211,A,21.00,2.00,6.00,Female,1,Followup,12 +212,A,20.00,0.00,0.00,Female,0,Followup,0 +214,C,29.00,3.00,1.00,Male,1,Followup,3 +215,A,30.00,10.0,2.00,Male,1,Followup,20 +216,C,19.00,0.00,0.00,Male,0,Followup,0 +217,A,25.00,3.00,3.00,Female,1,Followup,9 +218,A,24.00,6.00,4.00,Female,1,Followup,24 +219,B,20.00,2.00,5.00,Male,1,Followup,10 +220,C,23.00,3.00,2.00,Female,1,Followup,6 +221,A,46.00,20.0,2.00,Female,1,Followup,40 +223,A,48.00,4.00,2.00,Female,1,Followup,8 +224,A,18.00,0.00,0.00,Male,1,Followup,0 +225,A,31.00,2.00,3.00,Female,1,Followup,6 +226,C,22.00,4.00,2.00,Female,1,Followup,8 +229,C,20.00,0.00,0.00,Female,0,Followup,0 +230,C,44.00,8.00,2.00,Female,1,Followup,16 +231,A,19.00,0.00,0.00,Female,0,Followup,0 +232,C,29.00,24.0,1.00,Female,1,Followup,24 +233,C,19.00,0.00,0.00,Female,0,Followup,0 +234,C,18.00,1.00,2.00,Male,1,Followup,2 +235,B,45.00,10.0,1.00,Female,1,Followup,10 +236,B,18.00,1.00,1.00,Female,1,Followup,1 +237,A,21.00,5.00,3.00,Female,1,Followup,15 +238,B,26.00,4.00,3.00,Female,1,Followup,12 +240,B,22.00,9.00,4.00,Female,0,Followup,36 +241,B,26.00,8.00,2.00,Male,1,Followup,16 +242,B,19.00,4.00,1.00,Female,1,Followup,4 +245,C,19.00,2.00,5.00,Female,1,Followup,10 +246,B,26.00,8.00,4.00,Female,1,Followup,32 +247,C,45.00,24.0,1.00,Male,1,Followup,24 +248,C,25.00,6.00,2.00,Female,1,Followup,12 +249,A,18.00,2.00,2.00,Female,1,Followup,4 +250,B,30.00,1.00,1.00,Female,0,Followup,1 +251,B,21.00,0.00,0.00,Female,1,Followup,0 +253,B,31.00,2.00,1.00,Female,1,Followup,2 +254,A,32.00,0.00,0.00,Male,0,Followup,0 +255,A,29.00,4.00,12.0,Female,1,Followup,48 +258,C,21.00,3.00,1.00,Female,0,Followup,3 +259,C,23.00,1.00,10.0,Female,1,Followup,10 +260,C,20.00,4.00,2.00,Male,1,Followup,8 +261,C,22.00,5.00,3.00,Male,1,Followup,15 +262,B,19.00,0.00,0.00,Female,1,Followup,0 +263,A,21.00,12.0,20.0,Male,1,Followup,240 +265,C,20.00,24.0,2.00,Male,1,Followup,48 +267,B,24.00,1.00,1.00,Female,1,Followup,1 +268,B,27.00,3.00,2.00,Female,1,Followup,6 +269,C,47.00,0.00,0.00,Female,0,Followup,0 +270,A,20.00,3.00,3.00,Female,1,Followup,9 +271,B,21.00,0.00,0.00,Male,0,Followup,0 +272,C,22.00,4.00,2.00,Male,1,Followup,8 +273,A,19.00,0.00,0.00,Female,0,Followup,0 +276,A,44.00,1.00,1.00,Female,0,Followup,1 +277,A,21.00,0.00,0.00,Female,0,Followup,0 +278,A,25.00,9.00,4.00,Male,1,Followup,36 +279,C,22.00,3.00,2.00,Female,1,Followup,6 +282,A,22.00,5.00,1.00,Female,1,Followup,5 +283,A,19.00,1.00,2.00,Female,1,Followup,2 +285,A,26.00,7.00,3.00,Male,1,Followup,21 +286,B,22.00,4.00,1.00,Female,1,Followup,4 +287,C,19.00,0.00,0.00,Female,1,Followup,0 +288,C,54.00,9.00,2.00,Male,1,Followup,18 +289,C,38.00,16.0,2.00,Male,1,Followup,32 +290,A,18.00,1.00,2.00,Female,1,Followup,2 +291,C,52.00,0.00,0.00,Female,1,Followup,0 +292,C,20.00,2.00,4.00,Female,1,Followup,8 +293,C,18.00,3.00,4.00,Female,1,Followup,12 +294,A,27.00,1.00,3.00,Male,1,Followup,3 +296,A,20.00,0.00,0.00,Male,1,Followup,0 +297,B,20.00,3.00,9.00,Female,1,Followup,27 +298,C,23.00,10.0,2.00,Female,1,Followup,20 +300,A,20.00,1.00,1.00,Female,0,Followup,1 +302,A,22.00,0.00,0.00,Male,1,Followup,0 +306,B,23.00,5.00,6.00,Female,1,Followup,30 +307,B,22.00,2.00,7.00,Female,1,Followup,14 +308,A,19.00,5.00,5.00,Female,1,Followup,25 +309,A,40.00,6.00,1.00,Female,1,Followup,6 +310,A,18.00,4.00,6.00,Female,1,Followup,24 +311,C,45.00,3.00,1.00,Female,1,Followup,3 +312,A,22.00,6.00,4.00,Female,1,Followup,24 +313,C,27.00,21.0,3.00,Female,1,Followup,63 +314,A,51.00,20.0,1.00,Female,1,Followup,20 +315,A,21.00,8.00,4.00,Female,1,Followup,32 +316,C,20.00,12.0,6.00,Male,1,Followup,72 +317,C,23.00,0.00,0.00,Male,1,Followup,0 +318,A,19.00,0.00,0.00,Female,1,Followup,0 +319,B,22.00,7.00,1.00,Female,1,Followup,7 +320,B,19.00,0.00,0.00,Female,1,Followup,0 +321,B,21.00,4.00,2.00,Female,0,Followup,8 +322,C,50.00,14.0,6.00,Male,1,Followup,84 +323,A,22.00,6.00,2.00,Female,1,Followup,12 +324,A,20.00,2.00,1.00,Female,1,Followup,2 +325,C,21.00,4.00,18.0,Male,1,Followup,72 +326,C,28.00,0.00,0.00,Female,0,Followup,0 +327,A,53.00,0.00,0.00,Male,0,Followup,0 +328,A,49.00,4.00,1.00,Female,1,Followup,4 +329,B,21.00,1.00,8.00,Female,1,Followup,8 +331,A,26.00,0.00,0.00,Female,0,Followup,0 +332,C,21.00,3.00,8.00,Female,1,Followup,24 +333,B,23.00,1.00,1.00,Female,1,Followup,1 +334,C,25.00,3.00,2.00,Female,1,Followup,6 +335,C,23.00,2.00,2.00,Female,1,Followup,4 +336,A,18.00,2.00,5.00,Female,1,Followup,10 +338,B,20.00,1.00,3.00,Female,0,Followup,3 +339,A,39.00,4.00,2.00,Male,1,Followup,8 +341,B,26.00,4.00,3.00,Female,1,Followup,12 +342,A,21.00,1.00,1.00,Female,1,Followup,1 +343,B,18.00,4.00,5.00,Female,1,Followup,20 +344,B,20.00,0.00,0.00,Female,0,Followup,0 +346,A,52.00,1.00,1.00,Male,0,Followup,1 +347,B,20.00,0.00,0.00,Female,1,Followup,0 +349,C,22.00,2.00,5.00,Female,1,Followup,10 +350,B,18.00,2.00,2.00,Female,1,Followup,4 +352,C,24.00,1.00,1.00,Female,1,Followup,1 +354,C,20.00,3.00,4.00,Male,1,Followup,12 +355,A,53.00,3.00,1.00,Female,1,Followup,3 +357,B,22.00,1.00,4.00,Male,1,Followup,4 +358,B,19.00,1.00,4.00,Female,1,Followup,4 +359,B,19.00,4.00,8.00,Female,1,Followup,32 +360,C,18.00,0.00,0.00,Female,1,Followup,0 +361,B,22.00,7.00,1.00,Male,1,Followup,7 +362,C,35.00,0.00,0.00,Male,0,Followup,0 +364,A,23.00,2.00,4.00,Female,1,Followup,8 +365,B,26.00,0.00,0.00,Female,1,Followup,0 +366,A,21.00,2.00,8.00,Female,1,Followup,16 +368,B,20.00,3.00,3.00,Female,1,Followup,9 +369,C,19.00,3.00,8.00,Male,1,Followup,24 +371,A,21.00,1.00,7.00,Female,1,Followup,7 +372,A,30.00,12.0,1.00,Male,1,Followup,12 +373,C,22.00,2.00,6.00,Male,1,Followup,12 +374,A,40.00,0.00,0.00,Female,0,Followup,0 +375,A,22.00,3.00,6.00,Male,1,Followup,18 +376,B,20.00,9.00,2.00,Male,1,Followup,18 +378,C,19.00,0.00,0.00,Male,1,Followup,0 +379,C,23.00,0.00,0.00,Female,0,Followup,0 +381,A,22.00,5.00,10.0,Male,1,Followup,50 +382,C,23.00,4.00,2.00,Male,1,Followup,8 +383,B,21.00,0.00,0.00,Male,0,Followup,0 +384,B,20.00,0.00,0.00,Female,1,Followup,0 +385,B,24.00,0.00,0.00,Female,0,Followup,0 +386,C,20.00,0.00,0.00,Female,0,Followup,0 +387,C,56.00,0.00,0.00,Female,0,Followup,0 +388,A,32.00,26.0,2.00,Female,1,Followup,52 +389,C,19.00,5.00,2.00,Male,1,Followup,10 +390,C,22.00,0.00,0.00,Female,0,Followup,0 +391,C,21.00,0.00,0.00,Male,0,Followup,0 +393,A,19.00,4.00,4.00,Female,1,Followup,16 +394,A,22.00,1.00,1.00,Female,1,Followup,1 +395,C,22.00,0.00,0.00,Male,0,Followup,0 +397,A,20.00,0.00,0.00,Female,0,Followup,0 +398,A,20.00,3.00,4.00,Male,1,Followup,12 +399,C,22.00,1.00,5.00,Female,1,Followup,5 +400,B,20.00,3.00,8.00,Female,1,Followup,24 +401,A,20.00,5.00,3.00,Female,1,Followup,15 +402,C,24.00,4.00,2.00,Female,1,Followup,8 +404,C,20.00,3.00,3.00,Female,1,Followup,9 +405,B,47.00,28.0,4.00,Male,1,Followup,112 +406,A,41.00,0.00,0.00,Female,0,Followup,0 +407,C,23.00,10.0,6.00,Male,1,Followup,60 +409,A,26.00,7.00,2.00,Female,1,Followup,14 +410,A,19.00,4.00,3.00,Female,1,Followup,12 +411,A,22.00,2.00,18.0,Male,1,Followup,36 +412,A,31.00,0.00,0.00,Female,0,Followup,0 +414,C,18.00,4.00,15.0,Male,1,Followup,60 +416,C,23.00,2.00,1.00,Female,1,Followup,2 +418,A,35.00,4.00,1.00,Female,1,Followup,4 +420,B,36.00,10.0,1.00,Male,1,Followup,10 +421,B,24.00,6.00,2.00,Female,1,Followup,12 +424,A,21.00,1.00,4.00,Female,1,Followup,4 +425,B,29.00,4.00,5.00,Female,1,Followup,20 +426,A,50.00,20.0,1.00,Female,1,Followup,20 +427,C,22.00,0.00,0.00,Male,1,Followup,0 +428,A,20.00,3.00,2.00,Male,1,Followup,6 +429,B,21.00,10.0,1.00,Female,1,Followup,10 +430,B,21.00,16.0,2.00,Male,1,Followup,32 +431,A,19.00,5.00,1.00,Male,1,Followup,5 +432,A,22.00,2.00,4.00,Female,0,Followup,8 +433,B,24.00,0.00,0.00,Female,0,Followup,0 +434,B,28.00,5.00,5.00,Male,1,Followup,25 +435,B,34.00,0.00,0.00,Male,1,Followup,0 +436,C,18.00,0.00,0.00,Female,0,Followup,0 +437,A,21.00,4.00,6.00,Female,1,Followup,24 +438,B,24.00,12.0,2.00,Male,1,Followup,24 +439,C,22.00,1.00,8.00,Male,1,Followup,8 +440,C,19.00,5.00,2.00,Female,1,Followup,10 +441,B,22.00,2.00,8.00,Female,1,Followup,16 +442,A,23.00,10.0,1.00,Male,1,Followup,10 +443,B,44.00,27.0,1.00,Female,1,Followup,27 +444,C,20.00,2.00,7.00,Male,1,Followup,14 +445,A,30.00,6.00,1.00,Male,1,Followup,6 +446,A,19.00,0.00,0.00,Female,1,Followup,0 +448,A,18.00,1.00,3.00,Female,1,Followup,3 +449,C,19.00,0.00,0.00,Male,1,Followup,0 +451,C,23.00,2.00,5.00,Male,1,Followup,10 +452,B,24.00,2.00,1.00,Female,1,Followup,2 +453,A,22.00,3.00,4.00,Female,1,Followup,12 +454,B,23.00,6.00,12.0,Female,1,Followup,72 +456,A,20.00,2.00,4.00,Female,1,Followup,8 +457,C,20.00,3.00,6.00,Female,1,Followup,18 +458,A,25.00,24.0,5.00,Female,1,Followup,120 +459,A,22.00,1.00,7.00,Female,1,Followup,7 +460,C,49.00,0.00,0.00,Female,0,Followup,0 +462,B,22.00,6.00,6.00,Female,1,Followup,36 +463,B,29.00,12.0,2.00,Female,1,Followup,24 +464,A,19.00,0.00,0.00,Female,0,Followup,0 +465,B,21.00,0.00,0.00,Male,1,Followup,0 +467,C,23.00,0.00,0.00,Female,0,Followup,0 +468,A,21.00,1.00,2.00,Male,1,Followup,2 +469,C,19.00,2.00,2.00,Male,1,Followup,4 +470,A,24.00,2.00,2.00,Male,1,Followup,4 +471,B,21.00,7.00,2.00,Male,1,Followup,14 +472,A,19.00,2.00,3.00,Female,1,Followup,6 +473,B,21.00,4.00,2.00,Female,1,Followup,8 +474,B,36.00,2.00,1.00,Female,1,Followup,2 +475,C,56.00,0.00,0.00,Male,1,Followup,0 +476,A,23.00,0.00,0.00,Female,0,Followup,0 +477,B,18.00,0.00,0.00,Female,1,Followup,0 +478,C,19.00,4.00,8.00,Male,1,Followup,32 +479,A,26.00,4.00,2.00,Male,1,Followup,8 +480,C,41.00,2.00,2.00,Female,1,Followup,4 +481,B,42.00,2.00,3.00,Male,1,Followup,6 +482,C,27.00,4.00,2.00,Female,1,Followup,8 +484,B,23.00,3.00,1.00,Female,1,Followup,3 +485,B,19.00,0.00,0.00,Male,1,Followup,0 +486,C,21.00,3.00,4.00,Female,1,Followup,12 +487,A,28.00,4.00,3.00,Female,1,Followup,12 +489,C,28.00,0.00,0.00,Female,1,Followup,0 +490,C,22.00,6.00,10.0,Female,1,Followup,60 +491,C,21.00,1.00,3.00,Female,1,Followup,3 +492,A,21.00,1.00,12.0,Female,1,Followup,12 +493,B,20.00,1.00,3.00,Female,1,Followup,3 +494,C,21.00,3.00,2.00,Female,0,Followup,6 +495,C,35.00,6.00,1.00,Male,1,Followup,6 +496,A,22.00,8.00,3.00,Female,1,Followup,24 +497,C,20.00,4.00,4.00,Female,1,Followup,16 +498,B,33.00,0.00,0.00,Female,0,Followup,0 +500,B,32.00,2.00,3.00,Male,1,Followup,6 +501,A,35.00,2.00,1.00,Male,1,Followup,2 +502,C,45.00,2.00,1.00,Male,0,Followup,2 +503,B,23.00,3.00,1.00,Male,1,Followup,3 +504,A,22.00,4.00,4.00,Male,1,Followup,16 +505,C,19.00,7.00,2.00,Female,1,Followup,14 +506,B,20.00,5.00,3.00,Female,1,Followup,15 +508,B,19.00,1.00,7.00,Female,1,Followup,7 +509,C,18.00,1.00,1.00,Female,1,Followup,1 +510,B,37.00,7.00,2.00,Female,1,Followup,14 +511,A,34.00,4.00,1.00,Female,1,Followup,4 +512,C,29.00,1.00,5.00,Female,1,Followup,5 +513,A,37.00,18.0,1.00,Female,1,Followup,18 +514,B,36.00,5.00,2.00,Male,1,Followup,10 +515,B,19.00,1.00,4.00,Female,1,Followup,4 +516,A,24.00,4.00,1.00,Female,1,Followup,4 +517,A,22.00,0.00,0.00,Female,1,Followup,0 +518,C,25.00,23.0,1.00,Female,1,Followup,23 +519,A,17.00,6.00,3.00,Female,1,Followup,18 +520,A,19.00,6.00,1.00,Male,1,Followup,6 +521,B,42.00,2.00,1.00,Female,1,Followup,2 +522,B,34.00,0.00,0.00,Female,0,Followup,0 +523,A,22.00,0.00,0.00,Male,1,Followup,0 +524,C,20.00,6.00,6.00,Female,1,Followup,36 +525,A,39.00,0.00,0.00,Female,1,Followup,0 +526,C,49.00,5.00,1.00,Female,1,Followup,5 +528,C,20.00,1.00,1.00,Female,1,Followup,1 +529,C,47.00,4.00,2.00,Male,1,Followup,8 +530,A,25.00,0.00,0.00,Male,0,Followup,0 +531,B,20.00,0.00,0.00,Male,1,Followup,0 +532,B,20.00,0.00,0.00,Female,0,Followup,0 +533,C,21.00,3.00,8.00,Female,1,Followup,24 +536,C,20.00,1.00,1.00,Male,1,Followup,1 +537,C,18.00,4.00,5.00,Female,1,Followup,20 +538,A,19.00,9.00,10.0,Female,1,Followup,90 +539,B,42.00,0.00,0.00,Female,1,Followup,0 +541,A,44.00,1.00,1.00,Female,1,Followup,1 +542,A,18.00,6.00,8.00,Female,1,Followup,48 +543,A,19.00,2.00,2.00,Male,1,Followup,4 +544,B,22.00,3.00,3.00,Female,0,Followup,9 +545,A,18.00,0.00,0.00,Female,0,Followup,0 +547,C,26.00,5.00,1.00,Female,1,Followup,5 +549,B,21.00,0.00,0.00,Male,0,Followup,0 +550,C,22.00,0.00,0.00,Male,0,Followup,0 +552,B,21.00,2.00,8.00,Male,1,Followup,16 +553,C,19.00,3.00,2.00,Male,1,Followup,6 +554,C,19.00,0.00,0.00,Female,0,Followup,0 +555,A,24.00,6.00,2.00,Female,1,Followup,12 +556,C,21.00,2.00,3.00,Female,0,Followup,6 +557,A,47.00,8.00,2.00,Female,1,Followup,16 +558,B,25.00,0.00,0.00,Female,0,Followup,0 +559,C,19.00,0.00,0.00,Female,0,Followup,0 +561,B,30.00,5.00,1.00,Female,1,Followup,5 +562,B,24.00,2.00,5.00,Female,1,Followup,10 +563,B,27.00,0.00,0.00,Male,0,Followup,0 +564,B,19.00,2.00,1.00,Female,1,Followup,2 +566,A,26.00,2.00,2.00,Female,1,Followup,4 +567,C,23.00,2.00,2.00,Female,1,Followup,4 +568,B,26.00,2.00,1.00,Male,1,Followup,2 +569,A,22.00,0.00,0.00,Female,0,Followup,0 +570,B,20.00,2.00,1.00,Female,1,Followup,2 +571,A,19.00,0.00,0.00,Female,1,Followup,0 +572,A,20.00,0.00,0.00,Female,1,Followup,0 +573,A,20.00,2.00,3.00,Female,1,Followup,6 +574,B,22.00,7.00,2.00,Male,1,Followup,14 +576,A,19.00,2.00,1.00,Male,1,Followup,2 +577,A,19.00,3.00,7.00,Female,1,Followup,21 +579,B,20.00,1.00,7.00,Male,1,Followup,7 +580,C,21.00,3.00,4.00,Female,1,Followup,12 +583,A,21.00,3.00,2.00,Female,1,Followup,6 +584,C,25.00,2.00,1.00,Male,1,Followup,2 +587,B,30.00,4.00,1.00,Female,1,Followup,4 +588,A,22.00,2.00,4.00,Female,1,Followup,8 +589,A,50.00,8.00,1.00,Male,1,Followup,8 +591,A,35.00,1.00,2.00,Male,1,Followup,2 +592,C,26.00,0.00,0.00,Male,1,Followup,0 +595,C,41.00,28.0,2.00,Female,1,Followup,56 +596,A,20.00,4.00,4.00,Female,1,Followup,16 +597,B,24.00,2.00,2.00,Female,1,Followup,4 +598,C,29.00,3.00,2.00,Female,1,Followup,6 +601,A,21.00,4.00,2.00,Female,1,Followup,8 +603,A,19.00,0.00,0.00,Female,0,Followup,0 +604,C,63.00,0.00,0.00,Female,0,Followup,0 +605,C,23.00,3.00,7.00,Female,1,Followup,21 +608,A,23.00,2.00,1.00,Female,1,Followup,2 +609,C,31.00,4.00,1.00,Male,1,Followup,4 +610,A,21.00,0.00,0.00,Female,1,Followup,0 +611,B,20.00,1.00,2.00,Female,1,Followup,2 +612,A,19.00,0.00,0.00,Male,0,Followup,0 +613,A,24.00,0.00,0.00,Female,0,Followup,0 +614,B,20.00,12.0,5.00,Male,1,Followup,60 +615,C,24.00,3.00,5.00,Male,1,Followup,15 +616,C,22.00,1.00,1.00,Female,1,Followup,1 +619,B,22.00,1.00,2.00,Female,1,Followup,2 +620,A,19.00,4.00,10.0,Male,1,Followup,40 +621,A,51.00,25.0,3.00,Female,1,Followup,75 +622,A,18.00,1.00,3.00,Female,1,Followup,3 +624,A,34.00,0.00,0.00,Male,0,Followup,0 +625,B,20.00,0.00,0.00,Female,1,Followup,0 +628,B,24.00,6.00,3.00,Male,1,Followup,18 +629,A,19.00,4.00,8.00,Female,1,Followup,32 +630,B,19.00,0.00,0.00,Male,0,Followup,0 +631,A,19.00,3.00,2.00,Female,0,Followup,6 +632,B,22.00,0.00,0.00,Female,1,Followup,0 +633,C,25.00,3.00,2.00,Male,1,Followup,6 +634,A,20.00,6.00,2.00,Female,1,Followup,12 +636,A,22.00,1.00,2.00,Female,1,Followup,2 +637,C,20.00,2.00,6.00,Male,1,Followup,12 +638,C,22.00,14.0,2.00,Female,1,Followup,28 +639,A,50.00,10.0,1.00,Female,1,Followup,10 +640,C,21.00,1.00,1.00,Female,1,Followup,1 +641,A,21.00,1.00,1.00,Male,0,Followup,1 +643,B,22.00,5.00,4.00,Male,1,Followup,20 +644,A,20.00,0.00,0.00,Female,0,Followup,0 +645,A,19.00,4.00,4.00,Female,1,Followup,16 +646,B,19.00,0.00,0.00,Male,1,Followup,0 +647,A,18.00,0.00,0.00,Female,0,Followup,0 +648,A,48.00,8.00,1.00,Female,1,Followup,8 +649,A,19.00,0.00,0.00,Male,0,Followup,0 +650,A,21.00,5.00,4.00,Female,1,Followup,20 +651,A,23.00,10.0,3.00,Female,1,Followup,30 +652,C,45.00,8.00,1.00,Female,1,Followup,8 +653,B,21.00,1.00,1.00,Female,1,Followup,1 +655,B,21.00,0.00,0.00,Female,1,Followup,0 +656,A,22.00,20.0,2.00,Male,1,Followup,40 +657,A,21.00,3.00,6.00,Female,1,Followup,18 +658,B,20.00,0.00,0.00,Female,0,Followup,0 +659,B,22.00,0.00,0.00,Female,1,Followup,0 +660,A,24.00,0.00,0.00,Female,0,Followup,0 +661,A,24.00,2.00,3.00,Female,1,Followup,6 +662,C,53.00,21.0,1.00,Female,1,Followup,21 +663,C,19.00,5.00,2.00,Female,1,Followup,10 +665,B,25.00,4.00,12.0,Male,1,Followup,48 +666,B,49.00,28.0,2.00,Male,1,Followup,56 +668,C,22.00,1.00,5.00,Male,1,Followup,5 +669,A,24.00,8.00,1.00,Male,1,Followup,8 +670,C,30.00,12.0,1.00,Female,1,Followup,12 +671,C,31.00,0.00,0.00,Female,0,Followup,0 +672,B,23.00,2.00,1.00,Female,1,Followup,2 +674,C,25.00,2.00,1.00,Female,1,Followup,2 +675,A,18.00,2.00,10.0,Male,1,Followup,20 +677,A,27.00,7.00,4.00,Female,1,Followup,28 +679,C,21.00,4.00,16.0,Male,1,Followup,64 +680,B,19.00,0.00,0.00,Female,1,Followup,0 +681,C,20.00,6.00,7.00,Female,1,Followup,42 +682,B,21.00,6.00,12.0,Male,1,Followup,72 +683,B,53.00,2.00,1.00,Female,1,Followup,2 +684,A,20.00,0.00,0.00,Female,0,Followup,0 +685,B,22.00,2.00,7.00,Female,1,Followup,14 +686,A,22.00,2.00,1.00,Female,1,Followup,2 +687,A,24.00,8.00,4.00,Female,1,Followup,32 +688,C,28.00,0.00,0.00,Male,0,Followup,0 +690,B,21.00,2.00,4.00,Female,1,Followup,8 +691,A,24.00,4.00,2.00,Male,1,Followup,8 +692,B,20.00,2.00,2.00,Male,1,Followup,4 +693,A,28.00,4.00,1.00,Female,1,Followup,4 +694,C,21.00,2.00,1.00,Female,1,Followup,2 +695,B,20.00,3.00,8.00,Female,1,Followup,24 +696,C,22.00,0.00,0.00,Female,1,Followup,0 +697,A,19.00,2.00,2.00,Female,1,Followup,4 +698,A,19.00,3.00,1.00,Female,1,Followup,3 +699,B,21.00,2.00,6.00,Female,1,Followup,12 +701,B,31.00,0.00,0.00,Female,0,Followup,0 +702,A,29.00,9.00,2.00,Female,1,Followup,18 +704,A,20.00,0.00,0.00,Female,1,Followup,0 +705,C,21.00,5.00,2.00,Female,1,Followup,10 +706,A,24.00,2.00,4.00,Female,1,Followup,8 +707,C,30.00,10.0,2.00,Female,1,Followup,20 +708,C,21.00,3.00,1.00,Female,1,Followup,3 +711,B,22.00,6.00,4.00,Male,1,Followup,24 +713,C,20.00,0.00,0.00,Female,1,Followup,0 +714,C,57.00,12.0,1.00,Female,1,Followup,12 +715,A,23.00,5.00,1.00,Female,1,Followup,5 +717,A,21.00,3.00,6.00,Male,1,Followup,18 +719,B,19.00,0.00,0.00,Male,0,Followup,0 +720,C,17.00,4.00,10.0,Male,1,Followup,40 +721,C,18.00,2.00,1.00,Male,1,Followup,2 +722,C,24.00,15.0,2.00,Male,1,Followup,30 +723,A,21.00,1.00,1.00,Female,1,Followup,1 +725,B,19.00,0.00,0.00,Male,0,Followup,0 +727,B,20.00,6.00,15.0,Male,1,Followup,90 +728,A,20.00,0.00,0.00,Female,0,Followup,0 +729,B,19.00,0.00,0.00,Female,1,Followup,0 +730,A,25.00,2.00,4.00,Male,1,Followup,8 +731,B,26.00,4.00,2.00,Female,1,Followup,8 +733,A,23.00,4.00,3.00,Female,1,Followup,12 +734,A,22.00,0.00,0.00,Female,0,Followup,0 +735,A,19.00,0.00,0.00,Female,0,Followup,0 +736,B,21.00,1.00,2.00,Female,1,Followup,2 +737,B,18.00,8.00,14.0,Male,1,Followup,112 +739,A,24.00,0.00,0.00,Male,0,Followup,0 +740,A,21.00,4.00,4.00,Female,1,Followup,16 +741,B,22.00,1.00,5.00,Male,1,Followup,5 +742,C,53.00,2.00,1.00,Male,1,Followup,2 +743,B,31.00,8.00,1.00,Female,1,Followup,8 +744,B,21.00,0.00,0.00,Male,1,Followup,0 +746,B,32.00,2.00,2.00,Female,1,Followup,4 +747,B,24.00,3.00,2.00,Male,1,Followup,6 +748,C,20.00,2.00,5.00,Female,1,Followup,10 +749,C,24.00,21.0,2.00,Female,1,Followup,42 +750,C,34.00,0.00,0.00,Female,0,Followup,0 +751,A,21.00,3.00,6.00,Female,1,Followup,18 +752,C,20.00,2.00,8.00,Female,1,Followup,16 +755,C,22.00,6.00,9.00,Female,1,Followup,54 +757,B,21.00,1.00,4.00,Female,1,Followup,4 +758,B,21.00,2.00,12.0,Male,1,Followup,24 +759,B,38.00,5.00,1.00,Male,1,Followup,5 +760,C,22.00,6.00,6.00,Male,1,Followup,36 +761,C,18.00,0.00,0.00,Male,1,Followup,0 +763,A,34.00,5.00,2.00,Male,1,Followup,10 +764,B,21.00,3.00,1.00,Male,1,Followup,3 +765,B,23.00,1.00,2.00,Female,1,Followup,2 +766,C,21.00,0.00,0.00,Female,0,Followup,0 +767,A,22.00,6.00,2.00,Male,1,Followup,12 +768,C,38.00,12.0,1.00,Female,1,Followup,12 +769,A,24.00,6.00,2.00,Female,1,Followup,12 +770,C,19.00,0.00,0.00,Female,0,Followup,0 +771,B,21.00,0.00,0.00,Female,0,Followup,0 +772,C,18.00,0.00,0.00,Female,0,Followup,0 +775,A,22.00,0.00,0.00,Female,0,Followup,0 +776,C,20.00,0.00,0.00,Female,1,Followup,0 +778,B,23.00,0.00,0.00,Female,1,Followup,0 +779,B,19.00,0.00,0.00,Female,1,Followup,0 +780,C,18.00,0.00,0.00,Female,0,Followup,0 +781,C,18.00,2.00,1.00,Female,1,Followup,2 +782,C,25.00,4.00,1.00,Female,1,Followup,4 +783,C,19.00,1.00,5.00,Female,0,Followup,5 +784,B,30.00,2.00,2.00,Female,1,Followup,4 +786,C,50.00,2.00,1.00,Male,0,Followup,2 +787,A,21.00,3.00,5.00,Female,1,Followup,15 +788,B,20.00,8.00,3.00,Female,1,Followup,24 +789,C,20.00,4.00,1.00,Female,1,Followup,4 +791,B,19.00,0.00,0.00,Female,0,Followup,0 +792,B,18.00,2.00,2.00,Male,1,Followup,4 +794,B,20.00,2.00,10.0,Female,1,Followup,20 +795,C,18.00,2.00,2.00,Male,1,Followup,4 +796,C,64.00,0.00,0.00,Female,1,Followup,0 +797,B,49.00,0.00,0.00,Female,0,Followup,0 +798,C,21.00,5.00,8.00,Female,1,Followup,40 +799,C,22.00,4.00,7.00,Male,1,Followup,28 +801,C,23.00,0.00,0.00,Male,0,Followup,0 +802,B,32.00,4.00,6.00,Male,1,Followup,24 +803,B,22.00,4.00,3.00,Female,1,Followup,12 +805,B,18.00,0.00,0.00,Female,1,Followup,0 +807,A,24.00,5.00,3.00,Female,1,Followup,15 +808,B,25.00,12.0,2.00,Male,1,Followup,24 +809,B,22.00,12.0,3.00,Female,1,Followup,36 +810,C,20.00,9.00,6.00,Female,1,Followup,54 +812,B,20.00,4.00,4.00,Female,1,Followup,16 +814,A,19.00,2.00,3.00,Male,1,Followup,6 +815,A,19.00,4.00,1.00,Female,1,Followup,4 +816,A,19.00,0.00,0.00,Female,1,Followup,0 +817,C,20.00,0.00,0.00,Male,0,Followup,0 +818,B,23.00,1.00,7.00,Female,1,Followup,7 +819,A,22.00,3.00,3.00,Female,1,Followup,9 +820,B,23.00,3.00,3.00,Female,1,Followup,9 +821,C,34.00,0.00,0.00,Female,0,Followup,0 +822,B,22.00,2.00,1.00,Female,1,Followup,2 +823,B,22.00,5.00,2.00,Female,1,Followup,10 +824,B,23.00,14.0,1.00,Male,1,Followup,14 +825,C,35.00,4.00,1.00,Female,1,Followup,4 +826,C,22.00,3.00,5.00,Male,1,Followup,15 +827,C,20.00,2.00,3.00,Female,1,Followup,6 +828,A,25.00,10.0,2.00,Female,1,Followup,20 +829,A,19.00,0.00,0.00,Male,0,Followup,0 +830,A,22.00,1.00,2.00,Male,1,Followup,2 +831,B,21.00,12.0,6.00,Male,1,Followup,72 +832,A,21.00,2.00,2.00,Female,1,Followup,4 +833,B,18.00,0.00,0.00,Male,1,Followup,0 +835,A,57.00,0.00,0.00,Female,0,Followup,0 +836,B,18.00,0.00,0.00,Female,0,Followup,0 +839,C,34.00,9.00,3.00,Female,1,Followup,27 +840,B,33.00,4.00,4.00,Male,1,Followup,16 +841,C,20.00,0.00,0.00,Female,1,Followup,0 +842,C,22.00,8.00,8.00,Female,1,Followup,64 +843,C,19.00,1.00,7.00,Female,1,Followup,7 +844,B,20.00,0.00,0.00,Female,1,Followup,0 +845,C,21.00,4.00,2.00,Male,1,Followup,8 +846,C,22.00,5.00,3.00,Male,1,Followup,15 +848,A,22.00,3.00,7.00,Female,1,Followup,21 +849,A,22.00,5.00,2.00,Male,1,Followup,10 +850,B,18.00,0.00,0.00,Male,0,Followup,0 +851,C,25.00,2.00,4.00,Female,1,Followup,8 +852,A,23.00,6.00,2.00,Male,1,Followup,12 +853,B,20.00,6.00,6.00,Male,1,Followup,36 +854,A,21.00,2.00,8.00,Female,1,Followup,16 +855,C,18.00,0.00,0.00,Female,0,Followup,0 +856,C,18.00,4.00,3.00,Female,1,Followup,12 +857,C,19.00,0.00,0.00,Female,1,Followup,0 +858,C,24.00,0.00,0.00,Male,0,Followup,0 +859,A,20.00,5.00,2.00,Female,1,Followup,10 +860,B,38.00,2.00,3.00,Female,1,Followup,6 +861,B,20.00,0.00,0.00,Male,1,Followup,0 +862,A,19.00,0.00,0.00,Female,0,Followup,0 +863,A,19.00,0.00,0.00,Male,0,Followup,0 +866,B,21.00,2.00,6.00,Female,1,Followup,12 +867,C,42.00,0.00,0.00,Female,1,Followup,0 +868,B,18.00,0.00,0.00,Female,1,Followup,0 +869,A,39.00,0.00,0.00,Female,0,Followup,0 +871,A,18.00,1.00,2.00,Male,0,Followup,2 +872,A,18.00,0.00,0.00,Male,1,Followup,0 +873,A,21.00,2.00,2.00,Female,1,Followup,4 +874,B,19.00,2.00,7.00,Female,1,Followup,14 +875,C,20.00,6.00,4.00,Female,1,Followup,24 +876,B,19.00,0.00,0.00,Female,1,Followup,0 +877,B,20.00,0.00,0.00,Male,0,Followup,0 +878,C,18.00,0.00,0.00,Male,1,Followup,0 +879,C,27.00,3.00,6.00,Female,1,Followup,18 +880,C,18.00,2.00,5.00,Female,1,Followup,10 +881,C,48.00,3.00,3.00,Female,1,Followup,9 +882,A,20.00,3.00,1.00,Female,1,Followup,3 +883,B,30.00,3.00,8.00,Female,1,Followup,24 +885,C,21.00,1.00,6.00,Male,1,Followup,6 +888,A,23.00,2.00,1.00,Male,0,Followup,2 +889,A,21.00,4.00,1.00,Female,1,Followup,4 +890,C,22.00,0.00,0.00,Female,0,Followup,0 +891,A,24.00,0.00,0.00,Male,1,Followup,0 +892,A,22.00,7.00,1.00,Female,1,Followup,7 +894,C,20.00,0.00,0.00,Male,0,Followup,0 +895,A,29.00,0.00,0.00,Male,0,Followup,0 +897,B,19.00,0.00,0.00,Female,1,Followup,0 +898,C,24.00,0.00,0.00,Male,0,Followup,0 +899,C,20.00,4.00,6.00,Male,1,Followup,24 +900,C,21.00,2.00,2.00,Female,1,Followup,4 +901,C,19.00,1.00,12.0,Male,1,Followup,12 +902,B,21.00,2.00,4.00,Female,0,Followup,8 +903,A,21.00,5.00,4.00,Male,1,Followup,20 +904,B,19.00,0.00,0.00,Female,1,Followup,0 +905,A,20.00,5.00,4.00,Male,1,Followup,20 +907,A,22.00,8.00,4.00,Female,1,Followup,32 +908,B,18.00,0.00,0.00,Male,0,Followup,0 +909,A,18.00,0.00,0.00,Female,1,Followup,0 +910,A,22.00,0.00,0.00,Female,0,Followup,0 +911,B,28.00,3.00,3.00,Female,1,Followup,9 +913,C,18.00,6.00,7.00,Male,0,Followup,42 +914,A,21.00,4.00,1.00,Female,1,Followup,4 +915,B,23.00,2.00,5.00,Female,1,Followup,10 +916,B,20.00,4.00,5.00,Male,1,Followup,20 +917,B,20.00,3.00,2.00,Female,1,Followup,6 +918,B,24.00,6.00,3.00,Female,1,Followup,18 +921,B,31.00,0.00,0.00,Female,1,Followup,0 +923,B,20.00,0.00,0.00,Female,1,Followup,0 +924,C,21.00,0.00,0.00,Male,0,Followup,0 +926,A,21.00,2.00,2.00,Male,1,Followup,4 +927,B,22.00,3.00,2.00,Male,1,Followup,6 +929,A,21.00,0.00,0.00,Female,0,Followup,0 +930,C,19.00,0.00,0.00,Female,1,Followup,0 +932,C,19.00,14.0,1.00,Female,1,Followup,14 +933,C,18.00,0.00,0.00,Female,1,Followup,0 +934,C,23.00,0.00,0.00,Female,0,Followup,0 +936,B,18.00,5.00,4.00,Female,1,Followup,20 +937,A,18.00,0.00,0.00,Female,0,Followup,0 +938,B,23.00,2.00,2.00,Male,1,Followup,4 +940,A,21.00,4.00,4.00,Female,1,Followup,16 +942,C,20.00,3.00,8.00,Male,1,Followup,24 +943,A,18.00,5.00,1.00,Female,1,Followup,5 +944,C,28.00,3.00,2.00,Female,1,Followup,6 +945,B,20.00,1.00,5.00,Female,1,Followup,5 +948,C,19.00,8.00,6.00,Male,1,Followup,48 +949,A,20.00,0.00,0.00,Female,1,Followup,0 +950,C,21.00,3.00,5.00,Female,1,Followup,15 +952,A,21.00,0.00,0.00,Male,0,Followup,0 +953,B,19.00,3.00,12.0,Male,1,Followup,36 +954,B,21.00,4.00,6.00,Female,1,Followup,24 +955,B,19.00,3.00,3.00,Male,1,Followup,9 +956,A,18.00,3.00,2.00,Female,1,Followup,6 +958,C,19.00,3.00,5.00,Female,1,Followup,15 +959,C,21.00,1.00,8.00,Female,1,Followup,8 +960,C,19.00,0.00,0.00,Female,0,Followup,0 +961,C,24.00,8.00,2.00,Female,1,Followup,16 +962,C,46.00,12.0,1.00,Female,1,Followup,12 +964,B,20.00,7.00,12.0,Female,1,Followup,84 +965,C,20.00,4.00,1.00,Female,1,Followup,4 +967,A,18.00,2.00,5.00,Female,1,Followup,10 +969,A,18.00,0.00,0.00,Female,0,Followup,0 +970,A,19.00,0.00,0.00,Female,1,Followup,0 +972,A,21.00,1.00,6.00,Female,1,Followup,6 +973,B,20.00,3.00,7.00,Female,1,Followup,21 +974,B,23.00,0.00,0.00,Female,0,Followup,0 +976,A,19.00,0.00,0.00,Female,0,Followup,0 +977,A,18.00,1.00,6.00,Female,1,Followup,6 +978,B,20.00,6.00,8.00,Male,1,Followup,48 +979,B,19.00,0.00,0.00,Female,0,Followup,0 +980,A,23.00,1.00,12.0,Male,1,Followup,12 +981,C,19.00,1.00,1.00,Male,0,Followup,1 +983,A,20.00,0.00,0.00,Female,1,Followup,0 +984,A,19.00,6.00,1.00,Female,1,Followup,6 +985,B,23.00,7.00,5.00,Male,1,Followup,35 +986,C,22.00,6.00,2.00,Male,1,Followup,12 +988,A,19.00,4.00,20.0,Male,1,Followup,80 +989,C,19.00,0.00,0.00,Female,1,Followup,0 +990,C,18.00,0.00,0.00,Female,0,Followup,0 +991,C,22.00,2.00,3.00,Female,1,Followup,6 +992,A,21.00,0.00,0.00,Female,0,Followup,0 +993,A,21.00,6.00,2.00,Female,1,Followup,12 +994,B,20.00,0.00,0.00,Female,1,Followup,0 +995,C,28.00,2.00,1.00,Male,1,Followup,2 +997,C,18.00,0.00,0.00,Female,1,Followup,0 +998,B,18.00,0.00,0.00,Female,1,Followup,0 +999,A,19.00,4.00,4.00,Female,1,Followup,16 +1000,B,21.00,4.00,8.00,Female,1,Followup,32 +1002,C,22.00,1.00,2.00,Female,1,Followup,2 +1003,B,23.00,0.00,0.00,Female,1,Followup,0 +1004,A,22.00,6.00,2.00,Male,1,Followup,12 +1005,C,19.00,2.00,1.00,Female,1,Followup,2 +1006,B,22.00,4.00,2.00,Female,1,Followup,8 +1007,B,30.00,7.00,1.00,Male,1,Followup,7 +1009,C,20.00,5.00,6.00,Female,1,Followup,30 +1010,C,37.00,8.00,2.00,Female,1,Followup,16 +1011,A,26.00,4.00,2.00,Male,1,Followup,8 +1013,C,25.00,8.00,2.00,Female,1,Followup,16 +1014,B,23.00,2.00,6.00,Female,1,Followup,12 +1016,C,30.00,1.00,1.00,Female,1,Followup,1 +1017,B,18.00,0.00,0.00,Female,0,Followup,0 +1018,A,22.00,3.00,5.00,Female,1,Followup,15 +1019,B,24.00,6.00,5.00,Male,1,Followup,30 +1020,B,21.00,4.00,2.00,Female,1,Followup,8 +1022,B,19.00,0.00,0.00,Male,0,Followup,0 +1023,C,19.00,0.00,0.00,Female,1,Followup,0 +1024,C,20.00,0.00,0.00,Male,1,Followup,0 +1025,A,24.00,1.00,1.00,Male,0,Followup,1 +1027,A,20.00,0.00,0.00,Female,0,Followup,0 +1028,C,21.00,1.00,5.00,Female,0,Followup,5 +1030,C,20.00,0.00,0.00,Female,1,Followup,0 +1031,C,22.00,1.00,3.00,Male,1,Followup,3 +1032,B,21.00,3.00,8.00,Male,1,Followup,24 +1033,B,20.00,7.00,10.0,Female,1,Followup,70 +1034,C,21.00,12.0,5.00,Male,1,Followup,60 +1035,C,21.00,0.00,0.00,Female,0,Followup,0 +1038,C,21.00,4.00,1.00,Female,1,Followup,4 +1039,C,19.00,2.00,8.00,Male,1,Followup,16 +1040,B,19.00,0.00,0.00,Female,1,Followup,0 +1041,B,29.00,3.00,2.00,Female,1,Followup,6 +1042,B,20.00,2.00,5.00,Female,1,Followup,10 +1045,A,19.00,3.00,1.00,Female,1,Followup,3 +1046,C,19.00,4.00,2.00,Female,1,Followup,8 +1047,B,46.00,8.00,1.00,Female,1,Followup,8 +1048,B,28.00,4.00,1.00,Female,1,Followup,4 +1049,C,32.00,7.00,1.00,Male,1,Followup,7 +1050,C,19.00,0.00,0.00,Male,1,Followup,0 +1053,C,36.00,14.0,1.00,Male,1,Followup,14 +1054,A,21.00,3.00,10.0,Female,1,Followup,30 +1055,C,18.00,3.00,4.00,Female,1,Followup,12 +1057,C,22.00,5.00,1.00,Female,1,Followup,5 +1058,C,22.00,2.00,6.00,Male,1,Followup,12 +1059,A,21.00,0.00,0.00,Female,1,Followup,0 +1060,A,23.00,0.00,0.00,Male,0,Followup,0 +1064,A,20.00,0.00,0.00,Female,1,Followup,0 +1066,B,22.00,2.00,6.00,Female,1,Followup,12 +1067,A,46.00,12.0,1.00,Female,1,Followup,12 +1068,C,20.00,0.00,0.00,Female,1,Followup,0 +1071,B,19.00,2.00,3.00,Male,1,Followup,6 +1072,A,18.00,2.00,7.00,Female,1,Followup,14 +1073,A,22.00,2.00,16.0,Male,1,Followup,32 +1075,C,22.00,1.00,4.00,Female,1,Followup,4 +1076,B,25.00,3.00,7.00,Female,1,Followup,21 +1077,B,30.00,0.00,0.00,Male,0,Followup,0 +1078,A,24.00,0.00,0.00,Female,0,Followup,0 +1082,B,58.00,0.00,0.00,Female,0,Followup,0 +1083,C,21.00,5.00,4.00,Female,1,Followup,20 +1087,A,23.00,8.00,2.00,Female,1,Followup,16 +1090,B,23.00,7.00,3.00,Female,1,Followup,21 +1091,B,26.00,26.0,1.00,Male,1,Followup,26 +1094,C,21.00,0.00,0.00,Male,0,Followup,0 +1095,C,42.00,3.00,2.00,Female,1,Followup,6 +1096,A,19.00,0.00,0.00,Female,0,Followup,0 +1097,C,22.00,2.00,3.00,Female,1,Followup,6 +1098,A,38.00,12.0,4.00,Male,1,Followup,48 +1100,B,37.00,5.00,1.00,Female,1,Followup,5 +1101,C,20.00,0.00,0.00,Female,0,Followup,0 +1102,C,38.00,2.00,1.00,Female,1,Followup,2 +1103,B,39.00,0.00,0.00,Male,0,Followup,0 +1104,A,19.00,0.00,0.00,Male,1,Followup,0 +1105,A,21.00,5.00,6.00,Female,1,Followup,30 +1107,B,22.00,1.00,4.00,Female,1,Followup,4 +1109,C,17.00,2.00,10.0,Female,1,Followup,20 +1111,B,20.00,4.00,7.00,Female,1,Followup,28 +1112,C,29.00,12.0,1.00,Female,1,Followup,12 +1113,A,21.00,1.00,1.00,Female,0,Followup,1 +1116,C,21.00,4.00,1.00,Male,1,Followup,4 +1117,A,20.00,0.00,0.00,Female,0,Followup,0 +1118,C,27.00,6.00,2.00,Female,1,Followup,12 +1119,C,49.00,8.00,1.00,Female,1,Followup,8 +1121,C,28.00,1.00,2.00,Male,1,Followup,2 +1122,C,21.00,3.00,5.00,Male,1,Followup,15 +1124,C,51.00,26.0,2.00,Male,1,Followup,52 +1125,B,19.00,2.00,10.0,Male,1,Followup,20 +1126,C,21.00,0.00,0.00,Female,1,Followup,0 +1127,C,20.00,5.00,24.0,Male,1,Followup,120 +1128,C,20.00,2.00,4.00,Female,1,Followup,8 +1129,B,19.00,1.00,3.00,Male,1,Followup,3 +1131,A,23.00,0.00,0.00,Male,1,Followup,0 +1132,B,26.00,0.00,0.00,Female,0,Followup,0 +1133,B,18.00,3.00,9.00,Male,1,Followup,27 +1134,A,18.00,2.00,4.00,Female,1,Followup,8 +1135,C,49.00,15.0,2.00,Female,1,Followup,30 +1136,A,28.00,3.00,1.00,Female,1,Followup,3 +1137,C,20.00,0.00,0.00,Female,0,Followup,0 +1138,B,22.00,15.0,4.00,Female,1,Followup,60 +1139,C,34.00,1.00,1.00,Male,1,Followup,1 +1140,A,27.00,1.00,2.00,Female,1,Followup,2 +1143,B,27.00,1.00,1.00,Female,1,Followup,1 +1145,B,20.00,0.00,0.00,Female,1,Followup,0 +1146,C,21.00,12.0,9.00,Male,1,Followup,108 +1149,C,20.00,0.00,0.00,Female,1,Followup,0 +1150,A,21.00,4.00,10.0,Female,1,Followup,40 +1151,B,22.00,2.00,3.00,Female,1,Followup,6 +1152,A,21.00,6.00,7.00,Female,1,Followup,42 +1154,A,19.00,1.00,6.00,Female,0,Followup,6 +1155,A,19.00,0.00,0.00,Female,0,Followup,0 +1156,C,21.00,8.00,15.0,Male,1,Followup,120 +1157,A,23.00,5.00,6.00,Female,1,Followup,30 +1158,A,21.00,4.00,7.00,Male,0,Followup,28 +1160,C,19.00,2.00,2.00,Female,1,Followup,4 +1161,C,21.00,1.00,2.00,Female,0,Followup,2 +1162,A,20.00,6.00,6.00,Female,1,Followup,36 +1164,C,18.00,1.00,2.00,Female,1,Followup,2 +1165,C,22.00,0.00,0.00,Female,1,Followup,0 +1166,A,23.00,20.0,3.00,Male,1,Followup,60 +1167,C,18.00,2.00,6.00,Male,1,Followup,12 +1168,C,21.00,7.00,4.00,Male,1,Followup,28 +1169,C,21.00,1.00,5.00,Male,1,Followup,5 +1172,B,21.00,0.00,0.00,Female,1,Followup,0 +1173,B,18.00,0.00,0.00,Female,0,Followup,0 +1174,C,19.00,1.00,1.00,Male,1,Followup,1 +1176,A,18.00,2.00,2.00,Female,1,Followup,4 +1177,B,23.00,0.00,0.00,Male,1,Followup,0 +1178,A,36.00,16.0,2.00,Female,1,Followup,32 +1179,C,23.00,4.00,4.00,Male,1,Followup,16 +1180,C,22.00,0.00,0.00,Female,1,Followup,0 +1181,B,19.00,1.00,4.00,Male,1,Followup,4 +1183,B,21.00,0.00,0.00,Female,1,Followup,0 +1191,A,28.00,0.00,0.00,Female,0,Followup,0 +1192,A,19.00,0.00,0.00,Female,0,Followup,0 +1194,C,20.00,1.00,1.00,Female,0,Followup,1 +1195,C,19.00,5.00,21.0,Male,1,Followup,105 +1196,B,22.00,1.00,4.00,Female,1,Followup,4 +1198,A,20.00,5.00,2.00,Female,1,Followup,10 +1199,C,21.00,20.0,1.00,Male,1,Followup,20 +1200,C,20.00,11.0,2.00,Male,1,Followup,22 +1203,A,22.00,5.00,21.0,Male,1,Followup,105 +1204,A,30.00,4.00,4.00,Male,0,Followup,16 +1205,C,27.00,10.0,2.00,Female,1,Followup,20 +1206,B,25.00,7.00,1.00,Female,1,Followup,7 +1208,A,46.00,2.00,2.00,Female,1,Followup,4 +1209,C,21.00,3.00,2.00,Female,1,Followup,6 +1210,C,18.00,2.00,8.00,Female,1,Followup,16 +1211,A,18.00,4.00,3.00,Female,1,Followup,12 +1212,B,24.00,0.00,0.00,Female,1,Followup,0 +1213,C,23.00,0.00,0.00,Female,1,Followup,0 +1215,B,21.00,4.00,5.00,Female,1,Followup,20 +1216,C,20.00,0.00,0.00,Male,1,Followup,0 +1217,C,24.00,2.00,6.00,Male,1,Followup,12 +1218,C,23.00,4.00,1.00,Female,1,Followup,4 +1219,B,20.00,2.00,1.00,Female,0,Followup,2 +1220,A,22.00,4.00,15.0,Male,1,Followup,60 +1221,A,26.00,2.00,4.00,Female,1,Followup,8 +1222,A,21.00,0.00,0.00,Male,0,Followup,0 +1223,A,18.00,7.00,5.00,Male,1,Followup,35 +1224,C,20.00,0.00,0.00,Male,1,Followup,0 +1225,A,23.00,0.00,0.00,Female,1,Followup,0 +1226,A,30.00,4.00,1.00,Female,0,Followup,4 +1227,A,19.00,2.00,7.00,Female,1,Followup,14 +1229,B,20.00,0.00,0.00,Female,0,Followup,0 +1230,A,27.00,10.0,3.00,Male,1,Followup,30 +1231,C,31.00,7.00,1.00,Female,1,Followup,7 +1232,C,22.00,1.00,12.0,Male,1,Followup,12 +1233,A,52.00,5.00,2.00,Female,1,Followup,10 +1234,B,22.00,2.00,4.00,Male,1,Followup,8 +1237,A,22.00,2.00,3.00,Male,1,Followup,6 +1239,A,22.00,0.00,0.00,Female,0,Followup,0 +1240,A,45.00,1.00,1.00,Male,0,Followup,1 +1241,A,19.00,12.0,10.0,Male,1,Followup,120 +1242,B,38.00,0.00,0.00,Female,0,Followup,0 +1243,C,18.00,1.00,3.00,Female,1,Followup,3 +1245,C,22.00,3.00,8.00,Female,1,Followup,24 +1251,B,24.00,1.00,6.00,Female,1,Followup,6 +1252,B,41.00,2.00,1.00,Female,1,Followup,2 +1253,A,20.00,3.00,1.00,Male,1,Followup,3 +1255,B,44.00,14.0,3.00,Female,1,Followup,42 +1256,A,26.00,0.00,0.00,Female,0,Followup,0 +1257,A,40.00,1.00,1.00,Female,1,Followup,1 +1258,C,21.00,8.00,20.0,Male,1,Followup,160 +1260,C,21.00,5.00,12.0,Male,1,Followup,60 +1261,A,21.00,7.00,6.00,Female,1,Followup,42 +1262,C,18.00,3.00,8.00,Female,1,Followup,24 +1264,C,19.00,1.00,6.00,Female,1,Followup,6 +1265,C,21.00,4.00,7.00,Male,1,Followup,28 +1268,A,31.00,0.00,0.00,Male,0,Followup,0 +1269,B,20.00,0.00,0.00,Female,1,Followup,0 +1271,A,19.00,2.00,4.00,Female,1,Followup,8 +1272,A,35.00,18.0,3.00,Male,1,Followup,54 +1275,C,18.00,2.00,3.00,Female,1,Followup,6 +1276,B,18.00,2.00,4.00,Female,1,Followup,8 +1277,A,20.00,0.00,0.00,Female,0,Followup,0 +1282,B,18.00,2.00,12.0,Male,1,Followup,24 +1283,A,21.00,4.00,2.00,Female,1,Followup,8 +1285,C,19.00,1.00,2.00,Male,1,Followup,2 +1286,A,21.00,7.00,4.00,Male,1,Followup,28 +1288,C,26.00,0.00,0.00,Female,0,Followup,0 +1289,A,60.00,0.00,0.00,Female,0,Followup,0 +1290,B,20.00,5.00,2.00,Female,1,Followup,10 +1292,B,21.00,4.00,3.00,Female,1,Followup,12 +1294,B,21.00,3.00,3.00,Female,1,Followup,9 +1295,C,22.00,3.00,1.00,Female,1,Followup,3 +1296,C,21.00,4.00,1.00,Female,1,Followup,4 +1297,A,39.00,0.00,0.00,Female,0,Followup,0 +1298,C,18.00,1.00,4.00,Male,1,Followup,4 +1299,B,21.00,3.00,2.00,Female,1,Followup,6 +1300,A,43.00,4.00,2.00,Male,1,Followup,8 +1301,B,24.00,2.00,6.00,Male,1,Followup,12 +1303,A,21.00,1.00,1.00,Female,1,Followup,1 +1305,B,21.00,6.00,8.00,Female,1,Followup,48 +1307,A,22.00,0.00,0.00,Female,0,Followup,0 +1308,C,22.00,12.0,10.0,Male,1,Followup,120 +1309,B,21.00,4.00,14.0,Female,1,Followup,56 +1310,C,23.00,3.00,1.00,Male,1,Followup,3 +1311,C,19.00,4.00,3.00,Male,1,Followup,12 +1312,C,20.00,8.00,12.0,Female,1,Followup,96 +1314,C,21.00,11.0,4.00,Male,1,Followup,44 +1315,C,19.00,3.00,6.00,Female,1,Followup,18 +1316,B,44.00,20.0,1.00,Female,1,Followup,20 +1317,C,21.00,2.00,1.00,Male,1,Followup,2 +1318,A,22.00,6.00,2.00,Female,1,Followup,12 +1319,C,23.00,0.00,0.00,Female,1,Followup,0 +1320,A,32.00,0.00,0.00,Male,0,Followup,0 +1322,A,30.00,28.0,3.00,Male,1,Followup,84 +1323,A,20.00,14.0,1.00,Female,1,Followup,14 +1324,A,29.00,6.00,2.00,Female,1,Followup,12 +1325,A,20.00,20.0,1.00,Female,1,Followup,20 +1327,B,19.00,2.00,6.00,Female,1,Followup,12 +1328,C,20.00,4.00,2.00,Female,1,Followup,8 +1329,A,20.00,0.00,0.00,Male,0,Followup,0 +1330,A,19.00,7.00,6.00,Female,1,Followup,42 +1331,C,21.00,5.00,8.00,Female,1,Followup,40 +1332,A,19.00,3.00,3.00,Female,1,Followup,9 +1333,A,21.00,1.00,2.00,Female,1,Followup,2 +1335,B,20.00,0.00,0.00,Female,0,Followup,0 +1336,C,21.00,2.00,3.00,Female,1,Followup,6 +1338,B,22.00,1.00,1.00,Female,1,Followup,1 +1339,A,22.00,4.00,16.0,Male,1,Followup,64 +1341,A,21.00,6.00,7.00,Female,1,Followup,42 +1342,A,19.00,1.00,6.00,Female,1,Followup,6 +1343,A,22.00,2.00,3.00,Female,1,Followup,6 +1344,C,20.00,2.00,6.00,Female,1,Followup,12 +1346,A,19.00,1.00,7.00,Female,1,Followup,7 +1348,A,19.00,0.00,0.00,Female,0,Followup,0 +1349,B,20.00,1.00,1.00,Female,0,Followup,1 +1350,C,22.00,0.00,0.00,Female,1,Followup,0 +1351,B,18.00,2.00,4.00,Female,1,Followup,8 +1352,A,22.00,0.00,0.00,Male,0,Followup,0 +1354,A,19.00,2.00,6.00,Female,1,Followup,12 +1355,C,18.00,1.00,3.00,Female,1,Followup,3 +1356,C,22.00,4.00,8.00,Female,1,Followup,32 +1357,A,20.00,5.00,1.00,Male,1,Followup,5 +1358,A,21.00,7.00,7.00,Male,1,Followup,49 +1360,B,19.00,2.00,4.00,Female,1,Followup,8 +1361,A,23.00,4.00,9.00,Male,1,Followup,36 +1362,C,22.00,2.00,7.00,Male,1,Followup,14 +1364,C,20.00,0.00,0.00,Female,1,Followup,0 +1365,C,23.00,2.00,5.00,Female,1,Followup,10 +1366,C,20.00,2.00,7.00,Female,1,Followup,14 +1367,A,22.00,5.00,1.00,Female,1,Followup,5 +1368,B,26.00,0.00,0.00,Female,1,Followup,0 +1369,C,21.00,14.0,2.00,Male,1,Followup,28 +1373,C,33.00,7.00,4.00,Male,1,Followup,28 +1374,B,21.00,1.00,2.00,Female,1,Followup,2 +1375,B,41.00,20.0,3.00,Female,1,Followup,60 +1376,B,21.00,2.00,3.00,Female,1,Followup,6 +1378,A,25.00,1.00,3.00,Female,0,Followup,3 +1379,B,20.00,2.00,2.00,Female,1,Followup,4 +1380,C,19.00,12.0,2.00,Male,1,Followup,24 +1382,C,19.00,0.00,0.00,Female,0,Followup,0 +1383,C,35.00,1.00,2.00,Female,0,Followup,2 +1385,B,20.00,0.00,0.00,Female,0,Followup,0 +1386,B,29.00,2.00,4.00,Male,1,Followup,8 +1387,C,25.00,0.00,0.00,Male,1,Followup,0 +1388,A,17.00,1.00,2.00,Female,1,Followup,2 +1389,A,19.00,6.00,12.0,Male,1,Followup,72 +1390,C,20.00,2.00,5.00,Female,1,Followup,10 +1392,A,22.00,0.00,0.00,Female,1,Followup,0 +1393,B,21.00,3.00,4.00,Female,0,Followup,12 +1396,C,19.00,0.00,0.00,Female,1,Followup,0 +1399,A,22.00,9.00,3.00,Female,1,Followup,27 +1401,C,22.00,2.00,5.00,Female,1,Followup,10 +1402,A,19.00,0.00,0.00,Female,0,Followup,0 +1405,C,27.00,3.00,2.00,Female,1,Followup,6 +1406,A,19.00,7.00,2.00,Female,1,Followup,14 +1407,C,29.00,5.00,2.00,Female,1,Followup,10 +1408,C,21.00,1.00,4.00,Female,1,Followup,4 +1409,A,20.00,4.00,7.00,Male,1,Followup,28 +1410,C,28.00,0.00,0.00,Female,1,Followup,0 +1411,C,32.00,25.0,3.00,Female,1,Followup,75 +1412,A,19.00,2.00,6.00,Female,1,Followup,12 +1413,A,20.00,3.00,1.00,Female,1,Followup,3 +1414,A,19.00,6.00,8.00,Male,1,Followup,48 +1415,A,21.00,10.0,1.00,Female,1,Followup,10 +1416,C,18.00,1.00,7.00,Female,1,Followup,7 +1418,C,49.00,4.00,3.00,Female,1,Followup,12 +1419,A,21.00,2.00,1.00,Female,1,Followup,2 +1420,B,28.00,8.00,1.00,Male,1,Followup,8 +1421,B,22.00,0.00,0.00,Female,0,Followup,0 +1422,B,20.00,2.00,5.00,Male,1,Followup,10 +1423,C,33.00,0.00,0.00,Male,1,Followup,0 +1425,C,19.00,1.00,2.00,Female,1,Followup,2 +1426,B,20.00,2.00,6.00,Male,1,Followup,12 +1427,C,21.00,2.00,3.00,Male,1,Followup,6 +1428,B,21.00,8.00,1.00,Male,1,Followup,8 +1429,C,19.00,3.00,4.00,Male,1,Followup,12 +1430,C,21.00,2.00,3.00,Male,1,Followup,6 +1431,A,18.00,1.00,1.00,Male,0,Followup,1 +1432,A,21.00,4.00,4.00,Female,0,Followup,16 +1433,B,21.00,0.00,0.00,Female,1,Followup,0 +1435,C,32.00,2.00,2.00,Female,1,Followup,4 +1437,A,19.00,2.00,1.00,Female,0,Followup,2 +1439,C,22.00,2.00,1.00,Female,1,Followup,2 +1440,C,28.00,8.00,3.00,Male,1,Followup,24 +1442,B,21.00,2.00,4.00,Male,1,Followup,8 +1443,A,19.00,0.00,0.00,Female,1,Followup,0 +1444,A,22.00,3.00,1.00,Male,1,Followup,3 +1445,B,18.00,5.00,2.00,Female,1,Followup,10 +1446,A,25.00,4.00,2.00,Female,1,Followup,8 +1447,B,19.00,4.00,19.0,Male,1,Followup,76 +1448,B,18.00,2.00,5.00,Male,1,Followup,10 +1449,A,20.00,2.00,4.00,Female,1,Followup,8 +1451,A,18.00,3.00,3.00,Female,1,Followup,9 +1452,A,40.00,14.0,1.00,Male,1,Followup,14 +1453,A,21.00,0.00,0.00,Female,1,Followup,0 +1454,A,21.00,0.00,0.00,Male,1,Followup,0 +1455,A,22.00,0.00,0.00,Male,1,Followup,0 +1456,C,19.00,4.00,10.0,Male,1,Followup,40 +1457,A,28.00,0.00,0.00,Female,0,Followup,0 +1458,C,20.00,2.00,6.00,Female,1,Followup,12 +1459,A,24.00,14.0,2.00,Female,1,Followup,28 +1460,A,21.00,5.00,8.00,Female,1,Followup,40 +1461,A,22.00,7.00,6.00,Male,1,Followup,42 +1463,A,22.00,2.00,2.00,Male,1,Followup,4 +1464,B,19.00,1.00,5.00,Female,1,Followup,5 +1465,B,18.00,0.00,0.00,Male,0,Followup,0 +1466,C,21.00,3.00,1.00,Female,1,Followup,3 +1467,B,21.00,0.00,0.00,Female,0,Followup,0 +1468,B,21.00,7.00,4.00,Female,1,Followup,28 +1469,C,19.00,0.00,0.00,Female,1,Followup,0 +1470,B,30.00,1.00,1.00,Female,0,Followup,1 +1471,A,27.00,13.0,1.00,Male,1,Followup,13 +1472,C,18.00,6.00,2.00,Male,1,Followup,12 +1473,A,29.00,5.00,2.00,Female,1,Followup,10 +1474,A,21.00,3.00,2.00,Female,1,Followup,6 +1475,A,19.00,0.00,0.00,Female,1,Followup,0 +1476,B,22.00,7.00,8.00,Female,1,Followup,56 +1479,B,21.00,2.00,5.00,Female,1,Followup,10 +1480,C,31.00,5.00,3.00,Male,1,Followup,15 +1481,C,20.00,1.00,5.00,Female,1,Followup,5 +1482,A,24.00,12.0,2.00,Female,1,Followup,24 +1483,C,22.00,1.00,2.00,Male,1,Followup,2 +1486,A,19.00,0.00,0.00,Female,1,Followup,0 +1487,A,21.00,0.00,0.00,Male,0,Followup,0 +1488,B,21.00,1.00,1.00,Male,0,Followup,1 +1489,B,21.00,4.00,12.0,Male,1,Followup,48 +1490,A,18.00,1.00,3.00,Female,1,Followup,3 +1493,C,26.00,8.00,3.00,Female,1,Followup,24 +1494,B,17.00,4.00,4.00,Female,1,Followup,16 +1495,C,20.00,3.00,6.00,Female,1,Followup,18 +1496,C,19.00,0.00,0.00,Male,1,Followup,0 +1497,A,19.00,6.00,8.00,Female,1,Followup,48 +1498,C,18.00,1.00,4.00,Male,1,Followup,4 +1499,C,20.00,2.00,8.00,Female,1,Followup,16 +1500,A,18.00,3.00,10.0,Male,1,Followup,30 +1502,B,22.00,0.00,0.00,Female,0,Followup,0 +1504,B,22.00,4.00,1.00,Female,1,Followup,4 +1505,A,29.00,1.00,1.00,Male,1,Followup,1 +1506,A,28.00,0.00,0.00,Female,1,Followup,0 +1508,B,22.00,2.00,1.00,Male,1,Followup,2 +1509,C,23.00,4.00,3.00,Male,1,Followup,12 +1510,C,20.00,1.00,1.00,Female,1,Followup,1 +1512,A,22.00,4.00,1.00,Male,1,Followup,4 +1513,A,17.00,0.00,0.00,Male,0,Followup,0 +1514,A,23.00,0.00,0.00,Female,0,Followup,0 +1515,B,22.00,3.00,10.0,Male,1,Followup,30 +1516,C,19.00,0.00,0.00,Male,1,Followup,0 +1517,A,22.00,0.00,0.00,Female,1,Followup,0 +1519,B,25.00,0.00,0.00,Male,0,Followup,0 +1521,B,19.00,2.00,5.00,Female,1,Followup,10 +1522,A,18.00,3.00,1.00,Male,1,Followup,3 +1523,B,21.00,5.00,2.00,Female,1,Followup,10 +1524,A,47.00,1.00,1.00,Female,1,Followup,1 +1525,B,21.00,3.00,1.00,Male,1,Followup,3 +1526,B,20.00,3.00,4.00,Male,1,Followup,12 +1527,C,20.00,2.00,1.00,Male,1,Followup,2 +1528,A,18.00,1.00,10.0,Female,1,Followup,10 +1529,B,22.00,1.00,2.00,Male,1,Followup,2 +1530,B,23.00,5.00,2.00,Male,1,Followup,10 +1531,C,21.00,1.00,2.00,Female,1,Followup,2 +1532,B,37.00,1.00,4.00,Male,1,Followup,4 +1533,A,47.00,1.00,1.00,Female,1,Followup,1 +1534,C,27.00,2.00,2.00,Female,1,Followup,4 +1535,A,22.00,6.00,4.00,Female,1,Followup,24 +1536,A,22.00,2.00,2.00,Female,1,Followup,4 +1538,C,20.00,5.00,7.00,Female,1,Followup,35 +1539,A,20.00,2.00,3.00,Female,1,Followup,6 +1541,C,21.00,2.00,14.0,Male,1,Followup,28 +1542,C,30.00,8.00,1.00,Female,1,Followup,8 +1543,A,19.00,4.00,4.00,Female,1,Followup,16 +1544,A,25.00,9.00,8.00,Male,1,Followup,72 +1545,C,29.00,18.0,7.00,Female,1,Followup,126 +1546,B,21.00,2.00,4.00,Female,1,Followup,8 +1547,B,22.00,2.00,18.0,Male,1,Followup,36 +1548,A,19.00,1.00,8.00,Female,1,Followup,8 +1549,A,18.00,2.00,7.00,Female,1,Followup,14 +1550,B,29.00,15.0,3.00,Male,1,Followup,45 +1551,B,18.00,0.00,0.00,Female,0,Followup,0 +1552,C,27.00,0.00,0.00,Female,0,Followup,0 +1553,B,22.00,4.00,2.00,Female,1,Followup,8 +1554,A,18.00,0.00,0.00,Female,1,Followup,0 +1556,B,26.00,12.0,2.00,Female,1,Followup,24 +1557,C,21.00,2.00,2.00,Female,1,Followup,4 +1558,B,22.00,4.00,7.00,Male,1,Followup,28 +1559,A,19.00,4.00,1.00,Male,1,Followup,4 +1560,A,21.00,6.00,14.0,Male,1,Followup,84 +1561,B,29.00,0.00,0.00,Male,1,Followup,0 +1566,C,21.00,4.00,5.00,Female,1,Followup,20 +1567,B,23.00,8.00,2.00,Male,1,Followup,16 +1568,A,21.00,2.00,2.00,Female,1,Followup,4 +1569,B,18.00,0.00,0.00,Female,1,Followup,0 +1570,A,29.00,4.00,2.00,Female,1,Followup,8 +1571,A,42.00,1.00,2.00,Female,1,Followup,2 +1572,A,20.00,2.00,8.00,Female,1,Followup,16 +1573,C,22.00,5.00,1.00,Female,1,Followup,5 +1574,C,21.00,0.00,0.00,Male,1,Followup,0 +1576,A,36.00,12.0,4.00,Female,1,Followup,48 +1578,A,24.00,4.00,2.00,Female,1,Followup,8 +1579,C,35.00,5.00,3.00,Female,0,Followup,15 +1581,C,20.00,0.00,0.00,Female,0,Followup,0 +1582,C,19.00,2.00,8.00,Female,1,Followup,16 +1583,A,47.00,7.00,2.00,Female,1,Followup,14 +1584,B,19.00,0.00,0.00,Male,1,Followup,0 +1585,B,19.00,3.00,5.00,Female,1,Followup,15 +1586,C,20.00,3.00,7.00,Female,1,Followup,21 +1588,A,18.00,5.00,12.0,Male,1,Followup,60 +1589,C,35.00,0.00,0.00,Male,1,Followup,0 +1590,C,20.00,0.00,0.00,Female,1,Followup,0 +1591,A,49.00,20.0,1.00,Female,1,Followup,20 +1592,A,19.00,6.00,3.00,Male,1,Followup,18 +1593,A,19.00,0.00,0.00,Female,0,Followup,0 +1594,C,19.00,2.00,15.0,Male,1,Followup,30 +1595,A,18.00,2.00,5.00,Female,0,Followup,10 +1596,A,21.00,5.00,6.00,Female,1,Followup,30 +1597,C,24.00,0.00,0.00,Male,0,Followup,0 +1598,A,20.00,3.00,6.00,Female,1,Followup,18 +1600,B,18.00,4.00,4.00,Female,1,Followup,16 +1602,A,28.00,0.00,0.00,Female,0,Followup,0 +1604,C,20.00,5.00,2.00,Male,1,Followup,10 +1605,C,21.00,3.00,2.00,Female,1,Followup,6 +1606,A,20.00,1.00,2.00,Male,1,Followup,2 +1607,C,20.00,2.00,3.00,Female,1,Followup,6 +1608,C,18.00,3.00,3.00,Female,1,Followup,9 +1609,A,21.00,0.00,0.00,Female,1,Followup,0 +1610,A,65.00,1.00,1.00,Female,1,Followup,1 +1611,B,23.00,3.00,3.00,Female,0,Followup,9 +1612,B,19.00,2.00,10.0,Female,1,Followup,20 +1615,A,19.00,0.00,0.00,Female,0,Followup,0 +1616,A,19.00,1.00,6.00,Female,1,Followup,6 +1617,B,18.00,2.00,3.00,Male,1,Followup,6 +1618,A,23.00,6.00,18.0,Male,1,Followup,108 +1620,A,21.00,8.00,6.00,Male,1,Followup,48 +1621,C,25.00,16.0,3.00,Female,1,Followup,48 +1622,B,35.00,0.00,0.00,Male,0,Followup,0 +1623,A,21.00,5.00,5.00,Female,1,Followup,25 +1625,A,21.00,4.00,6.00,Male,1,Followup,24 +1626,B,19.00,4.00,4.00,Female,1,Followup,16 +1627,A,18.00,1.00,5.00,Female,1,Followup,5 +1628,A,19.00,10.0,10.0,Female,1,Followup,100 +1629,B,23.00,2.00,10.0,Female,1,Followup,20 +1630,A,19.00,4.00,6.00,Male,1,Followup,24 +1631,A,22.00,6.00,6.00,Female,1,Followup,36 +1632,C,18.00,0.00,0.00,Male,1,Followup,0 +1633,B,19.00,2.00,4.00,Female,1,Followup,8 +1635,A,20.00,2.00,1.00,Male,1,Followup,2 +1636,B,27.00,0.00,0.00,Female,1,Followup,0 +1637,A,27.00,0.00,0.00,Female,0,Followup,0 +1640,C,20.00,0.00,0.00,Female,1,Followup,0 +1641,A,20.00,4.00,2.00,Female,1,Followup,8 +1642,B,21.00,2.00,1.00,Male,1,Followup,2 +1643,A,21.00,0.00,0.00,Female,1,Followup,0 +1644,C,19.00,2.00,6.00,Female,1,Followup,12 +1645,C,20.00,2.00,2.00,Male,1,Followup,4 +1646,B,20.00,3.00,4.00,Female,1,Followup,12 +1647,A,21.00,8.00,14.0,Male,1,Followup,112 +1648,A,19.00,2.00,18.0,Male,1,Followup,36 +1649,A,19.00,0.00,0.00,Male,0,Followup,0 +1650,B,19.00,2.00,2.00,Female,1,Followup,4 +1651,A,22.00,3.00,10.0,Female,1,Followup,30 +1653,A,18.00,1.00,1.00,Male,1,Followup,1 +1655,A,20.00,1.00,1.00,Male,1,Followup,1 +1656,A,20.00,3.00,2.00,Female,1,Followup,6 +1657,B,51.00,21.0,1.00,Male,1,Followup,21 +1662,C,19.00,2.00,5.00,Male,1,Followup,10 +1663,A,23.00,0.00,0.00,Male,0,Followup,0 +1666,A,21.00,3.00,8.00,Female,1,Followup,24 +1668,A,19.00,4.00,12.0,Male,1,Followup,48 +1669,A,19.00,7.00,5.00,Male,1,Followup,35 +1670,C,20.00,7.00,2.00,Male,1,Followup,14 +1671,B,19.00,0.00,0.00,Female,1,Followup,0 +1672,C,19.00,1.00,6.00,Female,1,Followup,6 +1673,A,30.00,13.0,1.00,Female,1,Followup,13 +1674,A,42.00,1.00,2.00,Male,1,Followup,2 +1676,C,23.00,4.00,7.00,Female,1,Followup,28 +1679,C,18.00,0.00,0.00,Female,0,Followup,0 +1680,A,18.00,1.00,6.00,Female,1,Followup,6 +1681,C,27.00,0.00,0.00,Female,0,Followup,0 +1682,C,21.00,4.00,4.00,Female,1,Followup,16 +1684,B,21.00,2.00,1.00,Male,1,Followup,2 +1685,A,19.00,3.00,9.00,Female,1,Followup,27 +1686,A,19.00,4.00,6.00,Female,1,Followup,24 +1687,C,20.00,3.00,6.00,Female,1,Followup,18 +1689,A,32.00,0.00,0.00,Male,0,Followup,0 +1690,B,33.00,7.00,2.00,Female,1,Followup,14 +1691,C,22.00,5.00,3.00,Female,1,Followup,15 +1693,A,21.00,2.00,1.00,Female,1,Followup,2 +1695,A,22.00,3.00,4.00,Female,1,Followup,12 +1697,B,19.00,2.00,2.00,Female,1,Followup,4 +1698,B,22.00,3.00,5.00,Male,1,Followup,15 +1699,A,20.00,2.00,4.00,Female,1,Followup,8 +1700,C,19.00,0.00,0.00,Female,0,Followup,0 +1702,B,20.00,0.00,0.00,Female,1,Followup,0 +1705,C,25.00,21.0,1.00,Female,1,Followup,21 +1706,B,22.00,3.00,4.00,Female,1,Followup,12 +1708,B,21.00,12.0,5.00,Female,1,Followup,60 +1709,C,22.00,3.00,1.00,Male,1,Followup,3 +1711,B,28.00,1.00,1.00,Female,1,Followup,1 +1713,B,19.00,4.00,1.00,Female,1,Followup,4 +1714,C,21.00,2.00,8.00,Male,1,Followup,16 +1716,A,21.00,3.00,4.00,Male,1,Followup,12 +1717,B,20.00,3.00,2.00,Female,1,Followup,6 +1718,A,20.00,4.00,1.00,Male,1,Followup,4 +1719,B,20.00,3.00,2.00,Female,1,Followup,6 +1721,C,22.00,10.0,3.00,Female,1,Followup,30 +1722,C,21.00,3.00,1.00,Female,1,Followup,3 +1723,B,24.00,5.00,2.00,Female,1,Followup,10 +1725,C,20.00,2.00,4.00,Female,1,Followup,8 +1726,B,23.00,0.00,0.00,Male,0,Followup,0 +1727,B,20.00,1.00,2.00,Female,1,Followup,2 +1731,C,21.00,0.00,0.00,Female,0,Followup,0 +1732,B,22.00,10.0,3.00,Male,1,Followup,30 +1734,B,21.00,3.00,7.00,Female,1,Followup,21 +1735,B,22.00,1.00,1.00,Male,1,Followup,1 +1737,C,21.00,4.00,5.00,Female,1,Followup,20 +1738,A,18.00,3.00,4.00,Female,1,Followup,12 +1739,B,21.00,2.00,4.00,Female,1,Followup,8 +1740,C,20.00,28.0,11.0,Male,1,Followup,308 +1741,B,19.00,8.00,22.0,Male,1,Followup,176 +1742,A,19.00,2.00,5.00,Female,1,Followup,10 +1743,C,19.00,2.00,2.00,Male,1,Followup,4 +1745,C,21.00,2.00,4.00,Female,1,Followup,8 +1747,A,23.00,3.00,2.00,Female,0,Followup,6 +1749,A,22.00,3.00,4.00,Female,1,Followup,12 +1750,C,22.00,6.00,12.0,Male,1,Followup,72 +1751,B,21.00,1.00,5.00,Female,1,Followup,5 +1752,B,18.00,0.00,0.00,Male,1,Followup,0 +1753,A,20.00,0.00,0.00,Female,0,Followup,0 +1754,A,20.00,5.00,6.00,Female,1,Followup,30 +1755,A,37.00,0.00,0.00,Female,0,Followup,0 +1756,A,20.00,2.00,18.0,Male,1,Followup,36 +1757,A,19.00,1.00,3.00,Male,1,Followup,3 +1759,B,20.00,3.00,2.00,Female,1,Followup,6 +1760,B,21.00,2.00,3.00,Male,1,Followup,6 +1761,B,21.00,2.00,2.00,Male,1,Followup,4 +1762,A,29.00,0.00,0.00,Female,1,Followup,0 +1763,C,20.00,0.00,0.00,Female,1,Followup,0 +1764,A,19.00,0.00,0.00,Female,0,Followup,0 +1766,A,20.00,1.00,1.00,Female,0,Followup,1 +1769,A,42.00,28.0,1.00,Female,1,Followup,28 +1771,C,21.00,2.00,8.00,Female,1,Followup,16 +1773,B,21.00,6.00,1.00,Male,1,Followup,6 +1774,C,20.00,4.00,10.0,Male,1,Followup,40 +1775,B,18.00,1.00,4.00,Female,1,Followup,4 +1776,C,22.00,2.00,2.00,Female,0,Followup,4 +1777,C,20.00,0.00,0.00,Male,0,Followup,0 +1778,A,20.00,6.00,8.00,Female,1,Followup,48 +1780,A,22.00,4.00,19.0,Male,1,Followup,76 +1781,A,23.00,0.00,0.00,Male,1,Followup,0 +1782,B,27.00,28.0,1.00,Male,1,Followup,28 +1783,B,20.00,2.00,6.00,Male,1,Followup,12 +1784,A,26.00,0.00,0.00,Female,0,Followup,0 +1787,C,20.00,6.00,1.00,Female,1,Followup,6 +1788,B,20.00,8.00,12.0,Male,1,Followup,96 +1789,C,19.00,3.00,30.0,Male,1,Followup,90 +1790,C,21.00,0.00,0.00,Male,0,Followup,0 +1791,C,24.00,2.00,1.00,Male,1,Followup,2 +1792,B,20.00,0.00,0.00,Female,1,Followup,0 +1793,A,26.00,7.00,2.00,Female,1,Followup,14 +1794,C,27.00,2.00,1.00,Female,1,Followup,2 +1795,A,22.00,5.00,2.00,Male,1,Followup,10 +1799,B,20.00,0.00,0.00,Female,1,Followup,0 +1800,B,20.00,6.00,8.00,Female,1,Followup,48 +1802,A,30.00,0.00,0.00,Female,1,Followup,0 +1803,B,21.00,8.00,6.00,Female,1,Followup,48 +1805,A,19.00,0.00,0.00,Female,1,Followup,0 +1806,A,36.00,4.00,2.00,Female,1,Followup,8 +1808,B,18.00,0.00,0.00,Female,1,Followup,0 +1810,B,21.00,1.00,8.00,Female,1,Followup,8 +1814,B,22.00,5.00,5.00,Female,1,Followup,25 +1815,B,20.00,4.00,1.00,Male,1,Followup,4 +1816,B,26.00,0.00,0.00,Male,1,Followup,0 +1817,B,29.00,0.00,0.00,Female,0,Followup,0 +1818,B,21.00,0.00,0.00,Female,0,Followup,0 +1819,A,21.00,2.00,6.00,Female,1,Followup,12 +1820,A,42.00,25.0,2.00,Female,1,Followup,50 +1821,B,30.00,9.00,2.00,Female,1,Followup,18 +1824,C,19.00,0.00,0.00,Male,0,Followup,0 +1825,A,19.00,4.00,8.00,Male,1,Followup,32 +1826,B,20.00,2.00,4.00,Female,1,Followup,8 +1827,A,21.00,1.00,2.00,Female,1,Followup,2 +1828,C,25.00,8.00,15.0,Male,1,Followup,120 +1829,B,19.00,2.00,10.0,Male,1,Followup,20 +1830,B,21.00,3.00,3.00,Male,1,Followup,9 +1831,B,22.00,4.00,2.00,Female,1,Followup,8 +1833,B,19.00,3.00,1.00,Male,1,Followup,3 +1835,C,19.00,0.00,0.00,Female,1,Followup,0 +1836,B,51.00,5.00,1.00,Female,1,Followup,5 +1839,B,19.00,0.00,0.00,Female,1,Followup,0 +1840,A,49.00,1.00,2.00,Female,1,Followup,2 +1841,B,20.00,3.00,4.00,Female,0,Followup,12 +1842,B,38.00,0.00,0.00,Male,0,Followup,0 +1843,C,20.00,0.00,0.00,Female,1,Followup,0 +1845,C,23.00,5.00,5.00,Female,1,Followup,25 +1846,C,19.00,2.00,6.00,Female,1,Followup,12 +1847,C,18.00,10.0,18.0,Male,1,Followup,180 +1849,C,41.00,3.00,1.00,Female,1,Followup,3 +1851,A,23.00,5.00,4.00,Male,1,Followup,20 +1852,C,24.00,0.00,0.00,Female,0,Followup,0 +1853,C,21.00,1.00,6.00,Male,1,Followup,6 +1854,A,18.00,0.00,0.00,Female,0,Followup,0 +1855,B,23.00,0.00,0.00,Male,0,Followup,0 +1856,C,19.00,4.00,4.00,Female,1,Followup,16 +1857,C,21.00,0.00,0.00,Female,0,Followup,0 +1859,A,21.00,2.00,2.00,Female,1,Followup,4 +1862,B,26.00,0.00,0.00,Female,0,Followup,0 +1863,A,18.00,4.00,8.00,Female,1,Followup,32 +1864,C,23.00,0.00,0.00,Female,0,Followup,0 +1865,B,19.00,0.00,0.00,Female,1,Followup,0 +1866,B,58.00,0.00,0.00,Female,1,Followup,0 +1867,C,20.00,4.00,4.00,Female,1,Followup,16 +1869,A,19.00,0.00,0.00,Female,0,Followup,0 +1870,C,20.00,5.00,1.00,Female,1,Followup,5 +1871,B,23.00,0.00,0.00,Male,1,Followup,0 +1872,B,19.00,0.00,0.00,Female,0,Followup,0 +1874,B,19.00,2.00,10.0,Female,1,Followup,20 +1875,A,19.00,10.0,20.0,Male,1,Followup,200 +1878,B,21.00,4.00,2.00,Female,1,Followup,8 +1879,C,18.00,1.00,1.00,Male,1,Followup,1 +1880,B,21.00,1.00,4.00,Female,1,Followup,4 +1881,B,22.00,0.00,0.00,Male,1,Followup,0 +1883,A,21.00,3.00,4.00,Male,1,Followup,12 +1884,C,19.00,10.0,3.00,Male,1,Followup,30 +1885,B,24.00,0.00,0.00,Female,1,Followup,0 +1888,B,22.00,5.00,8.00,Male,1,Followup,40 +1889,B,20.00,4.00,1.00,Female,1,Followup,4 +1890,B,21.00,1.00,4.00,Female,1,Followup,4 +1891,A,25.00,0.00,0.00,Female,0,Followup,0 +1892,C,48.00,12.0,1.00,Female,1,Followup,12 +1895,C,24.00,0.00,0.00,Female,0,Followup,0 +1896,B,23.00,0.00,0.00,Female,0,Followup,0 +1897,B,24.00,4.00,1.00,Female,1,Followup,4 +1898,C,18.00,0.00,0.00,Female,0,Followup,0 +1899,A,19.00,1.00,1.00,Female,1,Followup,1 +1902,C,31.00,12.0,2.00,Male,1,Followup,24 +1903,A,18.00,2.00,6.00,Male,1,Followup,12 +1904,C,19.00,3.00,6.00,Female,1,Followup,18 +1905,A,21.00,8.00,7.00,Male,1,Followup,56 +1906,A,23.00,1.00,1.00,Male,1,Followup,1 +1907,A,21.00,9.00,5.00,Female,1,Followup,45 +1908,A,18.00,0.00,0.00,Female,1,Followup,0 +1909,B,24.00,6.00,2.00,Male,1,Followup,12 +1910,C,23.00,3.00,2.00,Male,1,Followup,6 +1911,B,24.00,14.0,2.00,Female,1,Followup,28 +1912,B,23.00,4.00,8.00,Male,1,Followup,32 +1914,B,23.00,3.00,12.0,Male,1,Followup,36 +1915,B,41.00,3.00,1.00,Male,1,Followup,3 +1916,B,22.00,1.00,4.00,Female,1,Followup,4 +1918,C,18.00,2.00,2.00,Female,1,Followup,4 +1919,B,18.00,0.00,0.00,Female,0,Followup,0 +1920,A,21.00,0.00,0.00,Female,0,Followup,0 +1922,B,22.00,3.00,1.00,Female,1,Followup,3 +1923,A,22.00,0.00,0.00,Male,0,Followup,0 +1924,C,20.00,0.00,0.00,Female,1,Followup,0 +1926,A,24.00,2.00,3.00,Male,1,Followup,6 +1927,A,21.00,4.00,7.00,Male,1,Followup,28 +1928,B,22.00,2.00,5.00,Male,1,Followup,10 +1929,A,23.00,20.0,4.00,Female,1,Followup,80 +1930,B,19.00,1.00,10.0,Male,1,Followup,10 +1931,A,24.00,1.00,5.00,Female,1,Followup,5 +1932,C,19.00,1.00,1.00,Male,1,Followup,1 +1934,C,19.00,2.00,4.00,Female,1,Followup,8 +1936,B,18.00,2.00,1.00,Female,1,Followup,2 +1937,A,21.00,3.00,3.00,Female,1,Followup,9 +1939,A,21.00,20.0,1.00,Male,1,Followup,20 +1941,C,21.00,0.00,0.00,Female,1,Followup,0 +1942,A,19.00,1.00,8.00,Female,0,Followup,8 +1943,C,22.00,2.00,3.00,Female,1,Followup,6 +1944,C,25.00,7.00,2.00,Female,1,Followup,14 +1945,B,27.00,5.00,2.00,Male,1,Followup,10 +1946,A,20.00,1.00,3.00,Male,1,Followup,3 +1951,B,55.00,0.00,0.00,Male,0,Followup,0 +1952,A,21.00,1.00,1.00,Male,1,Followup,1 +1953,A,22.00,0.00,0.00,Female,1,Followup,0 +1954,A,24.00,5.00,1.00,Male,1,Followup,5 +1955,C,31.00,28.0,1.00,Male,1,Followup,28 +1957,A,19.00,0.00,0.00,Male,1,Followup,0 +1958,A,19.00,0.00,0.00,Female,0,Followup,0 +1960,A,19.00,4.00,7.00,Female,1,Followup,28 +1961,C,23.00,3.00,5.00,Female,1,Followup,15 +1962,B,22.00,2.00,10.0,Male,0,Followup,20 +1963,C,23.00,4.00,1.00,Female,1,Followup,4 +1965,A,19.00,8.00,5.00,Male,1,Followup,40 +1966,A,20.00,1.00,5.00,Female,1,Followup,5 +1967,B,30.00,14.0,1.00,Female,1,Followup,14 +1968,A,21.00,3.00,2.00,Female,1,Followup,6 +1969,A,18.00,0.00,0.00,Female,0,Followup,0 +1970,A,19.00,5.00,2.00,Male,1,Followup,10 +1971,A,25.00,0.00,0.00,Female,1,Followup,0 +1972,B,28.00,0.00,0.00,Female,1,Followup,0 +1973,B,27.00,0.00,0.00,Male,1,Followup,0 +1975,C,21.00,14.0,6.00,Male,1,Followup,84 +1976,B,21.00,0.00,0.00,Male,0,Followup,0 +1977,C,25.00,4.00,1.00,Female,1,Followup,4 +1978,A,29.00,3.00,1.00,Male,1,Followup,3 +1982,B,21.00,1.00,2.00,Female,0,Followup,2 +1983,A,19.00,7.00,4.00,Female,1,Followup,28 +1984,C,19.00,2.00,7.00,Female,1,Followup,14 +1985,A,22.00,4.00,1.00,Female,1,Followup,4 +1986,C,18.00,0.00,0.00,Male,1,Followup,0 +1987,C,20.00,6.00,3.00,Female,1,Followup,18 +1988,C,44.00,3.00,1.00,Female,1,Followup,3 +1989,C,23.00,7.00,2.00,Male,1,Followup,14 +1990,B,36.00,2.00,1.00,Female,1,Followup,2 +1991,C,24.00,3.00,1.00,Female,1,Followup,3 +1992,A,22.00,5.00,2.00,Male,1,Followup,10 +1993,B,29.00,6.00,21.0,Male,1,Followup,126 +1994,C,18.00,2.00,2.00,Male,1,Followup,4 +1996,C,20.00,0.00,0.00,Female,1,Followup,0 +1998,A,20.00,0.00,0.00,Female,0,Followup,0 +1999,C,21.00,2.00,7.00,Female,1,Followup,14 +2000,B,21.00,2.00,3.00,Female,1,Followup,6 +2002,B,18.00,0.00,0.00,Male,1,Followup,0 +2004,B,38.00,3.00,2.00,Male,1,Followup,6 +2005,C,49.00,1.00,1.00,Female,1,Followup,1 +2006,A,59.00,26.0,4.00,Male,1,Followup,104 +2007,C,22.00,3.00,12.0,Male,1,Followup,36 +2009,B,25.00,4.00,4.00,Male,1,Followup,16 +2010,A,20.00,1.00,1.00,Female,0,Followup,1 +2012,C,19.00,0.00,0.00,Female,1,Followup,0 +2013,C,19.00,2.00,3.00,Female,1,Followup,6 +2014,B,22.00,7.00,10.0,Female,1,Followup,70 +2015,B,20.00,0.00,0.00,Female,0,Followup,0 +2016,C,20.00,5.00,10.0,Male,1,Followup,50 +2017,C,21.00,8.00,7.00,Male,1,Followup,56 +2018,B,19.00,2.00,5.00,Female,1,Followup,10 +2020,B,19.00,0.00,0.00,Female,0,Followup,0 +2022,C,21.00,2.00,2.00,Male,1,Followup,4 +2024,B,22.00,1.00,3.00,Female,0,Followup,3 +2025,B,72.00,21.0,2.00,Female,1,Followup,42 +2026,B,21.00,2.00,6.00,Male,1,Followup,12 +2027,B,18.00,0.00,0.00,Female,0,Followup,0 +2028,A,21.00,0.00,0.00,Female,1,Followup,0 +2029,B,19.00,4.00,15.0,Male,1,Followup,60 +2030,B,42.00,0.00,0.00,Male,0,Followup,0 +2032,A,25.00,3.00,1.00,Female,1,Followup,3 +2036,C,19.00,0.00,0.00,Female,1,Followup,0 +2037,A,19.00,0.00,0.00,Female,0,Followup,0 +2038,A,19.00,3.00,7.00,Female,1,Followup,21 +2039,A,18.00,0.00,0.00,Female,0,Followup,0 +2040,C,24.00,3.00,10.0,Female,1,Followup,30 +2041,C,18.00,6.00,3.00,Male,1,Followup,18 +2042,B,20.00,2.00,3.00,Female,1,Followup,6 +2043,A,39.00,0.00,0.00,Male,0,Followup,0 +2045,C,19.00,16.0,2.00,Female,1,Followup,32 +2046,B,20.00,2.00,3.00,Female,1,Followup,6 +2047,B,21.00,0.00,0.00,Male,0,Followup,0 +2049,A,23.00,2.00,3.00,Male,1,Followup,6 +2050,C,19.00,1.00,8.00,Female,1,Followup,8 +2051,A,20.00,1.00,5.00,Female,1,Followup,5 +2053,C,25.00,1.00,1.00,Female,1,Followup,1 +2054,A,18.00,1.00,5.00,Male,1,Followup,5 +2055,B,20.00,6.00,4.00,Male,1,Followup,24 +2056,B,47.00,5.00,2.00,Male,1,Followup,10 +2057,C,23.00,4.00,2.00,Male,1,Followup,8 +2059,B,19.00,2.00,2.00,Female,1,Followup,4 +2060,C,41.00,5.00,4.00,Female,1,Followup,20 +2062,C,29.00,2.00,2.00,Female,1,Followup,4 +2063,C,43.00,10.0,2.00,Female,1,Followup,20 +2064,C,21.00,2.00,4.00,Female,1,Followup,8 +2065,B,18.00,3.00,5.00,Female,1,Followup,15 +2066,A,20.00,2.00,20.0,Male,1,Followup,40 +2068,A,20.00,0.00,0.00,Female,1,Followup,0 +2069,C,24.00,3.00,5.00,Male,1,Followup,15 +2070,B,19.00,4.00,8.00,Male,1,Followup,32 +2071,A,19.00,8.00,10.0,Male,1,Followup,80 +2072,C,19.00,0.00,0.00,Female,0,Followup,0 +2074,C,19.00,2.00,8.00,Female,1,Followup,16 +2075,A,21.00,5.00,1.00,Female,1,Followup,5 +2076,A,38.00,0.00,0.00,Female,0,Followup,0 +2077,C,18.00,0.00,0.00,Male,0,Followup,0 +2078,B,24.00,0.00,0.00,Female,0,Followup,0 +2079,C,21.00,4.00,15.0,Female,1,Followup,60 +2080,A,26.00,1.00,1.00,Male,0,Followup,1 +2081,C,43.00,6.00,1.00,Male,1,Followup,6 +2085,B,21.00,6.00,2.00,Male,1,Followup,12 +2086,A,29.00,5.00,4.00,Male,1,Followup,20 +2087,C,18.00,0.00,0.00,Female,1,Followup,0 +2091,B,29.00,1.00,5.00,Male,1,Followup,5 +2092,A,27.00,2.00,3.00,Female,1,Followup,6 +2093,C,21.00,4.00,3.00,Female,1,Followup,12 +2094,B,18.00,1.00,2.00,Male,0,Followup,2 +2095,A,29.00,0.00,0.00,Female,1,Followup,0 +2096,C,20.00,4.00,10.0,Female,1,Followup,40 +2097,A,24.00,0.00,0.00,Female,0,Followup,0 +2099,C,46.00,3.00,1.00,Female,1,Followup,3 +2101,A,20.00,0.00,0.00,Male,1,Followup,0 +2102,B,19.00,4.00,7.00,Female,1,Followup,28 +2103,A,24.00,20.0,3.00,Female,1,Followup,60 +2104,A,18.00,0.00,0.00,Female,1,Followup,0 +2105,C,21.00,3.00,6.00,Male,1,Followup,18 +2106,B,18.00,3.00,4.00,Female,1,Followup,12 +2107,A,30.00,3.00,1.00,Female,1,Followup,3 +2109,B,18.00,0.00,0.00,Male,1,Followup,0 +2110,A,19.00,0.00,0.00,Female,1,Followup,0 +2111,A,19.00,0.00,0.00,Female,1,Followup,0 +2112,B,21.00,4.00,2.00,Female,1,Followup,8 +2113,A,18.00,0.00,0.00,Female,1,Followup,0 +2114,C,22.00,2.00,4.00,Female,1,Followup,8 +2115,B,21.00,5.00,3.00,Male,1,Followup,15 +2118,B,21.00,0.00,0.00,Female,1,Followup,0 +2119,A,20.00,7.00,9.00,Female,1,Followup,63 +2120,B,19.00,3.00,10.0,Male,1,Followup,30 +2121,B,20.00,7.00,2.00,Female,1,Followup,14 +2123,B,18.00,0.00,0.00,Female,1,Followup,0 +2127,B,22.00,2.00,5.00,Female,1,Followup,10 +2128,A,23.00,10.0,10.0,Male,1,Followup,100 +2130,C,20.00,3.00,5.00,Female,1,Followup,15 +2131,C,20.00,5.00,10.0,Male,1,Followup,50 +2132,B,22.00,1.00,6.00,Male,1,Followup,6 +2134,B,18.00,2.00,5.00,Female,1,Followup,10 +2135,C,19.00,0.00,0.00,Male,0,Followup,0 +2136,A,18.00,2.00,7.00,Female,1,Followup,14 +2138,B,31.00,3.00,5.00,Male,1,Followup,15 +2139,B,25.00,0.00,0.00,Female,0,Followup,0 +2140,B,23.00,5.00,3.00,Male,1,Followup,15 +2142,A,22.00,1.00,1.00,Female,0,Followup,1 +2143,C,18.00,0.00,0.00,Female,0,Followup,0 +2144,A,19.00,0.00,0.00,Female,1,Followup,0 +2145,C,21.00,3.00,2.00,Female,1,Followup,6 +2146,B,18.00,3.00,4.00,Female,1,Followup,12 +2147,C,22.00,4.00,8.00,Female,1,Followup,32 +2149,A,42.00,3.00,2.00,Female,1,Followup,6 +2150,A,20.00,3.00,6.00,Female,1,Followup,18 +2151,C,19.00,0.00,0.00,Female,0,Followup,0 +2152,C,18.00,4.00,6.00,Male,1,Followup,24 +2153,A,19.00,1.00,6.00,Female,1,Followup,6 +2155,B,17.00,1.00,1.00,Female,0,Followup,1 +2156,C,22.00,6.00,6.00,Male,1,Followup,36 +2158,B,29.00,5.00,8.00,Male,1,Followup,40 +2159,B,20.00,0.00,0.00,Female,0,Followup,0 +2160,C,20.00,1.00,6.00,Female,1,Followup,6 +2161,C,18.00,3.00,7.00,Female,1,Followup,21 +2163,C,28.00,3.00,1.00,Female,1,Followup,3 +2164,B,19.00,0.00,0.00,Female,0,Followup,0 +2165,C,22.00,0.00,0.00,Male,0,Followup,0 +2166,B,20.00,1.00,1.00,Male,1,Followup,1 +2167,C,37.00,18.0,3.00,Male,1,Followup,54 +2169,B,24.00,0.00,0.00,Female,0,Followup,0 +2170,B,23.00,8.00,10.0,Male,1,Followup,80 +2171,B,28.00,3.00,1.00,Female,1,Followup,3 +2172,C,33.00,0.00,0.00,Female,0,Followup,0 +2173,A,20.00,2.00,2.00,Female,1,Followup,4 +2174,B,18.00,4.00,9.00,Female,1,Followup,36 +2175,B,21.00,3.00,3.00,Male,1,Followup,9 +2177,B,26.00,12.0,2.00,Female,1,Followup,24 +2178,C,22.00,1.00,6.00,Male,1,Followup,6 +2183,C,19.00,5.00,6.00,Female,1,Followup,30 +2184,A,19.00,5.00,3.00,Female,1,Followup,15 +2185,A,19.00,9.00,16.0,Male,1,Followup,144 +2186,B,19.00,2.00,2.00,Male,0,Followup,4 +2187,B,19.00,25.0,2.00,Male,1,Followup,50 +2188,B,20.00,0.00,0.00,Female,0,Followup,0 +2189,B,19.00,1.00,5.00,Female,1,Followup,5 +2190,C,19.00,5.00,4.00,Female,1,Followup,20 +2191,C,27.00,0.00,0.00,Female,1,Followup,0 +2192,A,44.00,0.00,0.00,Female,0,Followup,0 +2193,C,21.00,0.00,0.00,Female,1,Followup,0 +2194,A,19.00,3.00,1.00,Female,1,Followup,3 +2197,B,21.00,1.00,3.00,Female,1,Followup,3 +2198,A,53.00,6.00,4.00,Male,1,Followup,24 +2200,B,18.00,2.00,3.00,Female,1,Followup,6 +2203,C,19.00,1.00,8.00,Male,1,Followup,8 +2204,C,21.00,0.00,0.00,Male,1,Followup,0 +2205,A,19.00,5.00,7.00,Female,1,Followup,35 +2206,C,19.00,2.00,7.00,Male,1,Followup,14 +2207,B,23.00,4.00,2.00,Female,1,Followup,8 +2208,B,20.00,2.00,1.00,Female,0,Followup,2 +2210,A,19.00,0.00,0.00,Female,0,Followup,0 +2211,C,19.00,2.00,3.00,Female,1,Followup,6 +2212,B,20.00,1.00,3.00,Female,1,Followup,3 +2214,C,23.00,2.00,3.00,Male,1,Followup,6 +2215,A,35.00,0.00,0.00,Female,0,Followup,0 +2216,B,19.00,0.00,0.00,Female,1,Followup,0 +2217,B,19.00,4.00,4.00,Male,1,Followup,16 +2218,A,20.00,0.00,0.00,Female,0,Followup,0 +2219,C,18.00,3.00,5.00,Female,1,Followup,15 +2221,A,18.00,0.00,0.00,Female,1,Followup,0 +2222,A,27.00,0.00,0.00,Female,0,Followup,0 +2223,B,21.00,0.00,0.00,Female,1,Followup,0 +2224,B,20.00,0.00,0.00,Male,1,Followup,0 +2225,B,23.00,0.00,0.00,Female,0,Followup,0 +2226,C,19.00,6.00,7.00,Female,1,Followup,42 +2227,B,19.00,9.00,16.0,Male,1,Followup,144 +2229,A,22.00,3.00,1.00,Male,1,Followup,3 +2230,B,22.00,3.00,6.00,Female,1,Followup,18 +2231,C,23.00,0.00,0.00,Male,1,Followup,0 +2232,B,22.00,6.00,4.00,Female,1,Followup,24 +2233,C,18.00,0.00,0.00,Female,0,Followup,0 +2234,C,21.00,4.00,8.00,Female,1,Followup,32 +2235,A,21.00,0.00,0.00,Female,1,Followup,0 +2236,C,19.00,10.0,10.0,Female,1,Followup,100 +2237,C,17.00,4.00,5.00,Male,1,Followup,20 +2238,A,20.00,2.00,3.00,Male,1,Followup,6 +2239,B,23.00,4.00,6.00,Female,1,Followup,24 +2241,B,41.00,2.00,4.00,Female,1,Followup,8 +2242,B,24.00,0.00,0.00,Female,1,Followup,0 +2247,A,20.00,9.00,3.00,Female,1,Followup,27 +2248,C,23.00,5.00,10.0,Male,1,Followup,50 +2250,C,27.00,4.00,6.00,Male,1,Followup,24 +2251,B,22.00,3.00,3.00,Female,1,Followup,9 +2252,C,37.00,0.00,0.00,Male,0,Followup,0 +2253,A,25.00,3.00,1.00,Female,1,Followup,3 +2255,B,20.00,1.00,6.00,Female,1,Followup,6 +2256,A,25.00,0.00,0.00,Female,0,Followup,0 +2257,B,20.00,0.00,0.00,Male,0,Followup,0 +2259,C,18.00,0.00,0.00,Female,0,Followup,0 +2260,C,25.00,5.00,1.00,Female,1,Followup,5 +2263,B,25.00,4.00,1.00,Female,1,Followup,4 +2264,C,21.00,12.0,14.0,Male,1,Followup,168 +2265,A,20.00,2.00,5.00,Female,1,Followup,10 +2266,C,21.00,2.00,1.00,Female,0,Followup,2 +2268,B,19.00,2.00,6.00,Male,1,Followup,12 +2269,B,22.00,4.00,1.00,Female,1,Followup,4 +2270,B,19.00,0.00,0.00,Male,0,Followup,0 +2271,A,22.00,0.00,0.00,Female,1,Followup,0 +2272,B,30.00,4.00,2.00,Male,1,Followup,8 +2275,B,18.00,3.00,5.00,Male,1,Followup,15 +2276,B,20.00,1.00,4.00,Female,1,Followup,4 +2278,A,20.00,0.00,0.00,Female,1,Followup,0 +2279,A,18.00,2.00,5.00,Male,1,Followup,10 +2280,B,20.00,5.00,3.00,Female,1,Followup,15 +2281,C,21.00,1.00,10.0,Male,1,Followup,10 +2282,B,19.00,5.00,10.0,Male,1,Followup,50 +2283,C,21.00,4.00,6.00,Female,1,Followup,24 +2285,B,20.00,1.00,10.0,Male,1,Followup,10 +2286,A,18.00,2.00,6.00,Female,1,Followup,12 +2287,B,19.00,1.00,2.00,Female,1,Followup,2 +2288,C,22.00,3.00,2.00,Male,1,Followup,6 +2289,A,22.00,2.00,2.00,Female,1,Followup,4 +2292,B,19.00,0.00,0.00,Male,0,Followup,0 +2293,B,18.00,0.00,0.00,Female,1,Followup,0 +2294,C,20.00,2.00,3.00,Male,1,Followup,6 +2296,A,20.00,0.00,0.00,Male,0,Followup,0 +2297,A,19.00,3.00,1.00,Female,1,Followup,3 +2299,B,26.00,10.0,4.00,Male,1,Followup,40 +2300,A,19.00,3.00,6.00,Male,1,Followup,18 +2301,B,20.00,3.00,4.00,Female,1,Followup,12 +2303,C,27.00,0.00,0.00,Male,0,Followup,0 +2304,A,24.00,3.00,1.00,Female,1,Followup,3 +2305,A,21.00,3.00,2.00,Male,1,Followup,6 +2306,B,30.00,3.00,10.0,Male,1,Followup,30 +2307,A,18.00,2.00,3.00,Male,1,Followup,6 +2308,A,18.00,0.00,0.00,Male,1,Followup,0 +2309,B,21.00,0.00,0.00,Male,1,Followup,0 +2310,A,21.00,2.00,4.00,Female,1,Followup,8 +2311,B,32.00,3.00,5.00,Female,1,Followup,15 +2312,B,22.00,2.00,5.00,Female,1,Followup,10 +2313,A,22.00,0.00,0.00,Female,0,Followup,0 +2314,B,18.00,0.00,0.00,Female,0,Followup,0 +2316,C,31.00,0.00,0.00,Female,1,Followup,0 +2318,C,21.00,1.00,10.0,Male,1,Followup,10 +2320,C,22.00,7.00,1.00,Female,1,Followup,7 +2321,C,20.00,7.00,8.00,Female,1,Followup,56 +2322,C,19.00,4.00,4.00,Male,1,Followup,16 +2323,C,18.00,4.00,8.00,Female,1,Followup,32 +2324,C,19.00,0.00,0.00,Male,1,Followup,0 +2325,B,20.00,6.00,16.0,Male,1,Followup,96 +2326,C,20.00,1.00,7.00,Female,1,Followup,7 +2327,B,20.00,3.00,5.00,Female,1,Followup,15 +2328,A,21.00,0.00,0.00,Female,1,Followup,0 +2329,B,18.00,0.00,0.00,Female,1,Followup,0 +2330,C,22.00,13.0,1.00,Female,1,Followup,13 +2331,C,21.00,0.00,0.00,Female,0,Followup,0 +2332,B,18.00,1.00,3.00,Female,1,Followup,3 +2333,B,20.00,8.00,2.00,Male,1,Followup,16 +2334,C,32.00,2.00,2.00,Male,1,Followup,4 +2335,A,30.00,1.00,6.00,Male,1,Followup,6 +2338,C,36.00,0.00,0.00,Female,0,Followup,0 +2339,B,21.00,3.00,4.00,Female,1,Followup,12 +2340,B,45.00,15.0,2.00,Male,1,Followup,30 +2341,B,21.00,2.00,2.00,Female,1,Followup,4 +2342,C,22.00,12.0,1.00,Male,1,Followup,12 +2343,A,20.00,0.00,0.00,Female,1,Followup,0 +2344,C,20.00,5.00,8.00,Female,1,Followup,40 +2345,A,18.00,2.00,6.00,Male,1,Followup,12 +2348,C,25.00,8.00,6.00,Male,1,Followup,48 +2351,C,18.00,0.00,0.00,Female,0,Followup,0 +2352,C,20.00,8.00,3.00,Female,1,Followup,24 +2353,A,19.00,2.00,16.0,Male,1,Followup,32 +2354,C,20.00,0.00,0.00,Female,1,Followup,0 +2355,A,21.00,6.00,4.00,Female,1,Followup,24 +2356,A,22.00,8.00,2.00,Female,1,Followup,16 +2357,B,20.00,8.00,2.00,Male,1,Followup,16 +2359,A,21.00,5.00,6.00,Female,1,Followup,30 +2361,C,19.00,2.00,4.00,Female,1,Followup,8 +2362,A,20.00,7.00,7.00,Female,1,Followup,49 +2363,A,21.00,2.00,7.00,Male,1,Followup,14 +2364,A,17.00,0.00,0.00,Female,0,Followup,0 +2365,C,20.00,0.00,0.00,Female,1,Followup,0 +2366,C,48.00,16.0,2.00,Female,1,Followup,32 +2367,B,20.00,3.00,2.00,Female,1,Followup,6 +2369,B,18.00,0.00,0.00,Female,0,Followup,0 +2370,B,22.00,4.00,2.00,Female,1,Followup,8 +2371,B,21.00,5.00,3.00,Female,1,Followup,15 +2372,B,21.00,5.00,5.00,Female,1,Followup,25 +2373,B,20.00,3.00,10.0,Male,1,Followup,30 +2374,B,21.00,1.00,1.00,Female,1,Followup,1 +2375,A,18.00,0.00,0.00,Female,0,Followup,0 +2378,B,22.00,0.00,0.00,Female,0,Followup,0 +2380,B,22.00,0.00,0.00,Female,1,Followup,0 +2382,B,19.00,3.00,10.0,Male,1,Followup,30 +2383,A,46.00,4.00,2.00,Female,1,Followup,8 +2384,B,22.00,2.00,3.00,Female,1,Followup,6 +2385,C,34.00,3.00,1.00,Female,0,Followup,3 +2387,B,21.00,5.00,2.00,Female,1,Followup,10 +2388,B,21.00,9.00,20.0,Female,1,Followup,180 +2389,C,22.00,2.00,4.00,Female,1,Followup,8 +2390,A,23.00,4.00,6.00,Female,1,Followup,24 +2391,A,23.00,8.00,3.00,Female,1,Followup,24 +2392,B,31.00,5.00,1.00,Female,0,Followup,5 +2393,B,22.00,0.00,0.00,Female,0,Followup,0 +2394,B,20.00,4.00,5.00,Male,1,Followup,20 +2395,B,22.00,0.00,0.00,Female,0,Followup,0 +2396,A,18.00,2.00,9.00,Male,1,Followup,18 +2397,A,30.00,0.00,0.00,Male,0,Followup,0 +2398,B,42.00,1.00,2.00,Female,0,Followup,2 +2399,A,23.00,1.00,7.00,Female,1,Followup,7 +2400,A,25.00,0.00,0.00,Female,0,Followup,0 +2403,A,22.00,3.00,2.00,Female,0,Followup,6 +2404,C,20.00,3.00,1.00,Male,1,Followup,3 +2405,B,18.00,4.00,8.00,Female,1,Followup,32 +2407,B,18.00,5.00,10.0,Male,1,Followup,50 +2408,C,20.00,0.00,0.00,Male,0,Followup,0 +2409,C,21.00,4.00,12.0,Female,1,Followup,48 +2410,C,18.00,2.00,5.00,Female,1,Followup,10 +2412,C,23.00,1.00,2.00,Female,1,Followup,2 +2413,B,22.00,0.00,0.00,Female,0,Followup,0 +2414,C,22.00,1.00,2.00,Female,1,Followup,2 +2415,A,19.00,0.00,0.00,Female,0,Followup,0 +2417,B,18.00,1.00,1.00,Female,1,Followup,1 +2418,A,18.00,1.00,3.00,Female,1,Followup,3 +2419,A,19.00,0.00,0.00,Female,0,Followup,0 +2421,C,32.00,0.00,0.00,Male,1,Followup,0 +2422,B,28.00,2.00,3.00,Female,1,Followup,6 +2423,A,22.00,1.00,2.00,Female,1,Followup,2 +2424,B,23.00,2.00,5.00,Male,1,Followup,10 +2425,B,19.00,0.00,0.00,Female,0,Followup,0 +2426,C,20.00,2.00,5.00,Female,1,Followup,10 +2427,B,27.00,5.00,1.00,Male,1,Followup,5 +2428,B,20.00,5.00,10.0,Male,1,Followup,50 +2430,B,20.00,4.00,6.00,Female,1,Followup,24 +2431,A,23.00,4.00,1.00,Female,1,Followup,4 +2432,A,21.00,5.00,10.0,Male,1,Followup,50 +2433,C,21.00,5.00,10.0,Male,1,Followup,50 +2434,C,22.00,3.00,6.00,Female,1,Followup,18 +2436,A,20.00,2.00,3.00,Female,1,Followup,6 +2437,C,23.00,4.00,2.00,Female,1,Followup,8 +2438,B,31.00,12.0,1.00,Female,1,Followup,12 +2439,C,18.00,2.00,7.00,Male,1,Followup,14 +2440,A,19.00,0.00,0.00,Male,1,Followup,0 +2441,C,21.00,2.00,4.00,Female,0,Followup,8 +2442,B,28.00,10.0,2.00,Female,1,Followup,20 +2444,C,22.00,0.00,0.00,Female,1,Followup,0 +2445,A,21.00,0.00,0.00,Female,1,Followup,0 +2446,A,19.00,2.00,2.00,Male,1,Followup,4 +2448,A,38.00,0.00,0.00,Female,1,Followup,0 +2449,B,59.00,14.0,2.00,Male,1,Followup,28 +2451,B,22.00,1.00,1.00,Female,1,Followup,1 +2452,C,20.00,0.00,0.00,Female,0,Followup,0 +2454,A,18.00,0.00,0.00,Female,1,Followup,0 +2455,B,24.00,8.00,3.00,Female,1,Followup,24 +2456,A,18.00,8.00,4.00,Male,1,Followup,32 +2457,B,21.00,1.00,2.00,Female,1,Followup,2 +2459,C,21.00,4.00,10.0,Male,1,Followup,40 +2461,C,18.00,3.00,4.00,Female,1,Followup,12 +2462,A,19.00,2.00,5.00,Female,1,Followup,10 +2464,A,22.00,6.00,2.00,Male,1,Followup,12 +2465,C,21.00,1.00,1.00,Female,1,Followup,1 +2467,C,18.00,0.00,0.00,Female,0,Followup,0 +2468,A,19.00,5.00,5.00,Male,1,Followup,25 +2469,C,22.00,2.00,2.00,Female,1,Followup,4 +2470,A,21.00,0.00,0.00,Male,1,Followup,0 +2472,B,35.00,0.00,0.00,Female,0,Followup,0 +2473,B,18.00,9.00,18.0,Male,1,Followup,162 +2475,B,18.00,8.00,5.00,Male,1,Followup,40 +2477,C,20.00,2.00,4.00,Male,1,Followup,8 +2478,C,25.00,3.00,1.00,Female,1,Followup,3 +2479,A,19.00,1.00,8.00,Female,1,Followup,8 +2482,C,19.00,2.00,20.0,Male,1,Followup,40 +2483,C,21.00,0.00,0.00,Female,1,Followup,0 +2484,B,22.00,1.00,8.00,Female,1,Followup,8 +2485,B,21.00,0.00,0.00,Male,1,Followup,0 +2486,C,26.00,3.00,3.00,Male,1,Followup,9 +2487,B,48.00,1.00,1.00,Female,1,Followup,1 +2488,A,23.00,4.00,8.00,Female,1,Followup,32 +2489,C,28.00,0.00,0.00,Female,0,Followup,0 +2490,B,25.00,4.00,2.00,Male,1,Followup,8 +2491,C,20.00,8.00,7.00,Female,1,Followup,56 +2492,A,18.00,6.00,3.00,Female,1,Followup,18 +2493,B,29.00,10.0,1.00,Female,1,Followup,10 +2494,C,22.00,0.00,0.00,Female,0,Followup,0 +2495,C,22.00,0.00,0.00,Female,1,Followup,0 +2496,C,19.00,3.00,2.00,Female,1,Followup,6 +2497,B,22.00,0.00,0.00,Male,0,Followup,0 +2499,C,29.00,4.00,2.00,Male,1,Followup,8 +2501,B,21.00,0.00,0.00,Female,1,Followup,0 +2502,C,27.00,6.00,2.00,Female,1,Followup,12 +2503,A,27.00,18.0,2.00,Female,1,Followup,36 +2504,A,18.00,3.00,4.00,Male,1,Followup,12 +2506,A,35.00,3.00,2.00,Male,1,Followup,6 +2507,C,19.00,2.00,4.00,Male,1,Followup,8 +2508,B,26.00,7.00,2.00,Female,1,Followup,14 +2509,B,32.00,9.00,2.00,Female,1,Followup,18 +2510,C,19.00,0.00,0.00,Female,0,Followup,0 +2511,C,24.00,4.00,5.00,Female,1,Followup,20 +2512,C,18.00,6.00,5.00,Female,1,Followup,30 +2513,A,52.00,0.00,0.00,Male,0,Followup,0 +2514,C,40.00,2.00,4.00,Female,1,Followup,8 +2515,B,19.00,9.00,4.00,Female,1,Followup,36 +2516,A,23.00,0.00,0.00,Male,0,Followup,0 +2517,A,22.00,16.0,1.00,Female,1,Followup,16 +2518,B,27.00,6.00,1.00,Female,1,Followup,6 +2519,A,21.00,0.00,0.00,Female,0,Followup,0 +2520,C,20.00,1.00,1.00,Female,0,Followup,1 +2521,B,19.00,2.00,2.00,Female,1,Followup,4 +2522,C,46.00,2.00,1.00,Female,1,Followup,2 +2523,B,45.00,16.0,3.00,Male,1,Followup,48 +2524,B,30.00,2.00,1.00,Male,1,Followup,2 +2525,C,23.00,5.00,7.00,Female,1,Followup,35 +2526,B,37.00,0.00,0.00,Male,0,Followup,0 +2527,B,21.00,0.00,0.00,Female,0,Followup,0 +2528,C,21.00,2.00,6.00,Female,1,Followup,12 +2529,C,20.00,2.00,3.00,Female,1,Followup,6 +2530,B,18.00,1.00,1.00,Female,1,Followup,1 +2531,A,19.00,4.00,3.00,Male,1,Followup,12 +2532,B,28.00,0.00,0.00,Male,1,Followup,0 +2533,B,31.00,12.0,1.00,Female,1,Followup,12 +2534,C,20.00,0.00,0.00,Female,0,Followup,0 +2535,A,19.00,3.00,4.00,Female,1,Followup,12 +2536,A,26.00,4.00,4.00,Female,1,Followup,16 +2539,B,18.00,0.00,0.00,Female,0,Followup,0 +2540,B,24.00,5.00,1.00,Female,1,Followup,5 +2541,C,23.00,0.00,0.00,Male,1,Followup,0 +2543,C,19.00,5.00,10.0,Male,1,Followup,50 +2545,A,20.00,4.00,2.00,Male,1,Followup,8 +2546,A,21.00,2.00,8.00,Male,1,Followup,16 +2547,B,22.00,1.00,7.00,Female,1,Followup,7 +2548,C,33.00,14.0,2.00,Female,1,Followup,28 +2549,A,25.00,3.00,2.00,Female,1,Followup,6 +2551,B,27.00,0.00,0.00,Male,0,Followup,0 +2552,B,25.00,5.00,2.00,Female,1,Followup,10 +2553,B,17.00,0.00,0.00,Female,0,Followup,0 +2554,A,20.00,4.00,2.00,Male,1,Followup,8 +2555,C,25.00,2.00,2.00,Female,1,Followup,4 +2556,A,19.00,0.00,0.00,Female,0,Followup,0 +2557,A,22.00,2.00,1.00,Male,1,Followup,2 +2559,C,21.00,1.00,1.00,Female,1,Followup,1 +2560,A,21.00,4.00,2.00,Female,1,Followup,8 +2562,B,18.00,2.00,5.00,Female,1,Followup,10 +2564,C,29.00,10.0,3.00,Male,1,Followup,30 +2565,A,20.00,1.00,8.00,Female,1,Followup,8 +2566,B,21.00,6.00,1.00,Female,1,Followup,6 +2567,C,27.00,0.00,0.00,Female,0,Followup,0 +2568,C,48.00,0.00,0.00,Female,0,Followup,0 +2569,B,20.00,0.00,0.00,Female,0,Followup,0 +2570,B,20.00,5.00,6.00,Female,1,Followup,30 +2571,A,22.00,3.00,8.00,Male,1,Followup,24 +2572,A,22.00,5.00,1.00,Male,1,Followup,5 +2573,A,19.00,2.00,5.00,Female,1,Followup,10 +2574,A,20.00,10.0,3.00,Male,1,Followup,30 +2575,A,25.00,5.00,3.00,Female,1,Followup,15 +2576,A,18.00,0.00,0.00,Male,0,Followup,0 +2577,B,19.00,2.00,1.00,Male,1,Followup,2 +2579,B,21.00,2.00,4.00,Female,1,Followup,8 +2580,B,22.00,2.00,2.00,Female,0,Followup,4 +2581,B,18.00,0.00,0.00,Male,0,Followup,0 +2582,C,28.00,2.00,3.00,Female,1,Followup,6 +2584,B,35.00,16.0,3.00,Male,1,Followup,48 +2586,A,20.00,6.00,8.00,Female,1,Followup,48 +2587,B,23.00,6.00,1.00,Female,1,Followup,6 +2588,C,19.00,0.00,0.00,Male,0,Followup,0 +2589,B,21.00,12.0,3.00,Female,1,Followup,36 +2590,B,22.00,1.00,1.00,Male,1,Followup,1 +2591,A,22.00,0.00,0.00,Female,0,Followup,0 +2592,C,22.00,0.00,0.00,Female,0,Followup,0 +2593,C,22.00,1.00,1.00,Female,1,Followup,1 +2595,A,18.00,1.00,3.00,Female,1,Followup,3 +2596,A,46.00,6.00,3.00,Male,1,Followup,18 +2598,A,46.00,8.00,3.00,Female,1,Followup,24 +2599,C,21.00,7.00,2.00,Female,1,Followup,14 +2601,C,47.00,12.0,1.00,Female,1,Followup,12 +2602,A,21.00,0.00,0.00,Female,0,Followup,0 +2603,A,18.00,4.00,4.00,Female,1,Followup,16 +2606,B,20.00,2.00,3.00,Female,1,Followup,6 +2607,C,28.00,1.00,1.00,Female,0,Followup,1 +2608,A,23.00,0.00,0.00,Female,0,Followup,0 +2610,A,22.00,1.00,1.00,Female,0,Followup,1 +2611,A,20.00,0.00,0.00,Female,1,Followup,0 +2612,A,34.00,1.00,3.00,Female,1,Followup,3 +2613,A,20.00,0.00,0.00,Female,1,Followup,0 +2614,C,35.00,2.00,6.00,Female,1,Followup,12 +2615,B,22.00,1.00,1.00,Female,1,Followup,1 +2616,C,26.00,0.00,0.00,Male,0,Followup,0 +2617,B,21.00,3.00,1.00,Female,1,Followup,3 +2620,A,22.00,5.00,3.00,Female,1,Followup,15 +2621,C,18.00,6.00,2.00,Male,1,Followup,12 +2622,C,21.00,5.00,5.00,Female,1,Followup,25 +2623,B,21.00,0.00,0.00,Male,0,Followup,0 +2624,B,22.00,4.00,2.00,Female,1,Followup,8 +2625,B,23.00,4.00,10.0,Female,1,Followup,40 +2626,C,22.00,2.00,1.00,Female,1,Followup,2 +2627,C,20.00,0.00,0.00,Male,1,Followup,0 +2628,B,22.00,0.00,0.00,Female,0,Followup,0 +2630,B,20.00,0.00,0.00,Female,1,Followup,0 +2631,B,19.00,1.00,4.00,Female,1,Followup,4 +2632,C,21.00,0.00,0.00,Female,1,Followup,0 +2633,B,22.00,5.00,1.00,Female,1,Followup,5 +2635,C,25.00,0.00,0.00,Male,0,Followup,0 +2636,B,22.00,2.00,8.00,Male,1,Followup,16 +2637,A,22.00,0.00,0.00,Female,0,Followup,0 +2638,B,23.00,3.00,8.00,Male,1,Followup,24 +2640,B,18.00,0.00,0.00,Female,0,Followup,0 +2641,B,23.00,0.00,0.00,Female,0,Followup,0 +2645,A,21.00,7.00,8.00,Male,1,Followup,56 +2646,C,20.00,2.00,6.00,Male,1,Followup,12 +2647,C,24.00,3.00,3.00,Female,1,Followup,9 +2650,C,37.00,0.00,0.00,Female,1,Followup,0 +2651,A,19.00,5.00,4.00,Female,1,Followup,20 +2652,C,22.00,6.00,1.00,Male,1,Followup,6 +2655,C,19.00,1.00,20.0,Female,1,Followup,20 +2658,A,19.00,0.00,0.00,Male,1,Followup,0 +2660,B,22.00,4.00,2.00,Female,1,Followup,8 +2661,A,21.00,10.0,9.00,Female,1,Followup,90 +2662,A,21.00,0.00,0.00,Female,0,Followup,0 +2663,A,21.00,4.00,2.00,Female,1,Followup,8 +2667,C,24.00,2.00,1.00,Female,1,Followup,2 +2668,B,23.00,4.00,3.00,Female,1,Followup,12 +2670,B,25.00,2.00,7.00,Female,1,Followup,14 +2671,B,24.00,0.00,0.00,Female,0,Followup,0 +2672,B,22.00,1.00,2.00,Female,1,Followup,2 +2674,C,18.00,2.00,6.00,Female,1,Followup,12 +2675,C,21.00,7.00,14.0,Male,1,Followup,98 +2676,A,22.00,8.00,2.00,Female,1,Followup,16 +2677,C,21.00,0.00,0.00,Female,0,Followup,0 +2678,C,18.00,1.00,1.00,Male,1,Followup,1 +2679,B,23.00,4.00,7.00,Female,1,Followup,28 +2680,B,18.00,0.00,0.00,Female,0,Followup,0 +2684,A,24.00,4.00,2.00,Female,1,Followup,8 +2686,A,21.00,3.00,2.00,Male,1,Followup,6 +2687,A,32.00,1.00,2.00,Female,1,Followup,2 +2688,C,19.00,11.0,5.00,Female,1,Followup,55 +2689,C,21.00,1.00,2.00,Female,1,Followup,2 +2691,A,21.00,1.00,1.00,Female,1,Followup,1 +2693,B,22.00,1.00,10.0,Female,1,Followup,10 +2695,C,22.00,2.00,3.00,Female,1,Followup,6 +2696,B,20.00,0.00,0.00,Female,0,Followup,0 +2697,B,32.00,1.00,4.00,Female,1,Followup,4 +2698,A,18.00,0.00,0.00,Female,0,Followup,0 +2699,B,18.00,2.00,6.00,Male,0,Followup,12 +2700,B,19.00,3.00,4.00,Male,1,Followup,12 +2702,A,23.00,4.00,4.00,Male,1,Followup,16 +2705,A,18.00,0.00,0.00,Female,1,Followup,0 +2707,B,22.00,2.00,12.0,Male,1,Followup,24 +2709,B,21.00,8.00,3.00,Female,1,Followup,24 +2711,A,19.00,1.00,7.00,Female,1,Followup,7 +2712,C,32.00,0.00,0.00,Female,1,Followup,0 +2713,C,22.00,2.00,4.00,Female,1,Followup,8 +2714,C,18.00,1.00,2.00,Female,1,Followup,2 +2716,C,50.00,3.00,2.00,Female,1,Followup,6 +2717,C,20.00,6.00,5.00,Female,1,Followup,30 +2719,B,44.00,7.00,2.00,Female,1,Followup,14 +2720,A,23.00,0.00,0.00,Female,0,Followup,0 +2721,A,25.00,1.00,1.00,Female,0,Followup,1 +2723,A,18.00,3.00,2.00,Female,1,Followup,6 +2724,C,24.00,8.00,3.00,Female,1,Followup,24 +2725,B,21.00,0.00,0.00,Male,0,Followup,0 +2726,C,19.00,3.00,5.00,Female,1,Followup,15 +2728,B,20.00,2.00,5.00,Female,1,Followup,10 +2729,C,23.00,1.00,1.00,Female,1,Followup,1 +2730,A,28.00,10.0,1.00,Female,1,Followup,10 +2731,A,24.00,0.00,0.00,Male,0,Followup,0 +2732,A,30.00,0.00,0.00,Female,1,Followup,0 +2733,B,20.00,4.00,4.00,Female,1,Followup,16 +2734,A,20.00,1.00,2.00,Female,1,Followup,2 +2735,B,20.00,2.00,8.00,Female,1,Followup,16 +2737,A,23.00,6.00,5.00,Female,1,Followup,30 +2738,A,51.00,0.00,0.00,Female,1,Followup,0 +2739,B,19.00,5.00,4.00,Male,1,Followup,20 +2741,B,20.00,1.00,3.00,Female,1,Followup,3 +2742,A,29.00,4.00,2.00,Female,1,Followup,8 +2743,B,22.00,0.00,0.00,Female,1,Followup,0 +2744,A,21.00,6.00,12.0,Male,1,Followup,72 +2745,A,19.00,0.00,0.00,Male,1,Followup,0 +2746,C,18.00,3.00,5.00,Male,1,Followup,15 +2747,B,21.00,3.00,2.00,Male,1,Followup,6 +2749,B,26.00,4.00,3.00,Male,1,Followup,12 +2750,A,20.00,0.00,0.00,Female,1,Followup,0 +2751,A,34.00,0.00,0.00,Female,0,Followup,0 +2752,B,31.00,0.00,0.00,Female,0,Followup,0 +2753,A,19.00,2.00,1.00,Male,1,Followup,2 +2754,C,20.00,0.00,0.00,Female,0,Followup,0 +2755,B,47.00,0.00,0.00,Female,0,Followup,0 +2756,C,20.00,4.00,5.00,Female,1,Followup,20 +2758,A,21.00,3.00,2.00,Female,1,Followup,6 +2759,B,37.00,8.00,2.00,Female,1,Followup,16 +2760,C,20.00,5.00,12.0,Male,1,Followup,60 +2761,A,25.00,1.00,1.00,Female,0,Followup,1 +2762,C,22.00,4.00,2.00,Female,1,Followup,8 +2763,C,19.00,10.0,10.0,Male,1,Followup,100 +2764,C,21.00,0.00,0.00,Male,1,Followup,0 +2765,B,21.00,3.00,2.00,Male,1,Followup,6 +2766,C,20.00,1.00,6.00,Female,1,Followup,6 +2767,C,33.00,2.00,1.00,Female,1,Followup,2 +2768,A,25.00,0.00,0.00,Female,1,Followup,0 +2771,B,26.00,4.00,2.00,Male,1,Followup,8 +2772,C,22.00,1.00,4.00,Male,1,Followup,4 +2774,C,30.00,11.0,2.00,Female,1,Followup,22 +2777,C,19.00,0.00,0.00,Female,0,Followup,0 +2779,B,26.00,3.00,3.00,Female,1,Followup,9 +2782,C,20.00,0.00,0.00,Female,0,Followup,0 +2783,A,22.00,0.00,0.00,Female,0,Followup,0 +2785,B,22.00,0.00,0.00,Male,1,Followup,0 +2787,C,21.00,0.00,0.00,Female,0,Followup,0 +2790,A,19.00,1.00,8.00,Female,1,Followup,8 +2791,B,19.00,5.00,10.0,Female,1,Followup,50 +2793,B,44.00,0.00,0.00,Female,0,Followup,0 +2794,A,24.00,2.00,3.00,Female,1,Followup,6 +2795,C,18.00,0.00,0.00,Female,1,Followup,0 +2796,C,18.00,0.00,0.00,Female,0,Followup,0 +2798,C,50.00,0.00,0.00,Female,0,Followup,0 +2799,C,21.00,0.00,0.00,Female,0,Followup,0 +2801,C,19.00,0.00,0.00,Female,1,Followup,0 +2802,B,22.00,0.00,0.00,Female,1,Followup,0 +2804,B,23.00,3.00,3.00,Female,1,Followup,9 +2805,C,19.00,2.00,2.00,Female,1,Followup,4 +2806,C,22.00,1.00,1.00,Female,1,Followup,1 +2808,C,19.00,1.00,8.00,Male,1,Followup,8 +2810,C,21.00,2.00,5.00,Female,1,Followup,10 +2811,B,20.00,0.00,0.00,Male,1,Followup,0 +2813,A,30.00,4.00,2.00,Female,1,Followup,8 +2815,C,19.00,0.00,0.00,Female,0,Followup,0 +2816,C,20.00,0.00,0.00,Female,0,Followup,0 +2818,B,21.00,0.00,0.00,Female,1,Followup,0 +2820,B,30.00,4.00,2.00,Female,1,Followup,8 +2821,A,20.00,3.00,2.00,Female,1,Followup,6 +2822,B,18.00,2.00,5.00,Female,1,Followup,10 +2823,C,22.00,8.00,6.00,Female,1,Followup,48 +2824,B,18.00,3.00,15.0,Female,1,Followup,45 +2826,B,18.00,2.00,10.0,Female,1,Followup,20 +2827,C,22.00,2.00,1.00,Female,0,Followup,2 +2828,B,19.00,1.00,1.00,Female,1,Followup,1 +2830,C,23.00,4.00,1.00,Female,1,Followup,4 +2831,A,21.00,0.00,0.00,Female,0,Followup,0 +2834,B,35.00,7.00,1.00,Female,1,Followup,7 +2835,C,22.00,0.00,0.00,Female,0,Followup,0 +2836,C,19.00,4.00,3.00,Female,1,Followup,12 +2837,A,26.00,1.00,1.00,Female,1,Followup,1 +2838,A,19.00,3.00,6.00,Female,1,Followup,18 +2839,B,20.00,4.00,4.00,Female,1,Followup,16 +2842,A,20.00,0.00,0.00,Female,1,Followup,0 +2843,C,23.00,0.00,0.00,Female,1,Followup,0 +2844,C,22.00,4.00,1.00,Female,1,Followup,4 +2845,C,19.00,2.00,2.00,Female,1,Followup,4 +2847,A,18.00,5.00,3.00,Female,1,Followup,15 +2848,C,21.00,2.00,2.00,Male,1,Followup,4 +2849,C,49.00,14.0,1.00,Male,1,Followup,14 +2852,B,19.00,0.00,0.00,Female,0,Followup,0 +2853,C,20.00,6.00,1.00,Female,1,Followup,6 +2855,B,21.00,8.00,4.00,Male,1,Followup,32 +2856,B,20.00,0.00,0.00,Female,0,Followup,0 +2857,A,30.00,2.00,3.00,Male,1,Followup,6 +2859,A,50.00,5.00,4.00,Male,1,Followup,20 +2861,A,29.00,4.00,3.00,Female,1,Followup,12 +2862,C,18.00,5.00,1.00,Female,1,Followup,5 +2863,A,22.00,1.00,7.00,Male,1,Followup,7 +2864,B,20.00,7.00,6.00,Female,1,Followup,42 +2866,A,20.00,3.00,1.00,Female,1,Followup,3 +2867,C,18.00,1.00,1.00,Female,0,Followup,1 +2868,C,19.00,0.00,0.00,Female,0,Followup,0 +2869,C,20.00,2.00,3.00,Female,1,Followup,6 +2870,C,18.00,2.00,5.00,Female,1,Followup,10 +2871,A,21.00,0.00,0.00,Female,0,Followup,0 +2872,C,19.00,1.00,3.00,Female,1,Followup,3 +2875,C,20.00,2.00,4.00,Female,1,Followup,8 +2876,C,23.00,2.00,1.00,Female,1,Followup,2 +2878,C,19.00,9.00,8.00,Male,1,Followup,72 +2879,A,19.00,0.00,0.00,Female,1,Followup,0 +2880,B,28.00,5.00,1.00,Female,1,Followup,5 +2881,C,21.00,4.00,5.00,Female,1,Followup,20 +2882,C,24.00,14.0,4.00,Female,1,Followup,56 +2884,A,51.00,0.00,0.00,Female,1,Followup,0 +2886,C,23.00,2.00,1.00,Male,1,Followup,2 +2887,B,20.00,5.00,3.00,Male,1,Followup,15 +2888,A,21.00,0.00,0.00,Female,0,Followup,0 +2890,A,21.00,5.00,1.00,Male,1,Followup,5 +2891,C,24.00,0.00,0.00,Female,0,Followup,0 +2892,A,24.00,12.0,5.00,Male,1,Followup,60 +2893,C,23.00,4.00,3.00,Female,1,Followup,12 +2894,A,20.00,5.00,2.00,Female,1,Followup,10 +2895,C,19.00,0.00,0.00,Female,1,Followup,0 +2896,C,23.00,0.00,0.00,Female,0,Followup,0 +2897,C,22.00,0.00,0.00,Male,0,Followup,0 +2898,A,20.00,1.00,1.00,Female,0,Followup,1 +2900,A,46.00,7.00,2.00,Female,1,Followup,14 +2901,C,20.00,6.00,18.0,Male,1,Followup,108 +2904,B,19.00,0.00,0.00,Female,0,Followup,0 +2905,C,19.00,1.00,4.00,Male,1,Followup,4 +2906,A,22.00,3.00,6.00,Female,1,Followup,18 +2908,A,23.00,6.00,15.0,Male,1,Followup,90 +2909,B,22.00,4.00,15.0,Male,1,Followup,60 +2910,C,37.00,4.00,3.00,Male,1,Followup,12 +2911,C,19.00,0.00,0.00,Female,0,Followup,0 +2912,A,22.00,0.00,0.00,Male,1,Followup,0 +2915,B,18.00,0.00,0.00,Female,1,Followup,0 +2916,A,28.00,7.00,3.00,Female,1,Followup,21 +2918,A,18.00,4.00,6.00,Female,1,Followup,24 +2919,C,19.00,3.00,6.00,Female,1,Followup,18 +2920,B,18.00,0.00,0.00,Male,1,Followup,0 +2921,C,18.00,2.00,4.00,Female,1,Followup,8 +2922,B,20.00,4.00,2.00,Female,1,Followup,8 +2923,B,25.00,2.00,1.00,Female,1,Followup,2 +2924,B,24.00,6.00,4.00,Female,1,Followup,24 +2925,B,21.00,2.00,2.00,Female,1,Followup,4 +2927,B,18.00,0.00,0.00,Female,1,Followup,0 +2928,C,18.00,2.00,1.00,Female,0,Followup,2 +2929,B,24.00,3.00,4.00,Male,1,Followup,12 +2931,C,22.00,2.00,10.0,Female,1,Followup,20 +2932,C,20.00,3.00,4.00,Female,1,Followup,12 +2933,B,21.00,0.00,0.00,Female,1,Followup,0 +2934,A,19.00,6.00,5.00,Female,1,Followup,30 +2935,C,20.00,2.00,1.00,Male,1,Followup,2 +2936,B,47.00,8.00,2.00,Female,1,Followup,16 +2938,C,55.00,17.0,2.00,Female,1,Followup,34 +2939,C,18.00,3.00,5.00,Female,1,Followup,15 +2940,C,20.00,1.00,1.00,Male,0,Followup,1 +2941,B,18.00,2.00,1.00,Female,1,Followup,2 +2942,C,18.00,3.00,6.00,Female,1,Followup,18 +2945,B,18.00,6.00,6.00,Female,1,Followup,36 +2946,A,18.00,0.00,0.00,Male,0,Followup,0 +2947,C,19.00,2.00,1.00,Female,1,Followup,2 +2948,C,19.00,3.00,3.00,Female,1,Followup,9 +2949,B,20.00,10.0,2.00,Female,1,Followup,20 +2951,A,28.00,2.00,1.00,Female,1,Followup,2 +2953,C,41.00,0.00,0.00,Female,1,Followup,0 +2954,C,18.00,0.00,0.00,Male,0,Followup,0 +2955,B,22.00,2.00,7.00,Female,1,Followup,14 +2957,B,21.00,2.00,2.00,Female,1,Followup,4 +2958,B,20.00,3.00,7.00,Female,1,Followup,21 +2959,A,21.00,4.00,10.0,Male,1,Followup,40 +2961,A,23.00,3.00,4.00,Female,1,Followup,12 +2964,B,37.00,24.0,1.00,Female,1,Followup,24 +2965,C,21.00,7.00,10.0,Male,1,Followup,70 +2967,C,25.00,3.00,6.00,Female,1,Followup,18 +2968,A,19.00,3.00,13.0,Male,1,Followup,39 +2970,C,23.00,1.00,2.00,Male,0,Followup,2 +2971,C,18.00,1.00,1.00,Male,1,Followup,1 +2972,A,20.00,0.00,0.00,Male,0,Followup,0 +2974,C,21.00,6.00,9.00,Female,1,Followup,54 +2975,C,20.00,3.00,4.00,Female,1,Followup,12 +2976,A,19.00,3.00,1.00,Female,1,Followup,3 +2977,A,19.00,12.0,6.00,Female,1,Followup,72 +2978,B,21.00,0.00,0.00,Female,1,Followup,0 +2980,A,19.00,6.00,8.00,Male,1,Followup,48 +2981,B,22.00,4.00,1.00,Male,1,Followup,4 +2983,C,17.00,1.00,1.00,Female,1,Followup,1 +2984,B,19.00,2.00,2.00,Female,1,Followup,4 +2985,A,21.00,1.00,2.00,Male,0,Followup,2 +2987,C,21.00,1.00,6.00,Female,1,Followup,6 +2988,C,25.00,1.00,1.00,Female,0,Followup,1 +2989,B,32.00,1.00,2.00,Female,1,Followup,2 +2990,B,19.00,0.00,0.00,Male,0,Followup,0 +2992,B,18.00,4.00,6.00,Female,1,Followup,24 +2993,A,19.00,0.00,0.00,Female,0,Followup,0 +2994,C,22.00,4.00,1.00,Female,1,Followup,4 +2995,C,20.00,0.00,0.00,Female,0,Followup,0 +2996,C,26.00,0.00,0.00,Male,0,Followup,0 +2999,A,20.00,7.00,14.0,Male,1,Followup,98 +3000,A,23.00,3.00,3.00,Female,1,Followup,9 +3001,C,27.00,0.00,0.00,Female,1,Followup,0 +3003,B,21.00,2.00,2.00,Female,1,Followup,4 +3004,B,22.00,20.0,3.00,Male,1,Followup,60 +3007,B,23.00,1.00,1.00,Female,1,Followup,1 +3008,C,49.00,12.0,1.00,Female,1,Followup,12 +3009,B,18.00,2.00,2.00,Female,1,Followup,4 +3010,C,43.00,8.00,2.00,Male,1,Followup,16 +3011,C,26.00,1.00,1.00,Female,1,Followup,1 +3012,C,39.00,0.00,0.00,Female,0,Followup,0 +3013,B,37.00,1.00,1.00,Female,1,Followup,1 +3014,C,20.00,2.00,5.00,Female,1,Followup,10 +3016,A,36.00,0.00,0.00,Female,1,Followup,0 +3017,C,25.00,10.0,2.00,Female,1,Followup,20 +3018,B,22.00,0.00,0.00,Male,1,Followup,0 +3020,B,45.00,1.00,3.00,Male,0,Followup,3 +3021,B,22.00,3.00,1.00,Female,1,Followup,3 +3024,C,21.00,1.00,1.00,Female,1,Followup,1 +3025,B,21.00,20.0,1.00,Female,1,Followup,20 +3026,C,57.00,4.00,1.00,Female,1,Followup,4 +3028,C,66.00,0.00,0.00,Female,0,Followup,0 +3029,C,21.00,0.00,0.00,Female,1,Followup,0 +3031,B,19.00,8.00,2.00,Male,1,Followup,16 +3034,B,27.00,0.00,0.00,Female,0,Followup,0 +3036,C,20.00,0.00,0.00,Male,1,Followup,0 +3037,B,44.00,9.00,1.00,Female,1,Followup,9 +3038,B,19.00,1.00,1.00,Male,1,Followup,1 +3039,C,30.00,1.00,1.00,Female,1,Followup,1 +3040,C,32.00,0.00,0.00,Female,0,Followup,0 +3041,B,23.00,1.00,5.00,Female,1,Followup,5 +3042,A,20.00,1.00,1.00,Male,1,Followup,1 +3043,C,24.00,1.00,1.00,Female,1,Followup,1 +3044,B,19.00,3.00,4.00,Female,1,Followup,12 +3045,C,21.00,3.00,12.0,Male,1,Followup,36 +3046,B,44.00,4.00,2.00,Female,1,Followup,8 +3047,B,21.00,4.00,4.00,Female,1,Followup,16 +3049,C,19.00,3.00,5.00,Female,1,Followup,15 +3050,B,27.00,10.0,1.00,Female,1,Followup,10 +3051,B,21.00,6.00,7.00,Female,1,Followup,42 +3052,B,44.00,8.00,2.00,Female,1,Followup,16 +3053,A,22.00,4.00,4.00,Female,1,Followup,16 +3054,B,22.00,2.00,6.00,Female,1,Followup,12 +3055,C,17.00,0.00,0.00,Male,1,Followup,0 +3058,C,19.00,1.00,2.00,Female,1,Followup,2 +3059,A,18.00,2.00,7.00,Female,1,Followup,14 +3060,A,22.00,3.00,1.00,Female,1,Followup,3 +3062,B,19.00,2.00,2.00,Female,1,Followup,4 +3063,B,19.00,3.00,2.00,Female,1,Followup,6 +3064,B,23.00,4.00,7.00,Female,1,Followup,28 +3065,A,21.00,4.00,10.0,Female,1,Followup,40 +3066,A,22.00,4.00,10.0,Male,1,Followup,40 +3067,C,18.00,1.00,7.00,Male,1,Followup,7 +3068,B,25.00,3.00,1.00,Female,1,Followup,3 +3072,C,19.00,1.00,4.00,Female,1,Followup,4 +3074,B,20.00,4.00,2.00,Female,1,Followup,8 +3075,C,20.00,10.0,6.00,Male,1,Followup,60 +3076,A,32.00,3.00,4.00,Female,1,Followup,12 +3077,A,19.00,3.00,5.00,Female,1,Followup,15 +3080,B,22.00,1.00,2.00,Male,1,Followup,2 +3081,C,19.00,2.00,1.00,Female,1,Followup,2 +3082,C,26.00,8.00,2.00,Female,1,Followup,16 +3083,B,20.00,4.00,6.00,Female,1,Followup,24 +3085,A,22.00,4.00,7.00,Female,1,Followup,28 +3086,C,21.00,0.00,0.00,Female,0,Followup,0 +3087,C,24.00,4.00,4.00,Male,1,Followup,16 +3088,C,20.00,11.0,3.00,Female,1,Followup,33 +3089,B,34.00,8.00,1.00,Female,1,Followup,8 +3091,C,31.00,12.0,2.00,Female,1,Followup,24 +3092,B,21.00,1.00,2.00,Female,1,Followup,2 +3095,B,20.00,4.00,8.00,Female,1,Followup,32 +3096,B,24.00,4.00,4.00,Female,1,Followup,16 +3097,B,18.00,2.00,4.00,Female,0,Followup,8 +3099,C,23.00,4.00,2.00,Female,1,Followup,8 +3101,A,21.00,4.00,4.00,Female,1,Followup,16 +3102,A,55.00,0.00,0.00,Female,0,Followup,0 +3104,A,22.00,0.00,0.00,Male,1,Followup,0 +3105,A,21.00,3.00,8.00,Female,1,Followup,24 +3106,A,21.00,6.00,1.00,Female,0,Followup,6 +3107,C,22.00,0.00,0.00,Male,1,Followup,0 +3108,A,18.00,0.00,0.00,Female,0,Followup,0 +3110,B,19.00,1.00,2.00,Male,1,Followup,2 +3111,A,19.00,2.00,6.00,Female,1,Followup,12 +3114,C,21.00,3.00,6.00,Male,1,Followup,18 +3115,C,22.00,2.00,3.00,Female,1,Followup,6 +3116,A,31.00,1.00,1.00,Female,1,Followup,1 +3117,B,18.00,2.00,5.00,Female,1,Followup,10 +3119,A,20.00,7.00,7.00,Male,1,Followup,49 +3120,A,21.00,6.00,20.0,Male,1,Followup,120 +3122,B,22.00,6.00,17.0,Male,1,Followup,102 +3123,B,24.00,8.00,4.00,Female,1,Followup,32 +3124,C,21.00,4.00,3.00,Female,1,Followup,12 +3125,A,25.00,4.00,1.00,Male,1,Followup,4 +3126,C,23.00,6.00,3.00,Female,1,Followup,18 +3128,B,21.00,2.00,6.00,Female,1,Followup,12 +3129,C,20.00,2.00,3.00,Female,1,Followup,6 +3130,A,22.00,0.00,0.00,Female,0,Followup,0 +3131,A,20.00,4.00,2.00,Female,1,Followup,8 +3132,A,18.00,2.00,5.00,Female,1,Followup,10 +3133,A,21.00,1.00,5.00,Female,1,Followup,5 +3134,C,21.00,4.00,2.00,Female,1,Followup,8 +3136,B,22.00,4.00,6.00,Female,1,Followup,24 +3138,A,20.00,1.00,1.00,Female,0,Followup,1 +3139,C,21.00,6.00,1.00,Female,1,Followup,6 +3140,C,20.00,20.0,3.00,Female,1,Followup,60 +3141,C,24.00,5.00,2.00,Female,1,Followup,10 +3142,C,24.00,0.00,0.00,Female,1,Followup,0 +3143,C,20.00,3.00,2.00,Female,1,Followup,6 +3144,C,36.00,4.00,2.00,Male,1,Followup,8 +3145,C,18.00,0.00,0.00,Male,0,Followup,0 +3146,C,34.00,0.00,0.00,Female,0,Followup,0 +3147,A,20.00,8.00,12.0,Male,1,Followup,96 +3148,B,18.00,0.00,0.00,Female,1,Followup,0 +3150,A,22.00,0.00,0.00,Female,0,Followup,0 +3152,B,22.00,0.00,0.00,Female,0,Followup,0 +3153,B,21.00,0.00,0.00,Female,1,Followup,0 +3156,A,25.00,7.00,1.00,Female,1,Followup,7 +3159,A,20.00,2.00,1.00,Female,1,Followup,2 +3160,A,21.00,6.00,7.00,Male,1,Followup,42 +3162,A,19.00,0.00,0.00,Female,1,Followup,0 +3163,C,30.00,0.00,0.00,Female,0,Followup,0 +3166,B,20.00,10.0,5.00,Male,1,Followup,50 +3167,B,23.00,9.00,2.00,Female,1,Followup,18 +3169,A,26.00,2.00,5.00,Female,1,Followup,10 +3170,B,21.00,0.00,0.00,Female,0,Followup,0 +3171,B,21.00,0.00,0.00,Male,0,Followup,0 +3172,A,19.00,4.00,5.00,Female,1,Followup,20 +3174,A,39.00,1.00,2.00,Female,1,Followup,2 +3175,B,21.00,0.00,0.00,Female,0,Followup,0 +3177,A,20.00,2.00,6.00,Male,1,Followup,12 +3178,C,19.00,0.00,0.00,Female,0,Followup,0 +3179,A,21.00,2.00,6.00,Female,1,Followup,12 +3180,C,31.00,0.00,0.00,Male,1,Followup,0 +3183,B,21.00,3.00,3.00,Male,1,Followup,9 +3184,B,20.00,0.00,0.00,Female,1,Followup,0 +3185,B,20.00,2.00,3.00,Female,1,Followup,6 +3187,C,26.00,8.00,1.00,Male,1,Followup,8 +3189,A,38.00,5.00,1.00,Male,1,Followup,5 +3190,B,20.00,14.0,7.00,Female,1,Followup,98 +3191,B,24.00,0.00,0.00,Female,0,Followup,0 +3192,B,25.00,12.0,1.00,Female,1,Followup,12 +3193,A,21.00,5.00,4.00,Female,1,Followup,20 +3194,C,34.00,6.00,3.00,Male,1,Followup,18 +3195,B,19.00,0.00,0.00,Male,1,Followup,0 +3197,A,21.00,0.00,0.00,Female,1,Followup,0 +3198,C,20.00,8.00,3.00,Male,1,Followup,24 +3199,C,21.00,3.00,6.00,Male,1,Followup,18 +3200,A,19.00,0.00,0.00,Male,1,Followup,0 +3201,C,25.00,1.00,4.00,Female,0,Followup,4 +3202,B,55.00,2.00,1.00,Female,1,Followup,2 +3203,B,22.00,0.00,0.00,Female,0,Followup,0 +3204,A,21.00,4.00,5.00,Female,1,Followup,20 +3205,C,19.00,2.00,2.00,Female,1,Followup,4 +3207,A,19.00,6.00,3.00,Male,1,Followup,18 +3208,B,38.00,20.0,2.00,Male,1,Followup,40 +3209,C,29.00,5.00,3.00,Female,1,Followup,15 +3210,C,41.00,7.00,2.00,Female,1,Followup,14 +3211,C,20.00,0.00,0.00,Female,0,Followup,0 +3212,B,20.00,5.00,13.0,Female,1,Followup,65 +3213,B,21.00,5.00,4.00,Male,1,Followup,20 +3214,A,23.00,2.00,2.00,Male,1,Followup,4 +3215,B,21.00,4.00,7.00,Female,1,Followup,28 +3216,C,19.00,1.00,1.00,Female,1,Followup,1 +3219,B,22.00,7.00,4.00,Male,1,Followup,28 +3221,A,18.00,2.00,4.00,Male,1,Followup,8 +3222,A,23.00,6.00,2.00,Female,1,Followup,12 +3223,C,45.00,17.0,1.00,Female,1,Followup,17 +3224,C,21.00,2.00,8.00,Female,1,Followup,16 +3226,B,19.00,5.00,7.00,Female,1,Followup,35 +3227,B,35.00,4.00,2.00,Male,1,Followup,8 +3228,C,18.00,4.00,9.00,Female,1,Followup,36 +3230,C,21.00,4.00,2.00,Male,1,Followup,8 +3231,C,23.00,8.00,2.00,Male,1,Followup,16 +3232,A,21.00,1.00,4.00,Female,1,Followup,4 +3233,C,19.00,2.00,7.00,Male,1,Followup,14 +3235,C,55.00,16.0,1.00,Male,1,Followup,16 +3236,B,27.00,10.0,2.00,Male,1,Followup,20 +3237,C,25.00,4.00,1.00,Male,1,Followup,4 +3238,A,18.00,3.00,5.00,Female,1,Followup,15 +3241,C,20.00,0.00,0.00,Male,0,Followup,0 +3242,A,21.00,6.00,4.00,Female,1,Followup,24 +3243,C,22.00,3.00,1.00,Female,1,Followup,3 +3244,A,23.00,14.0,3.00,Male,1,Followup,42 +3245,B,21.00,1.00,5.00,Male,1,Followup,5 +3247,A,21.00,4.00,11.0,Male,1,Followup,44 +3248,A,25.00,0.00,0.00,Female,1,Followup,0 +3249,A,20.00,1.00,10.0,Male,1,Followup,10 +3250,C,19.00,0.00,0.00,Female,0,Followup,0 +3251,A,18.00,2.00,13.0,Male,1,Followup,26 +3252,B,21.00,1.00,1.00,Female,1,Followup,1 +3255,A,22.00,4.00,5.00,Male,1,Followup,20 +3256,C,18.00,2.00,4.00,Female,1,Followup,8 +3257,C,19.00,0.00,0.00,Female,1,Followup,0 +3258,A,21.00,5.00,6.00,Male,1,Followup,30 +3259,A,18.00,0.00,0.00,Female,1,Followup,0 +3260,C,43.00,8.00,2.00,Female,1,Followup,16 +3261,C,20.00,4.00,6.00,Female,1,Followup,24 +3262,B,23.00,3.00,2.00,Female,1,Followup,6 +3263,B,21.00,0.00,0.00,Female,0,Followup,0 +3264,B,19.00,1.00,6.00,Female,1,Followup,6 +3265,C,45.00,21.0,1.00,Female,1,Followup,21 +3266,C,34.00,3.00,2.00,Female,0,Followup,6 +3267,A,22.00,2.00,8.00,Female,1,Followup,16 +3268,B,18.00,4.00,16.0,Female,1,Followup,64 +3269,B,19.00,6.00,9.00,Female,1,Followup,54 +3270,A,21.00,2.00,10.0,Female,1,Followup,20 +3271,B,23.00,0.00,0.00,Female,1,Followup,0 +3272,B,19.00,3.00,4.00,Female,1,Followup,12 +3273,A,18.00,3.00,10.0,Female,1,Followup,30 +3274,C,20.00,12.0,10.0,Female,1,Followup,120 +3275,B,20.00,3.00,6.00,Female,1,Followup,18 +3277,B,18.00,1.00,4.00,Male,1,Followup,4 +3278,A,21.00,4.00,2.00,Female,1,Followup,8 +3279,C,20.00,4.00,15.0,Male,1,Followup,60 +3280,C,41.00,14.0,2.00,Male,1,Followup,28 +3281,B,43.00,12.0,8.00,Female,1,Followup,96 +3282,C,24.00,17.0,1.00,Female,1,Followup,17 +3285,B,22.00,0.00,0.00,Female,1,Followup,0 +3286,C,25.00,8.00,2.00,Female,1,Followup,16 +3287,A,19.00,0.00,0.00,Female,0,Followup,0 +3288,A,23.00,4.00,7.00,Female,1,Followup,28 +3289,A,20.00,1.00,2.00,Female,1,Followup,2 +3290,C,22.00,0.00,0.00,Female,1,Followup,0 +3291,A,19.00,0.00,0.00,Female,0,Followup,0 +3292,A,22.00,4.00,1.00,Male,1,Followup,4 +3293,A,21.00,0.00,0.00,Female,0,Followup,0 +3295,B,18.00,1.00,15.0,Female,1,Followup,15 +3297,A,22.00,4.00,20.0,Male,1,Followup,80 +3298,A,19.00,2.00,4.00,Female,1,Followup,8 +3299,A,26.00,5.00,1.00,Female,1,Followup,5 +3300,A,36.00,22.0,1.00,Male,1,Followup,22 +3302,C,25.00,4.00,2.00,Female,1,Followup,8 +3305,A,19.00,2.00,7.00,Female,1,Followup,14 +3306,B,20.00,1.00,3.00,Female,1,Followup,3 +3307,B,22.00,4.00,4.00,Female,1,Followup,16 +3308,B,19.00,2.00,2.00,Female,1,Followup,4 +3310,B,18.00,2.00,4.00,Male,1,Followup,8 +3312,A,27.00,4.00,6.00,Male,1,Followup,24 +3313,A,19.00,0.00,0.00,Female,0,Followup,0 +3314,C,28.00,2.00,2.00,Female,1,Followup,4 +3315,B,23.00,0.00,0.00,Male,0,Followup,0 +3316,A,22.00,5.00,10.0,Female,1,Followup,50 +3318,A,29.00,2.00,10.0,Female,1,Followup,20 +3320,A,22.00,8.00,1.00,Female,1,Followup,8 +3321,B,28.00,5.00,1.00,Female,1,Followup,5 +3322,B,21.00,4.00,18.0,Male,1,Followup,72 +3323,B,23.00,8.00,2.00,Male,1,Followup,16 +3324,A,18.00,1.00,5.00,Female,1,Followup,5 +3325,B,20.00,5.00,2.00,Male,1,Followup,10 +3327,B,18.00,1.00,8.00,Female,1,Followup,8 +3328,A,24.00,2.00,10.0,Female,1,Followup,20 +3329,B,27.00,16.0,2.00,Female,1,Followup,32 +3330,B,20.00,0.00,0.00,Female,1,Followup,0 +3331,B,53.00,7.00,4.00,Male,1,Followup,28 +3332,A,19.00,1.00,7.00,Male,1,Followup,7 +3334,A,18.00,2.00,5.00,Female,1,Followup,10 +3335,C,18.00,0.00,0.00,Female,1,Followup,0 +3336,C,18.00,0.00,0.00,Female,0,Followup,0 +3337,B,21.00,7.00,12.0,Male,1,Followup,84 +3338,B,21.00,0.00,0.00,Female,1,Followup,0 +3339,A,26.00,0.00,0.00,Female,0,Followup,0 +3340,B,24.00,1.00,1.00,Female,1,Followup,1 +3341,B,29.00,0.00,0.00,Female,1,Followup,0 +3344,A,19.00,4.00,7.00,Male,1,Followup,28 +3346,A,20.00,3.00,6.00,Female,1,Followup,18 +3348,A,19.00,2.00,5.00,Female,1,Followup,10 +3349,A,24.00,1.00,1.00,Female,0,Followup,1 +3351,B,21.00,4.00,6.00,Female,1,Followup,24 +3352,B,20.00,0.00,0.00,Female,0,Followup,0 +3353,A,21.00,8.00,3.00,Female,1,Followup,24 +3354,C,20.00,2.00,8.00,Female,1,Followup,16 +3355,B,27.00,0.00,0.00,Male,1,Followup,0 +3356,B,51.00,0.00,0.00,Female,0,Followup,0 +3358,B,33.00,4.00,4.00,Female,1,Followup,16 +3359,B,29.00,6.00,2.00,Female,1,Followup,12 +3361,A,22.00,0.00,0.00,Female,0,Followup,0 +3362,A,20.00,2.00,6.00,Female,1,Followup,12 +3364,A,19.00,0.00,0.00,Male,0,Followup,0 +3365,C,39.00,0.00,0.00,Female,0,Followup,0 +3368,A,20.00,0.00,0.00,Female,1,Followup,0 +3369,A,21.00,0.00,0.00,Female,0,Followup,0 +3370,A,22.00,1.00,1.00,Female,1,Followup,1 +3372,B,24.00,0.00,0.00,Female,1,Followup,0 +3374,A,26.00,0.00,0.00,Male,0,Followup,0 +3376,C,23.00,0.00,0.00,Female,0,Followup,0 +3378,B,21.00,16.0,5.00,Female,1,Followup,80 +3380,A,21.00,3.00,3.00,Female,1,Followup,9 +3381,B,19.00,2.00,8.00,Female,1,Followup,16 +3382,A,18.00,0.00,0.00,Female,1,Followup,0 +3383,C,21.00,10.0,4.00,Female,1,Followup,40 +3384,B,22.00,0.00,0.00,Male,0,Followup,0 +3385,A,22.00,0.00,0.00,Female,0,Followup,0 +3386,B,22.00,0.00,0.00,Male,1,Followup,0 +3387,C,22.00,2.00,1.00,Female,1,Followup,2 +3388,A,25.00,1.00,1.00,Male,1,Followup,1 +3389,A,24.00,10.0,5.00,Female,1,Followup,50 +3390,B,19.00,2.00,1.00,Male,1,Followup,2 +3392,C,19.00,1.00,1.00,Female,0,Followup,1 +3393,C,23.00,3.00,1.00,Female,0,Followup,3 +3395,A,20.00,0.00,0.00,Female,0,Followup,0 +3396,A,20.00,5.00,12.0,Male,1,Followup,60 +3397,B,27.00,4.00,6.00,Male,1,Followup,24 +3398,B,26.00,0.00,0.00,Male,0,Followup,0 +3399,C,21.00,0.00,0.00,Female,0,Followup,0 +3400,A,21.00,2.00,8.00,Male,1,Followup,16 +3401,B,30.00,9.00,2.00,Female,1,Followup,18 +3403,A,21.00,7.00,3.00,Male,1,Followup,21 +3404,B,20.00,0.00,0.00,Female,0,Followup,0 +3405,A,19.00,2.00,1.00,Male,1,Followup,2 +3406,B,21.00,0.00,0.00,Female,0,Followup,0 +3407,C,23.00,3.00,14.0,Male,1,Followup,42 +3409,C,23.00,4.00,7.00,Female,1,Followup,28 +3411,C,74.00,5.00,2.00,Male,1,Followup,10 +3412,B,20.00,0.00,0.00,Female,1,Followup,0 +3413,B,32.00,2.00,21.0,Female,1,Followup,42 +3414,A,42.00,0.00,0.00,Male,0,Followup,0 +3415,C,28.00,10.0,2.00,Male,1,Followup,20 +3417,A,19.00,2.00,6.00,Male,1,Followup,12 +3419,B,21.00,2.00,5.00,Male,1,Followup,10 +3420,B,35.00,7.00,1.00,Female,1,Followup,7 +3421,B,21.00,3.00,6.00,Female,1,Followup,18 +3424,B,31.00,3.00,2.00,Female,1,Followup,6 +3425,C,25.00,8.00,1.00,Female,1,Followup,8 +3426,A,18.00,5.00,4.00,Male,1,Followup,20 +3428,B,20.00,3.00,8.00,Male,1,Followup,24 +3429,A,18.00,0.00,0.00,Female,1,Followup,0 +3430,A,19.00,6.00,14.0,Male,1,Followup,84 +3431,C,52.00,4.00,3.00,Female,1,Followup,12 +3432,B,33.00,4.00,2.00,Male,1,Followup,8 +3433,A,22.00,3.00,4.00,Female,1,Followup,12 +3434,C,20.00,4.00,11.0,Female,1,Followup,44 +3435,C,21.00,0.00,0.00,Female,0,Followup,0 +3436,A,21.00,1.00,1.00,Male,0,Followup,1 +3438,B,21.00,1.00,7.00,Female,1,Followup,7 +3440,A,19.00,0.00,0.00,Female,0,Followup,0 +3441,C,21.00,7.00,2.00,Female,1,Followup,14 +3443,B,20.00,0.00,0.00,Female,0,Followup,0 +3445,B,21.00,0.00,0.00,Female,0,Followup,0 +3446,C,20.00,4.00,10.0,Female,1,Followup,40 +3447,A,18.00,2.00,5.00,Female,1,Followup,10 +3449,B,21.00,0.00,0.00,Male,0,Followup,0 +3450,B,34.00,4.00,1.00,Male,1,Followup,4 +3451,C,27.00,1.00,2.00,Female,0,Followup,2 +3454,A,19.00,7.00,12.0,Male,1,Followup,84 +3455,A,21.00,0.00,0.00,Female,1,Followup,0 +3457,A,21.00,1.00,3.00,Female,1,Followup,3 +3458,A,21.00,9.00,8.00,Male,1,Followup,72 +3459,A,21.00,1.00,1.00,Female,0,Followup,1 +3460,B,21.00,2.00,1.00,Male,1,Followup,2 +3461,B,19.00,4.00,15.0,Female,1,Followup,60 +3463,B,63.00,20.0,1.00,Female,1,Followup,20 +3464,C,19.00,3.00,5.00,Female,1,Followup,15 +3466,B,20.00,6.00,10.0,Female,1,Followup,60 +3467,A,21.00,4.00,2.00,Male,1,Followup,8 +3469,C,21.00,10.0,8.00,Female,1,Followup,80 +3471,B,18.00,0.00,0.00,Female,1,Followup,0 +3472,A,25.00,7.00,1.00,Female,1,Followup,7 +3473,A,47.00,0.00,0.00,Female,0,Followup,0 +3475,C,19.00,8.00,6.00,Female,1,Followup,48 +3476,B,51.00,4.00,2.00,Female,1,Followup,8 +3477,B,24.00,0.00,0.00,Female,0,Followup,0 +3478,B,46.00,21.0,2.00,Male,1,Followup,42 +3480,B,22.00,10.0,2.00,Female,1,Followup,20 +3481,B,39.00,5.00,2.00,Male,1,Followup,10 +3482,C,24.00,3.00,2.00,Female,1,Followup,6 +3483,C,24.00,5.00,2.00,Female,1,Followup,10 +3484,B,19.00,4.00,1.00,Male,1,Followup,4 +3487,C,19.00,3.00,4.00,Female,1,Followup,12 +3488,A,31.00,5.00,1.00,Female,1,Followup,5 +3489,A,22.00,3.00,1.00,Female,1,Followup,3 +3490,C,21.00,1.00,1.00,Female,1,Followup,1 +3492,A,19.00,2.00,2.00,Female,1,Followup,4 +3494,A,41.00,9.00,3.00,Male,1,Followup,27 +3495,A,22.00,7.00,5.00,Female,1,Followup,35 +3498,A,20.00,2.00,2.00,Male,1,Followup,4 +3499,B,19.00,6.00,7.00,Female,1,Followup,42 +3500,B,23.00,0.00,0.00,Female,0,Followup,0 +3503,C,44.00,5.00,2.00,Female,1,Followup,10 +3506,B,22.00,1.00,3.00,Female,1,Followup,3 +3507,C,19.00,1.00,2.00,Female,1,Followup,2 +3508,B,19.00,7.00,1.00,Male,1,Followup,7 +3509,A,20.00,14.0,2.00,Female,1,Followup,28 +3510,C,23.00,2.00,10.0,Female,1,Followup,20 +3511,A,18.00,1.00,2.00,Male,1,Followup,2 +3512,A,20.00,4.00,5.00,Female,1,Followup,20 +3513,B,18.00,0.00,0.00,Female,0,Followup,0 +3514,C,21.00,4.00,1.00,Male,1,Followup,4 +3516,C,19.00,2.00,14.0,Male,1,Followup,28 +3518,C,23.00,2.00,3.00,Female,0,Followup,6 +3519,A,18.00,0.00,0.00,Female,0,Followup,0 +3520,C,22.00,7.00,3.00,Female,1,Followup,21 +3521,B,20.00,0.00,0.00,Female,0,Followup,0 +3522,B,22.00,0.00,0.00,Female,0,Followup,0 +3526,A,25.00,1.00,1.00,Female,0,Followup,1 +3528,B,20.00,6.00,13.0,Female,1,Followup,78 +3529,C,20.00,0.00,0.00,Male,1,Followup,0 +3530,C,32.00,0.00,0.00,Male,0,Followup,0 +3531,C,19.00,0.00,0.00,Female,0,Followup,0 +3532,C,22.00,2.00,2.00,Female,1,Followup,4 +3534,C,21.00,0.00,0.00,Female,1,Followup,0 +3535,A,20.00,2.00,3.00,Female,1,Followup,6 +3536,C,21.00,2.00,7.00,Male,1,Followup,14 +3539,C,26.00,8.00,2.00,Male,1,Followup,16 +3540,C,21.00,4.00,4.00,Male,1,Followup,16 +3541,C,19.00,3.00,1.00,Male,1,Followup,3 +3542,C,18.00,7.00,1.00,Female,1,Followup,7 +3543,C,18.00,2.00,6.00,Female,1,Followup,12 +3545,C,25.00,7.00,1.00,Male,1,Followup,7 +3546,C,39.00,0.00,0.00,Female,0,Followup,0 +3547,C,21.00,0.00,0.00,Female,1,Followup,0 +3549,B,37.00,12.0,3.00,Female,1,Followup,36 +3550,C,20.00,3.00,12.0,Male,1,Followup,36 +3554,B,44.00,0.00,0.00,Male,0,Followup,0 +3557,A,21.00,6.00,3.00,Female,1,Followup,18 +3558,B,19.00,0.00,0.00,Female,0,Followup,0 +3559,C,24.00,0.00,0.00,Female,0,Followup,0 +3560,B,24.00,9.00,1.00,Male,1,Followup,9 +3561,C,18.00,8.00,5.00,Female,1,Followup,40 +3562,B,39.00,2.00,5.00,Female,1,Followup,10 +3563,C,31.00,3.00,2.00,Female,1,Followup,6 +3564,B,19.00,1.00,1.00,Female,1,Followup,1 +3565,A,23.00,8.00,5.00,Female,1,Followup,40 +3566,A,23.00,2.00,6.00,Female,1,Followup,12 +3568,B,22.00,0.00,0.00,Female,0,Followup,0 +3569,B,20.00,3.00,8.00,Male,1,Followup,24 +3570,B,21.00,0.00,0.00,Male,0,Followup,0 +3571,C,18.00,0.00,0.00,Male,1,Followup,0 +3572,C,38.00,6.00,1.00,Male,1,Followup,6 +3573,C,21.00,1.00,3.00,Female,1,Followup,3 +3574,A,24.00,3.00,2.00,Female,1,Followup,6 +3575,A,25.00,12.0,2.00,Female,1,Followup,24 +3577,C,21.00,2.00,3.00,Female,1,Followup,6 +3578,B,18.00,4.00,8.00,Female,1,Followup,32 +3579,A,23.00,8.00,1.00,Male,1,Followup,8 +3580,B,20.00,4.00,6.00,Male,1,Followup,24 +3581,C,41.00,2.00,2.00,Female,1,Followup,4 +3584,B,21.00,4.00,6.00,Female,1,Followup,24 +3585,A,45.00,10.0,1.00,Female,1,Followup,10 +3587,A,29.00,7.00,1.00,Female,1,Followup,7 +3589,A,19.00,2.00,2.00,Female,1,Followup,4 +3590,C,19.00,3.00,6.00,Female,1,Followup,18 +3592,B,26.00,2.00,1.00,Female,1,Followup,2 +3593,A,20.00,5.00,11.0,Female,1,Followup,55 +3594,A,21.00,6.00,8.00,Female,1,Followup,48 +3595,C,19.00,2.00,6.00,Female,1,Followup,12 +3596,C,45.00,20.0,1.00,Female,1,Followup,20 +3597,B,18.00,0.00,0.00,Female,0,Followup,0 +3598,B,21.00,0.00,0.00,Female,1,Followup,0 +3600,B,20.00,2.00,6.00,Female,1,Followup,12 +3601,B,24.00,0.00,0.00,Female,0,Followup,0 +3602,A,28.00,14.0,3.00,Female,1,Followup,42 +3603,B,20.00,6.00,5.00,Female,1,Followup,30 +3606,B,18.00,0.00,0.00,Female,1,Followup,0 +3607,C,20.00,0.00,0.00,Female,1,Followup,0 +3608,B,36.00,10.0,3.00,Female,1,Followup,30 +3609,B,19.00,6.00,5.00,Male,1,Followup,30 +3611,C,22.00,0.00,0.00,Female,0,Followup,0 +3612,A,21.00,2.00,5.00,Female,1,Followup,10 +3613,A,18.00,4.00,3.00,Male,1,Followup,12 +3614,B,60.00,2.00,1.00,Male,1,Followup,2 +3615,A,22.00,0.00,0.00,Female,1,Followup,0 +3616,A,18.00,3.00,3.00,Female,0,Followup,9 +3617,C,18.00,0.00,0.00,Female,1,Followup,0 +3619,B,20.00,0.00,0.00,Female,0,Followup,0 +3621,B,20.00,3.00,5.00,Female,1,Followup,15 +3622,C,22.00,0.00,0.00,Female,0,Followup,0 +3623,C,20.00,0.00,0.00,Male,0,Followup,0 +3624,A,19.00,0.00,0.00,Male,0,Followup,0 +3625,B,27.00,5.00,5.00,Male,1,Followup,25 +3626,A,19.00,1.00,3.00,Female,1,Followup,3 +3627,C,20.00,9.00,2.00,Female,1,Followup,18 +3630,A,43.00,7.00,2.00,Male,1,Followup,14 +3631,B,20.00,6.00,4.00,Female,1,Followup,24 +3632,B,22.00,1.00,2.00,Female,0,Followup,2 +3633,B,18.00,4.00,2.00,Female,1,Followup,8 +3634,B,33.00,8.00,2.00,Female,1,Followup,16 +3635,A,39.00,16.0,1.00,Male,1,Followup,16 +3637,C,21.00,3.00,2.00,Female,1,Followup,6 +3638,C,18.00,0.00,0.00,Male,1,Followup,0 +3640,A,18.00,0.00,0.00,Female,1,Followup,0 +3641,C,19.00,0.00,0.00,Male,0,Followup,0 +3642,C,23.00,2.00,2.00,Female,1,Followup,4 +3643,A,19.00,0.00,0.00,Female,0,Followup,0 +3644,C,21.00,2.00,2.00,Male,1,Followup,4 +3646,B,19.00,0.00,0.00,Female,0,Followup,0 +3647,A,51.00,0.00,0.00,Female,0,Followup,0 +3648,B,20.00,1.00,1.00,Male,1,Followup,1 +3650,B,18.00,4.00,4.00,Female,1,Followup,16 +3654,A,32.00,0.00,0.00,Female,0,Followup,0 +3655,B,24.00,16.0,3.00,Female,1,Followup,48 +3656,C,25.00,12.0,1.00,Female,1,Followup,12 +3658,B,65.00,1.00,2.00,Male,0,Followup,2 +3660,B,19.00,0.00,0.00,Female,0,Followup,0 +3661,B,18.00,0.00,0.00,Female,0,Followup,0 +3662,B,24.00,1.00,1.00,Male,1,Followup,1 +3664,B,18.00,0.00,0.00,Female,1,Followup,0 +3665,C,21.00,4.00,8.00,Female,1,Followup,32 +3666,A,20.00,1.00,12.0,Male,1,Followup,12 +3667,A,20.00,0.00,0.00,Female,1,Followup,0 +3668,A,18.00,4.00,2.00,Female,1,Followup,8 +3669,B,34.00,18.0,2.00,Female,1,Followup,36 +3670,B,26.00,1.00,1.00,Female,1,Followup,1 +3671,A,20.00,0.00,0.00,Male,1,Followup,0 +3672,C,22.00,2.00,1.00,Female,1,Followup,2 +3673,A,23.00,0.00,0.00,Female,0,Followup,0 +3674,C,19.00,0.00,0.00,Female,0,Followup,0 +3675,B,69.00,0.00,0.00,Male,0,Followup,0 +3676,A,21.00,3.00,2.00,Male,1,Followup,6 +3678,B,18.00,0.00,0.00,Male,1,Followup,0 +3680,C,34.00,26.0,1.00,Female,1,Followup,26 +3681,B,20.00,26.0,5.00,Male,1,Followup,130 +3683,C,18.00,3.00,4.00,Female,1,Followup,12 +3684,A,19.00,0.00,0.00,Female,1,Followup,0 +3685,B,18.00,3.00,5.00,Female,1,Followup,15 +3686,A,22.00,3.00,12.0,Male,1,Followup,36 +3688,A,22.00,0.00,0.00,Female,0,Followup,0 +3690,A,25.00,3.00,2.00,Female,1,Followup,6 +3691,C,20.00,6.00,4.00,Female,1,Followup,24 +3692,A,22.00,0.00,0.00,Female,1,Followup,0 +3693,A,22.00,0.00,0.00,Female,1,Followup,0 +3694,B,19.00,1.00,4.00,Female,1,Followup,4 +3696,C,45.00,0.00,0.00,Female,0,Followup,0 +3697,A,21.00,4.00,2.00,Male,0,Followup,8 +3698,C,20.00,20.0,2.00,Female,1,Followup,40 +3699,B,20.00,0.00,0.00,Female,1,Followup,0 +3700,A,21.00,3.00,3.00,Female,1,Followup,9 +3701,B,42.00,1.00,2.00,Female,1,Followup,2 +3709,B,19.00,0.00,0.00,Female,1,Followup,0 +3713,C,21.00,1.00,2.00,Female,1,Followup,2 +3714,C,25.00,0.00,0.00,Female,0,Followup,0 +3715,A,21.00,0.00,0.00,Female,0,Followup,0 +3716,C,22.00,6.00,3.00,Female,1,Followup,18 +3717,C,18.00,0.00,0.00,Male,0,Followup,0 +3718,B,28.00,0.00,0.00,Male,1,Followup,0 +3719,A,21.00,3.00,6.00,Female,1,Followup,18 +3720,B,23.00,0.00,0.00,Male,1,Followup,0 +3723,C,42.00,8.00,2.00,Female,1,Followup,16 +3724,A,20.00,2.00,1.00,Male,1,Followup,2 +3725,A,21.00,0.00,0.00,Female,0,Followup,0 +3726,C,18.00,2.00,1.00,Female,1,Followup,2 +3727,C,22.00,4.00,5.00,Male,1,Followup,20 +3728,B,22.00,1.00,1.00,Female,1,Followup,1 +3730,B,20.00,4.00,3.00,Male,1,Followup,12 +3731,B,27.00,6.00,1.00,Female,1,Followup,6 +3732,A,47.00,0.00,0.00,Female,0,Followup,0 +3734,C,31.00,5.00,1.00,Female,1,Followup,5 +3735,B,20.00,0.00,0.00,Male,1,Followup,0 +3737,A,20.00,0.00,0.00,Female,1,Followup,0 +3738,A,49.00,18.0,2.00,Female,1,Followup,36 +3739,C,44.00,3.00,1.00,Male,1,Followup,3 +3741,C,20.00,1.00,1.00,Female,0,Followup,1 +3742,C,33.00,8.00,5.00,Male,1,Followup,40 +3743,C,22.00,0.00,0.00,Female,0,Followup,0 +3744,B,28.00,4.00,2.00,Female,1,Followup,8 +3748,A,23.00,4.00,4.00,Male,1,Followup,16 +3749,C,46.00,7.00,1.00,Female,1,Followup,7 +3750,B,19.00,12.0,4.00,Female,1,Followup,48 +3751,B,20.00,2.00,6.00,Female,1,Followup,12 +3752,A,18.00,0.00,0.00,Female,0,Followup,0 +3753,C,21.00,16.0,1.00,Female,1,Followup,16 +3755,C,55.00,14.0,1.00,Female,1,Followup,14 +3756,B,50.00,3.00,2.00,Female,1,Followup,6 +3757,A,21.00,1.00,2.00,Male,1,Followup,2 +3758,A,20.00,0.00,0.00,Female,0,Followup,0 +3759,A,23.00,0.00,0.00,Male,1,Followup,0 +3760,B,19.00,7.00,3.00,Male,1,Followup,21 +3762,B,22.00,5.00,6.00,Female,1,Followup,30 +3763,C,19.00,1.00,1.00,Female,1,Followup,1 +3764,B,19.00,0.00,0.00,Male,0,Followup,0 +3765,A,19.00,2.00,1.00,Female,0,Followup,2 +3766,A,37.00,7.00,2.00,Female,1,Followup,14 +3768,B,27.00,2.00,2.00,Female,1,Followup,4 +3769,C,47.00,12.0,2.00,Female,1,Followup,24 +3770,A,32.00,0.00,0.00,Female,0,Followup,0 +3771,B,25.00,1.00,2.00,Male,1,Followup,2 +3772,C,22.00,1.00,5.00,Female,1,Followup,5 +3773,C,43.00,7.00,2.00,Male,1,Followup,14 +3775,C,34.00,5.00,8.00,Male,1,Followup,40 +3776,A,19.00,5.00,2.00,Female,1,Followup,10 +3778,C,21.00,8.00,1.00,Female,1,Followup,8 +3779,A,22.00,0.00,0.00,Female,0,Followup,0 +3780,B,20.00,2.00,14.0,Male,1,Followup,28 +3781,C,59.00,0.00,0.00,Female,0,Followup,0 +3782,C,23.00,3.00,6.00,Female,1,Followup,18 +3783,C,26.00,1.00,1.00,Female,1,Followup,1 +3784,A,46.00,4.00,3.00,Male,1,Followup,12 +3785,A,19.00,0.00,0.00,Female,0,Followup,0 +3787,C,20.00,1.00,6.00,Male,1,Followup,6 +3788,C,22.00,3.00,2.00,Male,1,Followup,6 +3789,B,24.00,1.00,10.0,Female,1,Followup,10 +3790,C,19.00,3.00,4.00,Female,1,Followup,12 +3791,A,49.00,0.00,0.00,Female,0,Followup,0 +3792,A,29.00,1.00,1.00,Male,1,Followup,1 +3795,A,22.00,0.00,0.00,Male,1,Followup,0 +3796,C,19.00,6.00,2.00,Female,1,Followup,12 +3798,B,28.00,4.00,1.00,Female,1,Followup,4 +3801,C,32.00,8.00,2.00,Female,1,Followup,16 +3802,A,18.00,0.00,0.00,Female,1,Followup,0 +3803,C,21.00,0.00,0.00,Female,1,Followup,0 +3804,B,39.00,2.00,1.00,Female,1,Followup,2 +3805,A,20.00,5.00,4.00,Male,1,Followup,20 +3807,B,19.00,0.00,0.00,Female,0,Followup,0 +3808,A,20.00,2.00,2.00,Female,0,Followup,4 +3809,B,25.00,0.00,0.00,Female,1,Followup,0 +3810,C,39.00,4.00,3.00,Female,1,Followup,12 +3811,A,19.00,2.00,7.00,Female,0,Followup,14 +3812,A,23.00,0.00,0.00,Female,0,Followup,0 +3813,A,35.00,2.00,4.00,Female,1,Followup,8 +3814,B,19.00,5.00,4.00,Female,1,Followup,20 +3815,C,18.00,4.00,2.00,Female,1,Followup,8 +3816,C,33.00,0.00,0.00,Female,0,Followup,0 +3818,C,26.00,6.00,1.00,Female,1,Followup,6 +3819,B,25.00,0.00,0.00,Female,0,Followup,0 +3820,C,19.00,2.00,4.00,Female,1,Followup,8 +3821,C,24.00,5.00,1.00,Female,1,Followup,5 +3823,A,26.00,1.00,1.00,Male,1,Followup,1 +3824,B,20.00,0.00,0.00,Male,1,Followup,0 +3825,C,21.00,0.00,0.00,Female,1,Followup,0 +3826,A,19.00,4.00,6.00,Female,1,Followup,24 +3827,B,18.00,1.00,1.00,Female,0,Followup,1 +3828,C,21.00,0.00,0.00,Female,0,Followup,0 +3829,A,46.00,14.0,1.00,Male,1,Followup,14 +3831,A,18.00,2.00,2.00,Female,1,Followup,4 +3832,B,44.00,10.0,2.00,Female,1,Followup,20 +3833,B,19.00,4.00,7.00,Male,1,Followup,28 +3835,A,19.00,4.00,6.00,Female,1,Followup,24 +3836,C,21.00,0.00,0.00,Male,1,Followup,0 +3838,C,39.00,7.00,4.00,Female,1,Followup,28 +3840,C,18.00,4.00,10.0,Male,1,Followup,40 +3841,A,19.00,3.00,6.00,Female,1,Followup,18 +3842,B,18.00,4.00,4.00,Female,1,Followup,16 +3843,B,19.00,0.00,0.00,Female,0,Followup,0 +3844,B,23.00,2.00,1.00,Female,0,Followup,2 +3845,A,37.00,1.00,1.00,Female,0,Followup,1 +3846,B,20.00,0.00,0.00,Female,0,Followup,0 +3847,B,18.00,0.00,0.00,Male,1,Followup,0 +3848,C,22.00,0.00,0.00,Female,0,Followup,0 +3849,B,19.00,1.00,3.00,Female,1,Followup,3 +3850,B,30.00,2.00,2.00,Female,1,Followup,4 +3854,C,20.00,0.00,0.00,Female,0,Followup,0 +3855,C,20.00,1.00,5.00,Male,1,Followup,5 +3856,C,21.00,6.00,7.00,Female,1,Followup,42 +3858,C,23.00,4.00,1.00,Male,0,Followup,4 +3859,C,28.00,6.00,3.00,Female,1,Followup,18 +3860,A,21.00,2.00,9.00,Female,1,Followup,18 +3861,C,22.00,1.00,2.00,Female,1,Followup,2 +3865,C,21.00,10.0,3.00,Male,1,Followup,30 +3869,A,22.00,1.00,1.00,Female,0,Followup,1 +3870,B,51.00,7.00,2.00,Female,1,Followup,14 +3871,C,33.00,0.00,0.00,Female,0,Followup,0 +3872,C,24.00,1.00,2.00,Male,1,Followup,2 +3873,A,21.00,18.0,3.00,Female,1,Followup,54 +3875,C,52.00,17.0,1.00,Female,1,Followup,17 +3876,C,21.00,5.00,12.0,Female,1,Followup,60 +3877,C,19.00,0.00,0.00,Male,0,Followup,0 +3880,A,18.00,0.00,0.00,Female,0,Followup,0 +3882,C,34.00,0.00,0.00,Female,0,Followup,0 +3884,C,25.00,0.00,0.00,Male,1,Followup,0 +3885,A,37.00,16.0,2.00,Male,1,Followup,32 +3887,C,46.00,8.00,2.00,Female,1,Followup,16 +3888,C,47.00,0.00,0.00,Female,0,Followup,0 +3891,C,19.00,1.00,2.00,Female,1,Followup,2 +3893,B,18.00,1.00,1.00,Female,1,Followup,1 +3894,B,21.00,4.00,5.00,Female,1,Followup,20 +3895,A,20.00,2.00,6.00,Female,1,Followup,12 +3900,B,18.00,0.00,0.00,Female,1,Followup,0 +3901,A,20.00,0.00,0.00,Female,0,Followup,0 +3902,B,22.00,0.00,0.00,Female,0,Followup,0 +3903,A,21.00,3.00,8.00,Female,1,Followup,24 +3904,B,23.00,5.00,3.00,Female,1,Followup,15 +3905,A,21.00,2.00,1.00,Male,1,Followup,2 +3906,A,19.00,0.00,0.00,Female,1,Followup,0 +3907,B,23.00,4.00,5.00,Female,1,Followup,20 +3908,C,27.00,0.00,0.00,Female,0,Followup,0 +3911,A,19.00,2.00,4.00,Female,1,Followup,8 +3912,C,20.00,8.00,2.00,Female,1,Followup,16 +3913,B,25.00,8.00,2.00,Male,1,Followup,16 +3914,B,23.00,3.00,21.0,Male,1,Followup,63 +3916,C,38.00,8.00,2.00,Female,1,Followup,16 +3917,B,20.00,0.00,0.00,Female,1,Followup,0 +3918,C,20.00,10.0,3.00,Female,1,Followup,30 +3919,B,18.00,3.00,4.00,Male,1,Followup,12 +3920,B,18.00,4.00,2.00,Female,1,Followup,8 +3921,C,19.00,2.00,1.00,Female,1,Followup,2 +3923,A,21.00,5.00,4.00,Female,1,Followup,20 +3924,C,37.00,6.00,1.00,Female,1,Followup,6 +3925,A,19.00,5.00,1.00,Female,1,Followup,5 +3926,A,22.00,2.00,6.00,Female,1,Followup,12 +3928,C,21.00,0.00,0.00,Female,0,Followup,0 +3929,C,28.00,2.00,1.00,Female,1,Followup,2 +3930,A,19.00,2.00,1.00,Female,0,Followup,2 +3931,A,38.00,3.00,1.00,Female,1,Followup,3 +3932,C,27.00,3.00,1.00,Male,1,Followup,3 +3934,C,22.00,4.00,4.00,Female,1,Followup,16 +3936,B,25.00,4.00,1.00,Female,1,Followup,4 +3940,B,23.00,0.00,0.00,Female,0,Followup,0 +3942,A,19.00,0.00,0.00,Male,0,Followup,0 +3945,C,20.00,8.00,12.0,Male,1,Followup,96 +3946,B,20.00,0.00,0.00,Male,0,Followup,0 +3948,B,22.00,0.00,0.00,Female,0,Followup,0 +3949,B,34.00,8.00,2.00,Female,1,Followup,16 +3950,A,21.00,2.00,2.00,Female,1,Followup,4 +3951,B,30.00,8.00,2.00,Female,1,Followup,16 +3953,C,19.00,0.00,0.00,Male,0,Followup,0 +3954,B,31.00,14.0,2.00,Female,1,Followup,28 +3955,A,21.00,2.00,7.00,Female,1,Followup,14 +3957,B,35.00,5.00,8.00,Male,1,Followup,40 +3958,A,19.00,2.00,2.00,Male,1,Followup,4 +3959,C,19.00,2.00,6.00,Female,1,Followup,12 +3960,A,22.00,1.00,2.00,Female,1,Followup,2 +3961,B,30.00,16.0,3.00,Female,1,Followup,48 +3962,A,18.00,1.00,3.00,Female,0,Followup,3 +3964,A,22.00,0.00,0.00,Female,0,Followup,0 +3966,C,22.00,2.00,2.00,Female,1,Followup,4 +3967,B,24.00,0.00,0.00,Female,1,Followup,0 +3968,A,30.00,1.00,1.00,Female,0,Followup,1 +3970,A,22.00,2.00,2.00,Female,1,Followup,4 +3971,C,22.00,3.00,9.00,Male,1,Followup,27 +3973,C,21.00,0.00,0.00,Female,0,Followup,0 +3974,A,20.00,0.00,0.00,Male,1,Followup,0 +3975,B,19.00,16.0,2.00,Male,1,Followup,32 +3976,A,22.00,4.00,5.00,Female,1,Followup,20 +3978,B,25.00,8.00,3.00,Male,1,Followup,24 +3979,A,41.00,1.00,2.00,Female,1,Followup,2 +3981,C,21.00,0.00,0.00,Female,1,Followup,0 +3983,C,22.00,3.00,3.00,Female,1,Followup,9 +3986,C,24.00,4.00,6.00,Male,1,Followup,24 +3987,A,20.00,3.00,2.00,Male,1,Followup,6 +3988,B,21.00,9.00,1.00,Male,1,Followup,9 +3989,A,21.00,0.00,0.00,Female,0,Followup,0 +3990,A,40.00,24.0,1.00,Male,1,Followup,24 +3991,A,26.00,26.0,3.00,Male,1,Followup,78 +3992,A,22.00,0.00,0.00,Female,1,Followup,0 +3993,A,19.00,3.00,2.00,Female,1,Followup,6 +3994,A,21.00,4.00,2.00,Female,1,Followup,8 +3995,B,24.00,3.00,2.00,Female,1,Followup,6 +3998,C,21.00,4.00,1.00,Female,1,Followup,4 +4001,C,21.00,2.00,5.00,Female,1,Followup,10 +4002,C,30.00,21.0,2.00,Female,1,Followup,42 +4003,B,25.00,9.00,3.00,Male,1,Followup,27 +4005,C,23.00,1.00,1.00,Male,1,Followup,1 +4007,C,22.00,6.00,3.00,Male,1,Followup,18 +4009,A,26.00,0.00,0.00,Male,0,Followup,0 +4010,B,35.00,14.0,1.00,Female,1,Followup,14 +4012,B,25.00,3.00,3.00,Female,0,Followup,9 +4013,C,22.00,8.00,2.00,Male,1,Followup,16 +4015,C,22.00,4.00,2.00,Male,0,Followup,8 +4018,A,24.00,1.00,1.00,Female,1,Followup,1 +4019,A,24.00,7.00,2.00,Male,1,Followup,14 +4020,B,45.00,14.0,3.00,Female,1,Followup,42 +4023,C,19.00,5.00,10.0,Female,1,Followup,50 +4026,A,29.00,1.00,2.00,Male,1,Followup,2 +4028,A,22.00,5.00,2.00,Female,1,Followup,10 +4029,A,20.00,2.00,3.00,Female,1,Followup,6 +4030,A,21.00,4.00,4.00,Male,1,Followup,16 +4031,C,27.00,0.00,0.00,Male,0,Followup,0 +4032,A,20.00,7.00,6.00,Female,1,Followup,42 +4033,B,21.00,2.00,4.00,Female,1,Followup,8 +4034,C,27.00,6.00,3.00,Female,1,Followup,18 +4035,B,24.00,4.00,1.00,Female,1,Followup,4 +4038,C,20.00,5.00,2.00,Female,1,Followup,10 +4041,A,26.00,14.0,2.00,Female,1,Followup,28 +4042,A,22.00,9.00,2.00,Female,1,Followup,18 +4044,C,30.00,0.00,0.00,Female,1,Followup,0 +4045,B,31.00,0.00,0.00,Female,0,Followup,0 +4046,C,21.00,6.00,8.00,Female,1,Followup,48 +4047,B,37.00,12.0,3.00,Female,1,Followup,36 +4049,A,21.00,4.00,6.00,Male,1,Followup,24 +4050,B,22.00,3.00,4.00,Male,1,Followup,12 +4051,B,21.00,10.0,6.00,Female,1,Followup,60 +4054,B,21.00,4.00,6.00,Male,1,Followup,24 +4056,C,29.00,16.0,4.00,Female,1,Followup,64 +4057,B,50.00,1.00,1.00,Female,0,Followup,1 +4058,A,22.00,10.0,1.00,Male,1,Followup,10 +4059,B,24.00,12.0,2.00,Male,1,Followup,24 +4061,B,23.00,12.0,2.00,Female,1,Followup,24 +4063,C,21.00,0.00,0.00,Male,1,Followup,0 +4064,C,21.00,0.00,0.00,Female,1,Followup,0 +4065,B,19.00,3.00,3.00,Female,1,Followup,9 +4068,C,21.00,1.00,5.00,Male,1,Followup,5 +4069,C,21.00,10.0,11.0,Male,1,Followup,110 +4070,B,41.00,0.00,0.00,Female,0,Followup,0 +4071,B,22.00,2.00,3.00,Female,1,Followup,6 +4072,A,23.00,0.00,0.00,Male,0,Followup,0 +4075,C,23.00,1.00,5.00,Male,1,Followup,5 +4076,B,17.00,0.00,0.00,Female,0,Followup,0 +4077,A,26.00,10.0,1.00,Male,1,Followup,10 +4078,A,28.00,0.00,0.00,Male,0,Followup,0 +4080,C,18.00,0.00,0.00,Female,0,Followup,0 +4081,C,20.00,2.00,1.00,Male,1,Followup,2 +4083,A,46.00,0.00,0.00,Male,0,Followup,0 +4087,B,21.00,0.00,0.00,Female,0,Followup,0 +4089,A,22.00,3.00,2.00,Male,1,Followup,6 +4090,A,25.00,8.00,2.00,Male,1,Followup,16 +4092,A,19.00,6.00,2.00,Female,1,Followup,12 +4095,B,18.00,4.00,1.00,Female,1,Followup,4 +4096,B,24.00,3.00,10.0,Male,1,Followup,30 +4097,C,22.00,7.00,2.00,Male,1,Followup,14 +4099,A,21.00,9.00,2.00,Female,1,Followup,18 +4100,C,20.00,12.0,6.00,Female,1,Followup,72 +4101,B,22.00,3.00,2.00,Female,1,Followup,6 +4102,B,20.00,6.00,7.00,Female,1,Followup,42 +4103,C,38.00,0.00,0.00,Female,0,Followup,0 +4105,B,35.00,2.00,4.00,Male,1,Followup,8 +4106,B,21.00,0.00,0.00,Male,0,Followup,0 +4108,B,20.00,3.00,5.00,Female,1,Followup,15 +4109,A,23.00,20.0,2.00,Female,1,Followup,40 +4110,B,19.00,5.00,2.00,Male,1,Followup,10 +4111,A,21.00,2.00,4.00,Male,1,Followup,8 +4113,B,23.00,5.00,3.00,Male,1,Followup,15 +4115,A,24.00,0.00,0.00,Female,0,Followup,0 +4116,C,27.00,0.00,0.00,Female,0,Followup,0 +4120,C,24.00,2.00,1.00,Female,1,Followup,2 +4121,A,25.00,1.00,1.00,Male,1,Followup,1 +4125,A,24.00,2.00,2.00,Male,1,Followup,4 +4127,B,20.00,1.00,1.00,Female,1,Followup,1 +4130,A,19.00,1.00,1.00,Female,1,Followup,1 +4131,B,22.00,3.00,1.00,Male,1,Followup,3 +4132,C,20.00,4.00,1.00,Male,1,Followup,4 +4133,A,20.00,5.00,1.00,Male,1,Followup,5 +4134,A,19.00,2.00,5.00,Male,1,Followup,10 +4135,A,26.00,0.00,0.00,Male,0,Followup,0 +4136,A,48.00,4.00,1.00,Female,1,Followup,4 +4137,C,22.00,0.00,0.00,Female,1,Followup,0 +4139,C,21.00,1.00,1.00,Female,1,Followup,1 +4140,B,39.00,10.0,1.00,Female,1,Followup,10 +4141,A,21.00,5.00,1.00,Male,1,Followup,5 +4143,C,36.00,2.00,3.00,Female,1,Followup,6 +4145,C,19.00,0.00,0.00,Female,0,Followup,0 +4147,A,21.00,6.00,2.00,Female,1,Followup,12 +4148,A,21.00,1.00,3.00,Female,1,Followup,3 +4149,B,23.00,4.00,6.00,Male,1,Followup,24 +4151,B,37.00,7.00,1.00,Male,1,Followup,7 +4152,B,20.00,1.00,2.00,Female,1,Followup,2 +4153,C,24.00,3.00,5.00,Male,1,Followup,15 +4154,C,23.00,7.00,3.00,Female,1,Followup,21 +4156,B,19.00,2.00,2.00,Female,1,Followup,4 +4157,B,22.00,10.0,6.00,Male,1,Followup,60 +4158,A,21.00,3.00,1.00,Female,1,Followup,3 +4160,C,23.00,5.00,10.0,Female,1,Followup,50 +4161,B,33.00,2.00,1.00,Male,1,Followup,2 +4162,A,25.00,8.00,10.0,Male,1,Followup,80 +4163,B,21.00,3.00,2.00,Male,1,Followup,6 +4164,A,22.00,0.00,0.00,Male,0,Followup,0 +4165,A,24.00,10.0,2.00,Female,1,Followup,20 +4166,C,21.00,8.00,1.00,Female,1,Followup,8 +4167,B,31.00,1.00,1.00,Female,0,Followup,1 +4169,C,33.00,12.0,2.00,Male,1,Followup,24 +4172,A,22.00,6.00,3.00,Female,1,Followup,18 +4175,B,25.00,12.0,2.00,Male,1,Followup,24 +4176,A,20.00,0.00,0.00,Female,1,Followup,0 +4177,C,22.00,3.00,6.00,Male,0,Followup,18 +4179,A,21.00,0.00,0.00,Female,1,Followup,0 +4180,C,19.00,5.00,2.00,Female,1,Followup,10 +4181,C,22.00,6.00,8.00,Male,1,Followup,48 +4182,A,20.00,0.00,0.00,Male,1,Followup,0 +4184,A,54.00,0.00,0.00,Female,0,Followup,0 +4185,A,20.00,3.00,3.00,Female,0,Followup,9 +4186,B,21.00,5.00,10.0,Male,1,Followup,50 +4187,B,21.00,0.00,0.00,Female,1,Followup,0 +4188,A,25.00,4.00,1.00,Female,1,Followup,4 +4190,C,25.00,0.00,0.00,Male,0,Followup,0 +4191,B,22.00,2.00,1.00,Male,1,Followup,2 +4194,A,41.00,0.00,0.00,Male,1,Followup,0 +4195,B,24.00,7.00,3.00,Male,1,Followup,21 +4197,A,34.00,0.00,0.00,Male,0,Followup,0 +4199,A,19.00,0.00,0.00,Male,1,Followup,0 +4200,A,42.00,6.00,3.00,Female,1,Followup,18 +4202,A,33.00,0.00,0.00,Female,0,Followup,0 +4203,B,30.00,3.00,6.00,Male,1,Followup,18 +4206,B,27.00,2.00,2.00,Male,1,Followup,4 +4207,A,18.00,4.00,4.00,Female,1,Followup,16 +4209,B,20.00,2.00,4.00,Female,1,Followup,8 +4210,A,22.00,4.00,1.00,Male,0,Followup,4 +4211,C,24.00,0.00,0.00,Male,0,Followup,0 +4212,A,21.00,8.00,5.00,Female,1,Followup,40 +4213,C,21.00,9.00,2.00,Male,1,Followup,18 +4216,B,23.00,8.00,5.00,Female,1,Followup,40 +4217,B,22.00,28.0,2.00,Male,1,Followup,56 +4219,A,20.00,10.0,10.0,Male,1,Followup,100 +4220,B,39.00,2.00,1.00,Female,1,Followup,2 +4221,B,21.00,0.00,0.00,Female,1,Followup,0 +4222,A,21.00,5.00,5.00,Female,1,Followup,25 +4223,A,20.00,2.00,3.00,Female,1,Followup,6 +4224,A,36.00,0.00,0.00,Female,0,Followup,0 +4225,C,40.00,0.00,0.00,Male,0,Followup,0 +4226,B,39.00,7.00,2.00,Female,1,Followup,14 +4227,A,22.00,22.0,2.00,Female,1,Followup,44 +4228,C,22.00,3.00,6.00,Female,1,Followup,18 +4229,A,21.00,8.00,2.00,Female,1,Followup,16 +4230,A,22.00,8.00,8.00,Male,1,Followup,64 +4231,B,20.00,2.00,4.00,Female,1,Followup,8 +4233,B,21.00,3.00,1.00,Male,1,Followup,3 +4234,B,29.00,0.00,0.00,Male,0,Followup,0 +4235,B,22.00,4.00,7.00,Male,1,Followup,28 +4237,A,22.00,2.00,2.00,Female,1,Followup,4 +4238,C,21.00,0.00,0.00,Female,0,Followup,0 +4239,A,22.00,4.00,6.00,Male,1,Followup,24 +4240,C,19.00,2.00,1.00,Female,1,Followup,2 +4241,C,22.00,1.00,15.0,Male,1,Followup,15 +4242,B,42.00,24.0,2.00,Female,1,Followup,48 +4243,A,23.00,0.00,0.00,Male,1,Followup,0 +4245,A,21.00,8.00,12.0,Female,1,Followup,96 +4246,A,19.00,8.00,6.00,Male,1,Followup,48 +4249,A,41.00,20.0,3.00,Female,1,Followup,60 +4252,C,27.00,2.00,3.00,Female,1,Followup,6 +4258,A,22.00,4.00,7.00,Male,1,Followup,28 +4259,B,20.00,4.00,2.00,Female,1,Followup,8 +4260,B,23.00,7.00,2.00,Male,1,Followup,14 +4261,A,19.00,1.00,10.0,Female,1,Followup,10 +4264,A,29.00,4.00,1.00,Female,1,Followup,4 +4267,B,18.00,0.00,0.00,Male,0,Followup,0 +4268,A,20.00,1.00,5.00,Female,1,Followup,5 +4270,C,20.00,4.00,8.00,Male,1,Followup,32 +4271,B,19.00,1.00,1.00,Male,0,Followup,1 +4272,A,25.00,7.00,3.00,Female,1,Followup,21 +4273,A,21.00,8.00,4.00,Female,1,Followup,32 +4274,B,22.00,3.00,7.00,Male,1,Followup,21 +4275,C,21.00,4.00,2.00,Female,1,Followup,8 +4276,C,49.00,3.00,2.00,Female,1,Followup,6 +4277,C,26.00,8.00,4.00,Male,1,Followup,32 +4280,B,22.00,3.00,1.00,Female,1,Followup,3 +4282,B,32.00,1.00,2.00,Male,1,Followup,2 +4285,C,20.00,2.00,2.00,Male,1,Followup,4 +4286,B,37.00,5.00,1.00,Female,1,Followup,5 +4287,A,30.00,12.0,1.00,Male,1,Followup,12 +4288,B,54.00,1.00,1.00,Female,1,Followup,1 +4289,C,48.00,28.0,1.00,Male,1,Followup,28 +4292,A,20.00,5.00,7.00,Male,1,Followup,35 +4293,B,21.00,2.00,5.00,Female,1,Followup,10 +4294,A,22.00,2.00,1.00,Female,1,Followup,2 +4295,A,23.00,6.00,4.00,Male,1,Followup,24 +4297,B,43.00,3.00,2.00,Female,1,Followup,6 +4298,C,20.00,3.00,8.00,Male,1,Followup,24 +4299,C,21.00,1.00,7.00,Female,1,Followup,7 +4300,A,22.00,3.00,6.00,Male,1,Followup,18 +4302,C,18.00,2.00,3.00,Female,1,Followup,6 +4304,A,32.00,8.00,3.00,Female,1,Followup,24 +4305,C,19.00,0.00,0.00,Female,0,Followup,0 +4307,C,19.00,0.00,0.00,Female,0,Followup,0 +4308,A,25.00,3.00,3.00,Female,1,Followup,9 +4311,A,20.00,1.00,2.00,Male,1,Followup,2 +4312,C,28.00,4.00,4.00,Female,1,Followup,16 +4313,A,22.00,6.00,2.00,Female,1,Followup,12 +4314,B,23.00,0.00,0.00,Male,1,Followup,0 +4316,A,19.00,0.00,0.00,Female,1,Followup,0 +4317,B,34.00,5.00,1.00,Male,1,Followup,5 +4318,A,21.00,8.00,4.00,Female,1,Followup,32 +4320,B,39.00,5.00,5.00,Female,1,Followup,25 +4321,A,19.00,1.00,2.00,Male,1,Followup,2 +4323,A,21.00,0.00,0.00,Female,1,Followup,0 +4326,B,20.00,0.00,0.00,Female,0,Followup,0 +4328,B,21.00,9.00,2.00,Female,1,Followup,18 +4329,A,24.00,1.00,1.00,Female,1,Followup,1 +4330,B,32.00,0.00,0.00,Male,0,Followup,0 +4331,A,19.00,0.00,0.00,Female,0,Followup,0 +4332,A,21.00,10.0,2.00,Male,1,Followup,20 +4333,A,22.00,0.00,0.00,Female,0,Followup,0 +4334,A,18.00,0.00,0.00,Male,0,Followup,0 +4335,C,53.00,0.00,0.00,Female,0,Followup,0 +4337,C,46.00,12.0,3.00,Female,1,Followup,36 +4338,C,21.00,8.00,12.0,Male,1,Followup,96 +4339,B,28.00,12.0,2.00,Female,1,Followup,24 +4341,C,22.00,2.00,5.00,Female,0,Followup,10 +4342,B,39.00,6.00,3.00,Male,1,Followup,18 +4344,A,22.00,2.00,1.00,Female,0,Followup,2 +4345,B,20.00,3.00,1.00,Female,1,Followup,3 +4348,A,19.00,1.00,3.00,Female,0,Followup,3 +4349,A,46.00,27.0,3.00,Male,1,Followup,81 +4350,A,20.00,5.00,1.00,Female,1,Followup,5 +4352,A,17.00,1.00,4.00,Male,1,Followup,4 +4353,B,19.00,4.00,8.00,Male,1,Followup,32 +4354,B,58.00,2.00,5.00,Male,1,Followup,10 +4356,B,20.00,0.00,0.00,Male,0,Followup,0 +4357,C,26.00,7.00,1.00,Female,1,Followup,7 +4358,C,25.00,6.00,5.00,Female,1,Followup,30 +4361,A,22.00,20.0,2.00,Female,1,Followup,40 +4362,C,21.00,0.00,0.00,Male,0,Followup,0 +4363,B,26.00,2.00,2.00,Male,1,Followup,4 +4364,C,21.00,0.00,0.00,Male,0,Followup,0 +4365,B,22.00,1.00,7.00,Female,1,Followup,7 +4366,A,18.00,1.00,1.00,Male,0,Followup,1 +4367,B,20.00,4.00,4.00,Female,1,Followup,16 +4368,C,24.00,7.00,1.00,Male,1,Followup,7 +4372,B,23.00,2.00,1.00,Male,1,Followup,2 +4374,B,22.00,9.00,4.00,Male,1,Followup,36 +4381,C,19.00,0.00,0.00,Female,0,Followup,0 +4382,A,21.00,0.00,0.00,Female,0,Followup,0 +4383,B,21.00,0.00,0.00,Male,0,Followup,0 +4384,B,22.00,4.00,1.00,Female,1,Followup,4 +4385,B,21.00,5.00,6.00,Female,1,Followup,30 +4386,C,22.00,0.00,0.00,Female,0,Followup,0 +4388,A,20.00,6.00,10.0,Male,1,Followup,60 +4389,B,23.00,4.00,1.00,Male,1,Followup,4 +4390,A,22.00,4.00,6.00,Male,1,Followup,24 +4391,B,20.00,6.00,5.00,Female,1,Followup,30 +4392,B,18.00,0.00,0.00,Female,0,Followup,0 +4394,B,25.00,3.00,6.00,Female,1,Followup,18 +4395,C,20.00,2.00,2.00,Female,1,Followup,4 +4397,B,21.00,4.00,7.00,Female,1,Followup,28 +4398,C,18.00,4.00,1.00,Male,1,Followup,4 +4399,B,19.00,0.00,0.00,Female,0,Followup,0 +4400,A,18.00,0.00,0.00,Male,0,Followup,0 +4402,C,21.00,0.00,0.00,Female,1,Followup,0 +4404,B,20.00,0.00,0.00,Male,0,Followup,0 +4407,C,22.00,8.00,15.0,Male,1,Followup,120 +4408,B,21.00,3.00,6.00,Male,1,Followup,18 +4409,B,45.00,0.00,0.00,Female,0,Followup,0 +4410,A,21.00,0.00,0.00,Female,1,Followup,0 +4411,A,21.00,3.00,5.00,Female,1,Followup,15 +4412,C,44.00,23.0,1.00,Female,1,Followup,23 +4413,C,20.00,0.00,0.00,Female,0,Followup,0 +4415,B,20.00,4.00,20.0,Male,1,Followup,80 +4417,C,19.00,4.00,1.00,Female,1,Followup,4 +4419,C,40.00,2.00,2.00,Female,1,Followup,4 +4421,C,23.00,3.00,3.00,Female,1,Followup,9 +4422,B,47.00,0.00,0.00,Female,1,Followup,0 +4423,C,27.00,5.00,2.00,Female,1,Followup,10 +4424,B,18.00,0.00,0.00,Female,1,Followup,0 +4425,C,34.00,0.00,0.00,Female,0,Followup,0 +4428,B,22.00,4.00,1.00,Female,1,Followup,4 +4429,B,19.00,3.00,2.00,Male,1,Followup,6 +4430,A,20.00,0.00,0.00,Female,0,Followup,0 +4433,A,31.00,2.00,5.00,Female,0,Followup,10 +4434,A,20.00,2.00,5.00,Female,1,Followup,10 +4435,B,21.00,14.0,2.00,Male,1,Followup,28 +4437,B,20.00,1.00,3.00,Male,1,Followup,3 +4438,B,21.00,2.00,2.00,Female,0,Followup,4 +4440,A,52.00,2.00,1.00,Female,0,Followup,2 +4441,C,22.00,8.00,3.00,Male,1,Followup,24 +4442,A,19.00,0.00,0.00,Female,0,Followup,0 +4443,C,22.00,4.00,7.00,Male,1,Followup,28 +4444,C,21.00,8.00,15.0,Male,1,Followup,120 +4445,B,19.00,4.00,8.00,Female,1,Followup,32 +4446,A,50.00,8.00,2.00,Female,1,Followup,16 +4447,B,21.00,1.00,4.00,Male,0,Followup,4 +4449,B,19.00,8.00,8.00,Female,1,Followup,64 +4451,C,34.00,1.00,1.00,Male,1,Followup,1 +4452,A,19.00,4.00,1.00,Female,1,Followup,4 +4453,B,19.00,0.00,0.00,Male,1,Followup,0 +4455,A,20.00,0.00,0.00,Male,0,Followup,0 +4456,A,22.00,4.00,15.0,Male,1,Followup,60 +4458,B,22.00,8.00,3.00,Female,1,Followup,24 +4459,A,18.00,0.00,0.00,Female,1,Followup,0 +4460,B,21.00,8.00,5.00,Female,1,Followup,40 +4461,A,42.00,1.00,1.00,Male,1,Followup,1 +4462,C,22.00,0.00,0.00,Male,1,Followup,0 +4463,A,18.00,2.00,5.00,Female,1,Followup,10 +4464,A,20.00,19.0,3.00,Female,1,Followup,57 +4465,B,21.00,7.00,20.0,Male,1,Followup,140 +4466,B,26.00,14.0,1.00,Female,1,Followup,14 +4467,B,20.00,3.00,9.00,Male,1,Followup,27 +4468,A,30.00,8.00,2.00,Female,1,Followup,16 +4469,A,22.00,5.00,5.00,Male,1,Followup,25 +4470,B,22.00,5.00,10.0,Male,1,Followup,50 +4472,B,21.00,0.00,0.00,Female,1,Followup,0 +4473,C,43.00,1.00,1.00,Female,1,Followup,1 +4474,A,21.00,5.00,5.00,Female,1,Followup,25 +4475,A,24.00,0.00,0.00,Male,0,Followup,0 +4476,A,20.00,6.00,12.0,Female,1,Followup,72 +4478,A,24.00,1.00,1.00,Female,1,Followup,1 +4479,A,28.00,2.00,2.00,Female,1,Followup,4 +4480,A,19.00,4.00,3.00,Female,1,Followup,12 +4483,A,49.00,0.00,0.00,Female,0,Followup,0 +4484,C,22.00,2.00,2.00,Female,0,Followup,4 +4485,B,19.00,4.00,8.00,Female,1,Followup,32 +4488,B,24.00,5.00,10.0,Male,1,Followup,50 +4489,C,18.00,9.00,6.00,Female,1,Followup,54 +4490,C,20.00,6.00,4.00,Male,1,Followup,24 +4491,A,26.00,14.0,1.00,Male,1,Followup,14 +4492,B,18.00,0.00,0.00,Male,0,Followup,0 +4493,C,18.00,4.00,1.00,Female,1,Followup,4 +4494,A,23.00,2.00,2.00,Female,1,Followup,4 +4496,B,23.00,3.00,6.00,Female,1,Followup,18 +4500,A,20.00,7.00,2.00,Male,1,Followup,14 +4501,B,18.00,3.00,5.00,Female,1,Followup,15 +4502,B,19.00,0.00,0.00,Male,1,Followup,0 +4504,A,23.00,11.0,1.00,Female,1,Followup,11 +4506,B,19.00,0.00,0.00,Female,0,Followup,0 +4507,A,38.00,15.0,2.00,Female,1,Followup,30 +4508,A,22.00,6.00,1.00,Female,1,Followup,6 +4509,C,21.00,1.00,3.00,Female,0,Followup,3 +4510,B,23.00,5.00,10.0,Female,1,Followup,50 +4511,A,20.00,3.00,10.0,Female,1,Followup,30 +4512,A,21.00,2.00,9.00,Male,1,Followup,18 +4513,C,22.00,4.00,4.00,Female,1,Followup,16 +4514,A,21.00,0.00,0.00,Female,1,Followup,0 +4515,B,20.00,20.0,1.00,Male,1,Followup,20 +4519,B,21.00,1.00,3.00,Female,1,Followup,3 +4521,B,25.00,8.00,5.00,Male,1,Followup,40 +4523,A,20.00,1.00,1.00,Female,0,Followup,1 +4524,B,20.00,2.00,1.00,Female,1,Followup,2 +4525,B,18.00,0.00,0.00,Female,1,Followup,0 +4527,A,18.00,5.00,7.00,Male,1,Followup,35 +4528,A,21.00,28.0,2.00,Male,1,Followup,56 +4529,B,19.00,3.00,1.00,Female,1,Followup,3 +4530,A,20.00,12.0,2.00,Male,1,Followup,24 +4531,A,19.00,7.00,8.00,Male,1,Followup,56 +4532,C,41.00,3.00,1.00,Female,1,Followup,3 +4533,A,20.00,6.00,8.00,Male,1,Followup,48 +4534,B,20.00,1.00,3.00,Female,1,Followup,3 +4535,A,21.00,4.00,3.00,Female,1,Followup,12 +4536,B,20.00,10.0,1.00,Male,1,Followup,10 +4537,A,23.00,12.0,2.00,Male,1,Followup,24 +4538,B,21.00,1.00,1.00,Female,1,Followup,1 +4540,C,19.00,2.00,2.00,Female,1,Followup,4 +4541,C,54.00,7.00,1.00,Female,1,Followup,7 +4542,A,23.00,2.00,3.00,Female,1,Followup,6 +4543,C,25.00,5.00,10.0,Male,1,Followup,50 +4544,B,22.00,7.00,1.00,Female,1,Followup,7 +4545,B,38.00,3.00,2.00,Male,1,Followup,6 +4546,B,22.00,2.00,5.00,Female,1,Followup,10 +4549,A,21.00,1.00,10.0,Male,1,Followup,10 +4550,C,22.00,6.00,3.00,Female,1,Followup,18 +4552,B,21.00,1.00,3.00,Male,1,Followup,3 +4553,B,21.00,0.00,0.00,Female,0,Followup,0 +4554,C,19.00,4.00,3.00,Male,1,Followup,12 +4556,A,23.00,4.00,2.00,Female,1,Followup,8 +4557,C,22.00,2.00,1.00,Female,1,Followup,2 +4558,B,23.00,0.00,0.00,Female,0,Followup,0 +4559,B,22.00,12.0,3.00,Male,1,Followup,36 +4560,A,23.00,7.00,2.00,Male,1,Followup,14 +4561,A,21.00,6.00,5.00,Male,1,Followup,30 +4562,C,18.00,1.00,1.00,Female,1,Followup,1 +4563,C,19.00,3.00,12.0,Male,1,Followup,36 +4567,A,52.00,0.00,0.00,Male,0,Followup,0 +4569,C,21.00,8.00,2.00,Male,1,Followup,16 +4570,A,18.00,0.00,0.00,Female,0,Followup,0 +4571,C,27.00,0.00,0.00,Female,0,Followup,0 +4572,C,21.00,5.00,4.00,Female,1,Followup,20 +4573,B,32.00,0.00,0.00,Female,0,Followup,0 +4574,B,23.00,2.00,2.00,Female,1,Followup,4 +4578,B,23.00,5.00,1.00,Male,1,Followup,5 +4579,B,24.00,2.00,8.00,Female,0,Followup,16 +4581,C,19.00,0.00,0.00,Male,0,Followup,0 +4582,A,21.00,3.00,4.00,Female,1,Followup,12 +4583,B,33.00,0.00,0.00,Female,1,Followup,0 +4584,A,23.00,2.00,1.00,Female,1,Followup,2 +4585,B,18.00,15.0,2.00,Female,1,Followup,30 +4586,B,23.00,5.00,3.00,Female,1,Followup,15 +4588,B,20.00,4.00,4.00,Male,1,Followup,16 +4589,C,22.00,0.00,0.00,Male,0,Followup,0 +4590,C,21.00,3.00,1.00,Female,1,Followup,3 +4592,B,24.00,3.00,3.00,Male,1,Followup,9 +4594,C,22.00,2.00,2.00,Female,1,Followup,4 +4595,C,18.00,1.00,2.00,Female,0,Followup,2 +4596,C,18.00,4.00,2.00,Male,1,Followup,8 +4597,A,20.00,12.0,3.00,Female,1,Followup,36 +4598,C,20.00,4.00,10.0,Male,1,Followup,40 +4602,A,22.00,0.00,0.00,Female,0,Followup,0 +4604,C,21.00,1.00,1.00,Female,1,Followup,1 +4605,A,24.00,6.00,4.00,Male,1,Followup,24 +4607,A,20.00,4.00,6.00,Female,1,Followup,24 +4608,B,23.00,2.00,12.0,Male,1,Followup,24 +4609,C,19.00,0.00,0.00,Male,1,Followup,0 +4611,C,31.00,0.00,0.00,Male,1,Followup,0 +4612,C,25.00,14.0,2.00,Male,1,Followup,28 +4613,B,21.00,2.00,1.00,Female,1,Followup,2 +4614,A,25.00,0.00,0.00,Male,1,Followup,0 +4616,A,17.00,5.00,1.00,Male,1,Followup,5 +4619,C,56.00,6.00,1.00,Female,1,Followup,6 +4620,A,20.00,26.0,2.00,Female,1,Followup,52 +4622,A,21.00,4.00,3.00,Female,1,Followup,12 +4624,C,22.00,6.00,6.00,Male,1,Followup,36 +4627,A,31.00,15.0,1.00,Male,1,Followup,15 +4629,A,20.00,10.0,2.00,Female,1,Followup,20 +4630,B,20.00,0.00,0.00,Female,1,Followup,0 +4631,C,21.00,4.00,1.00,Female,1,Followup,4 +4632,B,36.00,6.00,1.00,Female,1,Followup,6 +4633,C,20.00,0.00,0.00,Male,0,Followup,0 +4634,A,21.00,5.00,6.00,Female,1,Followup,30 +4636,C,23.00,0.00,0.00,Female,0,Followup,0 +4637,A,22.00,0.00,0.00,Female,0,Followup,0 +4639,B,22.00,6.00,2.00,Female,1,Followup,12 +4640,C,21.00,2.00,4.00,Male,1,Followup,8 +4641,A,18.00,0.00,0.00,Male,0,Followup,0 +4644,C,22.00,10.0,5.00,Male,1,Followup,50 +4645,C,20.00,10.0,2.00,Female,1,Followup,20 +4646,B,21.00,11.0,2.00,Male,1,Followup,22 +4648,C,22.00,8.00,2.00,Female,0,Followup,16 +4649,C,51.00,20.0,1.00,Female,1,Followup,20 +4651,B,24.00,3.00,3.00,Female,1,Followup,9 +4655,C,19.00,3.00,5.00,Female,1,Followup,15 +4656,C,49.00,16.0,5.00,Male,1,Followup,80 +4657,C,22.00,3.00,2.00,Female,1,Followup,6 +4658,B,20.00,2.00,6.00,Female,1,Followup,12 +4660,B,20.00,3.00,3.00,Female,1,Followup,9 +4661,B,19.00,1.00,5.00,Female,1,Followup,5 +4665,A,21.00,0.00,0.00,Male,0,Followup,0 +4667,B,50.00,2.00,1.00,Female,1,Followup,2 +4669,A,21.00,4.00,2.00,Female,1,Followup,8 +4670,A,19.00,4.00,5.00,Female,1,Followup,20 +4674,C,33.00,2.00,4.00,Male,1,Followup,8 +4675,B,22.00,4.00,3.00,Male,1,Followup,12 +4677,C,20.00,3.00,3.00,Female,0,Followup,9 +4678,C,20.00,1.00,9.00,Female,1,Followup,9 +4679,C,19.00,2.00,8.00,Male,1,Followup,16 +4680,A,21.00,5.00,6.00,Female,1,Followup,30 +4681,B,23.00,2.00,1.00,Female,1,Followup,2 +4682,B,21.00,1.00,1.00,Female,1,Followup,1 +4685,B,27.00,4.00,2.00,Female,1,Followup,8 +4688,B,27.00,6.00,1.00,Female,1,Followup,6 +4691,C,26.00,1.00,2.00,Female,1,Followup,2 +4692,A,37.00,8.00,2.00,Female,1,Followup,16 +4694,B,37.00,1.00,7.00,Male,1,Followup,7 +4695,C,21.00,3.00,4.00,Male,1,Followup,12 +4696,B,59.00,8.00,2.00,Female,1,Followup,16 +4699,B,21.00,5.00,2.00,Male,1,Followup,10 +4700,C,18.00,0.00,0.00,Male,0,Followup,0 +4701,A,19.00,4.00,1.00,Female,1,Followup,4 +4702,C,24.00,4.00,1.00,Male,1,Followup,4 +4703,B,19.00,9.00,2.00,Male,1,Followup,18 +4704,B,24.00,14.0,1.00,Female,1,Followup,14 +4705,B,18.00,0.00,0.00,Male,0,Followup,0 +4706,B,20.00,0.00,0.00,Male,1,Followup,0 +4707,A,21.00,0.00,0.00,Female,1,Followup,0 +4708,C,21.00,4.00,7.00,Female,1,Followup,28 +4709,A,21.00,5.00,15.0,Male,1,Followup,75 +4710,A,24.00,12.0,1.00,Female,1,Followup,12 +4711,C,26.00,1.00,5.00,Female,1,Followup,5 +4714,A,26.00,2.00,1.00,Male,0,Followup,2 +4715,A,19.00,0.00,0.00,Female,1,Followup,0 +4716,A,21.00,2.00,2.00,Female,1,Followup,4 +4718,B,19.00,4.00,6.00,Female,1,Followup,24 +4719,B,20.00,8.00,26.0,Male,1,Followup,208 +4720,C,21.00,2.00,3.00,Female,1,Followup,6 +4721,A,27.00,20.0,1.00,Female,1,Followup,20 +4722,B,19.00,7.00,2.00,Female,1,Followup,14 +4724,B,23.00,5.00,6.00,Male,1,Followup,30 +4725,C,21.00,8.00,3.00,Female,1,Followup,24 +4727,C,32.00,10.0,1.00,Male,1,Followup,10 +4728,B,20.00,0.00,0.00,Female,1,Followup,0 +4729,B,23.00,1.00,1.00,Male,1,Followup,1 +4732,B,18.00,4.00,4.00,Female,1,Followup,16 +4735,A,19.00,0.00,0.00,Male,1,Followup,0 +4736,C,26.00,12.0,6.00,Male,1,Followup,72 +4738,B,30.00,0.00,0.00,Female,0,Followup,0 +4739,B,21.00,5.00,4.00,Female,1,Followup,20 +4740,B,18.00,0.00,0.00,Male,0,Followup,0 +4741,C,23.00,4.00,2.00,Female,1,Followup,8 +4742,C,23.00,7.00,4.00,Female,1,Followup,28 +4743,A,21.00,2.00,4.00,Male,1,Followup,8 +4745,A,47.00,28.0,1.00,Female,1,Followup,28 +4746,C,20.00,4.00,4.00,Female,1,Followup,16 +4748,A,22.00,0.00,0.00,Female,0,Followup,0 +4753,C,20.00,4.00,5.00,Female,1,Followup,20 +4754,C,22.00,0.00,0.00,Female,0,Followup,0 +4755,A,23.00,5.00,1.00,Female,1,Followup,5 +4757,C,49.00,0.00,0.00,Female,0,Followup,0 +4758,A,20.00,0.00,0.00,Female,0,Followup,0 +4759,A,30.00,5.00,3.00,Male,1,Followup,15 +4761,B,24.00,6.00,2.00,Female,1,Followup,12 +4763,A,44.00,26.0,2.00,Female,1,Followup,52 +4765,C,17.00,0.00,0.00,Female,0,Followup,0 +4770,B,32.00,2.00,8.00,Male,1,Followup,16 +4772,C,20.00,5.00,2.00,Female,1,Followup,10 +4776,C,19.00,1.00,5.00,Male,0,Followup,5 +4778,A,23.00,4.00,5.00,Female,1,Followup,20 +4779,C,21.00,4.00,3.00,Female,1,Followup,12 +4780,A,20.00,1.00,3.00,Female,1,Followup,3 +4781,B,21.00,5.00,4.00,Female,1,Followup,20 +4782,B,20.00,3.00,1.00,Female,0,Followup,3 +4783,B,19.00,0.00,0.00,Female,0,Followup,0 +4785,C,20.00,3.00,5.00,Male,1,Followup,15 +4786,B,22.00,0.00,0.00,Female,0,Followup,0 +4787,C,18.00,5.00,1.00,Male,1,Followup,5 +4788,C,21.00,3.00,1.00,Female,1,Followup,3 +4789,C,20.00,2.00,6.00,Female,1,Followup,12 +4790,C,54.00,0.00,0.00,Female,0,Followup,0 +4791,A,39.00,12.0,1.00,Female,1,Followup,12 +4794,C,51.00,0.00,0.00,Female,0,Followup,0 +4795,B,19.00,3.00,2.00,Female,0,Followup,6 +4797,A,20.00,1.00,1.00,Female,1,Followup,1 +4799,C,34.00,14.0,2.00,Female,1,Followup,28 +4802,B,23.00,2.00,6.00,Male,1,Followup,12 +4803,C,19.00,9.00,6.00,Female,1,Followup,54 +4804,A,22.00,7.00,2.00,Female,1,Followup,14 +4805,A,20.00,2.00,6.00,Female,1,Followup,12 +4806,A,23.00,0.00,0.00,Female,0,Followup,0 +4807,C,19.00,5.00,4.00,Female,1,Followup,20 +4810,A,34.00,2.00,2.00,Male,1,Followup,4 +4811,C,18.00,3.00,6.00,Female,1,Followup,18 +4813,C,18.00,0.00,0.00,Female,0,Followup,0 +4816,A,21.00,0.00,0.00,Male,0,Followup,0 +4817,C,24.00,3.00,3.00,Male,1,Followup,9 +4818,B,24.00,0.00,0.00,Male,0,Followup,0 +4819,C,21.00,0.00,0.00,Female,1,Followup,0 +4820,A,20.00,5.00,2.00,Female,1,Followup,10 +4821,A,37.00,5.00,3.00,Male,1,Followup,15 +4822,B,25.00,5.00,2.00,Female,1,Followup,10 +4824,B,20.00,3.00,6.00,Female,1,Followup,18 +4825,A,31.00,25.0,4.00,Female,1,Followup,100 +4826,A,20.00,20.0,6.00,Female,1,Followup,120 +4827,B,22.00,3.00,3.00,Female,1,Followup,9 +4828,C,23.00,4.00,12.0,Male,1,Followup,48 +4829,B,27.00,14.0,1.00,Male,1,Followup,14 +4830,B,19.00,4.00,15.0,Male,1,Followup,60 +4831,B,18.00,0.00,0.00,Male,1,Followup,0 +4833,A,37.00,0.00,0.00,Female,0,Followup,0 +4834,B,18.00,7.00,2.00,Female,1,Followup,14 +4837,B,20.00,0.00,0.00,Female,0,Followup,0 +4838,A,18.00,0.00,0.00,Female,0,Followup,0 +4839,B,39.00,3.00,3.00,Male,1,Followup,9 +4841,C,45.00,8.00,2.00,Female,1,Followup,16 +4842,B,20.00,2.00,1.00,Male,1,Followup,2 +4843,C,20.00,7.00,3.00,Female,1,Followup,21 +4844,A,31.00,4.00,1.00,Female,1,Followup,4 +4845,C,24.00,10.0,1.00,Female,1,Followup,10 +4846,A,21.00,1.00,1.00,Female,0,Followup,1 +4848,C,22.00,4.00,2.00,Female,1,Followup,8 +4849,C,31.00,0.00,0.00,Female,0,Followup,0 +4850,C,18.00,1.00,10.0,Male,1,Followup,10 +4851,B,18.00,3.00,2.00,Female,1,Followup,6 +4852,C,22.00,1.00,1.00,Female,1,Followup,1 +4854,C,18.00,0.00,0.00,Female,0,Followup,0 +4855,C,38.00,1.00,3.00,Female,1,Followup,3 +4856,A,19.00,1.00,5.00,Male,1,Followup,5 +4857,A,18.00,4.00,10.0,Female,1,Followup,40 +4858,C,52.00,2.00,8.00,Male,0,Followup,16 +4864,A,25.00,1.00,1.00,Male,1,Followup,1 +4866,A,21.00,8.00,2.00,Female,1,Followup,16 +4867,A,21.00,3.00,3.00,Female,1,Followup,9 +4870,C,49.00,14.0,1.00,Female,1,Followup,14 +4871,B,23.00,10.0,2.00,Female,1,Followup,20 +4872,B,20.00,4.00,4.00,Male,1,Followup,16 +4874,C,21.00,0.00,0.00,Male,0,Followup,0 +4875,B,21.00,5.00,1.00,Female,1,Followup,5 +4877,C,18.00,2.00,2.00,Female,1,Followup,4 +4878,A,20.00,6.00,7.00,Male,1,Followup,42 +4879,B,21.00,5.00,2.00,Female,1,Followup,10 +4880,C,20.00,1.00,11.0,Male,1,Followup,11 +4881,C,19.00,3.00,5.00,Female,0,Followup,15 +4882,B,20.00,6.00,6.00,Female,1,Followup,36 +4883,A,20.00,2.00,6.00,Female,1,Followup,12 +4884,C,24.00,6.00,3.00,Female,1,Followup,18 +4885,A,21.00,3.00,3.00,Female,1,Followup,9 +4886,C,22.00,5.00,1.00,Female,1,Followup,5 +4887,C,50.00,7.00,1.00,Female,1,Followup,7 +4888,C,21.00,0.00,0.00,Female,0,Followup,0 +4889,B,18.00,4.00,6.00,Female,1,Followup,24 +4890,B,19.00,1.00,1.00,Female,0,Followup,1 +4891,A,22.00,0.00,0.00,Female,1,Followup,0 +4894,B,42.00,4.00,1.00,Female,1,Followup,4 +4898,B,18.00,2.00,5.00,Female,1,Followup,10 +4900,A,20.00,0.00,0.00,Male,1,Followup,0 +4901,C,18.00,2.00,4.00,Male,1,Followup,8 +4903,B,19.00,0.00,0.00,Female,1,Followup,0 +4904,C,18.00,4.00,14.0,Male,1,Followup,56 +4905,C,48.00,0.00,0.00,Female,1,Followup,0 +4906,B,20.00,19.0,3.00,Male,1,Followup,57 +4907,C,23.00,6.00,2.00,Male,1,Followup,12 +4908,B,19.00,7.00,1.00,Female,1,Followup,7 +4909,A,23.00,14.0,3.00,Female,1,Followup,42 +4914,B,24.00,14.0,1.00,Female,1,Followup,14 +4915,C,21.00,2.00,5.00,Female,1,Followup,10 +4917,A,36.00,0.00,0.00,Male,0,Followup,0 +4919,C,28.00,0.00,0.00,Female,0,Followup,0 +4920,A,23.00,1.00,6.00,Female,0,Followup,6 +4923,B,20.00,5.00,5.00,Female,1,Followup,25 +4925,C,31.00,25.0,2.00,Female,1,Followup,50 +4926,C,24.00,10.0,1.00,Female,1,Followup,10 +4928,C,18.00,10.0,6.00,Female,1,Followup,60 +4931,B,19.00,2.00,3.00,Female,1,Followup,6 +4932,C,19.00,2.00,3.00,Female,1,Followup,6 +4935,A,20.00,1.00,2.00,Female,1,Followup,2 +4936,B,30.00,1.00,2.00,Female,1,Followup,2 +4938,B,22.00,2.00,2.00,Female,1,Followup,4 +4939,B,19.00,2.00,2.00,Female,1,Followup,4 +4940,C,26.00,0.00,0.00,Female,1,Followup,0 +4941,A,19.00,4.00,8.00,Female,1,Followup,32 +4943,B,19.00,3.00,1.00,Female,1,Followup,3 +4945,A,21.00,3.00,2.00,Male,1,Followup,6 +4947,B,19.00,1.00,1.00,Female,0,Followup,1 +4948,B,56.00,1.00,1.00,Female,1,Followup,1 +4951,A,19.00,0.00,0.00,Female,0,Followup,0 +4954,B,78.00,0.00,0.00,Male,1,Followup,0 +4955,A,35.00,0.00,0.00,Male,0,Followup,0 +4958,B,22.00,3.00,5.00,Female,1,Followup,15 +4960,C,21.00,5.00,1.00,Female,0,Followup,5 +4961,C,19.00,0.00,0.00,Female,0,Followup,0 +4962,A,18.00,16.0,1.00,Female,1,Followup,16 +4964,A,22.00,8.00,4.00,Female,1,Followup,32 +4965,A,19.00,3.00,4.00,Female,0,Followup,12 +4966,C,21.00,3.00,8.00,Male,1,Followup,24 +4967,A,19.00,0.00,0.00,Male,0,Followup,0 +4970,C,52.00,17.0,1.00,Female,1,Followup,17 +4972,B,46.00,1.00,2.00,Female,1,Followup,2 +4976,A,47.00,28.0,2.00,Female,1,Followup,56 +4978,B,52.00,14.0,2.00,Female,1,Followup,28 +4979,B,22.00,0.00,0.00,Female,0,Followup,0 +4980,A,37.00,7.00,4.00,Female,1,Followup,28 +4985,C,18.00,0.00,0.00,Female,0,Followup,0 +4987,B,36.00,4.00,1.00,Female,1,Followup,4 +4988,A,21.00,0.00,0.00,Female,0,Followup,0 +4991,B,19.00,0.00,0.00,Male,1,Followup,0 +4993,A,18.00,0.00,0.00,Male,0,Followup,0 +4995,C,21.00,0.00,0.00,Female,0,Followup,0 +4996,A,19.00,1.00,1.00,Female,1,Followup,1 +4999,A,21.00,1.00,2.00,Female,1,Followup,2 +5001,B,20.00,4.00,4.00,Female,1,Followup,16 +5004,C,19.00,0.00,0.00,Male,0,Followup,0 +5006,C,29.00,8.00,3.00,Female,1,Followup,24 +5007,B,19.00,2.00,15.0,Male,1,Followup,30 +5009,A,20.00,3.00,5.00,Male,1,Followup,15 +5011,C,20.00,10.0,2.00,Female,1,Followup,20 +5013,C,18.00,0.00,0.00,Female,0,Followup,0 +5017,C,19.00,1.00,4.00,Female,1,Followup,4 +5019,C,19.00,3.00,1.00,Female,1,Followup,3 +5020,A,31.00,1.00,1.00,Female,0,Followup,1 +5022,A,19.00,8.00,7.00,Female,1,Followup,56 +5023,B,21.00,2.00,4.00,Female,1,Followup,8 +5026,C,19.00,5.00,3.00,Female,1,Followup,15 +5029,C,19.00,0.00,0.00,Female,0,Followup,0 +5036,A,25.00,5.00,2.00,Male,1,Followup,10 +5037,A,22.00,7.00,5.00,Female,1,Followup,35 +5038,C,19.00,0.00,0.00,Male,1,Followup,0 +5040,B,19.00,0.00,0.00,Male,0,Followup,0 +5041,C,18.00,0.00,0.00,Female,1,Followup,0 +5044,C,26.00,0.00,0.00,Male,0,Followup,0 +5046,B,45.00,3.00,1.00,Female,1,Followup,3 +5047,B,21.00,2.00,2.00,Female,1,Followup,4 +5049,A,19.00,0.00,0.00,Female,0,Followup,0 +5051,A,20.00,3.00,4.00,Male,1,Followup,12 +5052,C,21.00,0.00,0.00,Female,0,Followup,0 +5055,A,20.00,3.00,7.00,Female,1,Followup,21 +5059,C,23.00,4.00,5.00,Female,1,Followup,20 +5060,C,23.00,3.00,3.00,Female,1,Followup,9 +5061,B,19.00,0.00,0.00,Female,0,Followup,0 +5062,B,20.00,2.00,1.00,Female,1,Followup,2 +5063,A,24.00,0.00,0.00,Female,0,Followup,0 +5064,B,18.00,1.00,1.00,Female,1,Followup,1 +5065,B,24.00,0.00,0.00,Female,0,Followup,0 +5066,B,30.00,0.00,0.00,Male,0,Followup,0 +5067,A,35.00,2.00,2.00,Male,1,Followup,4 +5071,C,20.00,1.00,1.00,Female,0,Followup,1 +5072,B,20.00,4.00,6.00,Female,1,Followup,24 +5073,B,28.00,7.00,3.00,Female,1,Followup,21 +5075,C,19.00,4.00,5.00,Male,1,Followup,20 +5076,A,18.00,4.00,1.00,Female,1,Followup,4 +5079,A,18.00,10.0,7.00,Female,1,Followup,70 +5081,C,20.00,10.0,7.00,Female,1,Followup,70 +5083,A,22.00,4.00,8.00,Female,1,Followup,32 +5084,A,20.00,0.00,0.00,Female,0,Followup,0 +5094,B,53.00,20.0,2.00,Male,1,Followup,40 +5095,B,34.00,1.00,3.00,Female,1,Followup,3 +5096,A,23.00,10.0,2.00,Female,1,Followup,20 +5098,C,24.00,20.0,1.00,Male,1,Followup,20 +5099,C,20.00,8.00,5.00,Female,1,Followup,40 +5100,B,20.00,3.00,4.00,Female,1,Followup,12 +5102,A,19.00,0.00,0.00,Female,0,Followup,0 +5103,C,19.00,5.00,2.00,Female,1,Followup,10 +5104,B,53.00,24.0,2.00,Female,1,Followup,48 +5105,B,20.00,3.00,2.00,Female,1,Followup,6 +5107,A,20.00,4.00,7.00,Female,1,Followup,28 +5108,B,43.00,9.00,2.00,Female,1,Followup,18 +5110,A,32.00,9.00,1.00,Male,1,Followup,9 +5111,B,24.00,8.00,13.0,Female,1,Followup,104 +5113,B,24.00,5.00,2.00,Female,1,Followup,10 +5115,B,41.00,0.00,0.00,Female,0,Followup,0 +5117,C,21.00,6.00,3.00,Male,1,Followup,18 +5120,C,26.00,10.0,2.00,Female,1,Followup,20 +5121,C,19.00,0.00,0.00,Female,1,Followup,0 +5122,B,32.00,8.00,10.0,Male,1,Followup,80 +5125,C,21.00,0.00,0.00,Female,0,Followup,0 +5127,C,22.00,28.0,2.00,Female,1,Followup,56 +5128,C,32.00,0.00,0.00,Female,0,Followup,0 +5131,B,35.00,6.00,10.0,Female,1,Followup,60 +5132,B,18.00,2.00,6.00,Female,1,Followup,12 +5133,C,19.00,7.00,10.0,Male,1,Followup,70 +5134,A,19.00,4.00,4.00,Female,1,Followup,16 +5135,A,21.00,0.00,0.00,Female,1,Followup,0 +5140,C,20.00,3.00,8.00,Female,1,Followup,24 +5141,B,18.00,2.00,4.00,Female,1,Followup,8 +5142,B,26.00,20.0,1.00,Female,1,Followup,20 +5145,B,36.00,1.00,1.00,Male,0,Followup,1 +5146,A,26.00,0.00,0.00,Female,0,Followup,0 +5147,B,46.00,0.00,0.00,Male,0,Followup,0 +5148,A,21.00,2.00,7.00,Male,0,Followup,14 +5151,C,19.00,0.00,0.00,Male,1,Followup,0 +5152,B,22.00,8.00,1.00,Female,1,Followup,8 +5157,C,32.00,10.0,1.00,Female,1,Followup,10 +5159,C,19.00,2.00,1.00,Male,0,Followup,2 +5160,A,53.00,0.00,0.00,Female,0,Followup,0 +5163,B,23.00,3.00,1.00,Male,1,Followup,3 +5165,B,18.00,9.00,1.00,Female,1,Followup,9 +5166,C,32.00,1.00,3.00,Male,1,Followup,3 +5168,B,23.00,7.00,10.0,Male,1,Followup,70 +5169,C,24.00,12.0,4.00,Male,1,Followup,48 +5172,A,71.00,10.0,1.00,Female,1,Followup,10 +5174,A,21.00,1.00,1.00,Female,0,Followup,1 +5176,B,20.00,7.00,13.0,Male,1,Followup,91 +5177,B,19.00,0.00,0.00,Male,0,Followup,0 +5180,B,18.00,5.00,2.00,Male,1,Followup,10 +5184,C,20.00,2.00,2.00,Female,1,Followup,4 +5185,A,19.00,0.00,0.00,Female,0,Followup,0 +5186,B,19.00,2.00,2.00,Female,1,Followup,4 +5187,C,19.00,5.00,2.00,Male,1,Followup,10 +5189,A,21.00,2.00,2.00,Male,1,Followup,4 +5190,A,20.00,1.00,3.00,Male,1,Followup,3 +5193,A,19.00,1.00,1.00,Female,0,Followup,1 +5194,A,19.00,0.00,0.00,Female,0,Followup,0 +5197,B,20.00,3.00,4.00,Female,1,Followup,12 +5201,A,22.00,4.00,10.0,Male,1,Followup,40 +5202,A,26.00,10.0,2.00,Male,1,Followup,20 +5203,C,26.00,0.00,0.00,Female,1,Followup,0 +5207,A,20.00,4.00,5.00,Female,1,Followup,20 +5208,B,21.00,2.00,4.00,Female,1,Followup,8 +5209,C,19.00,1.00,5.00,Male,1,Followup,5 +5211,B,18.00,18.0,1.00,Female,1,Followup,18 +5212,A,18.00,0.00,0.00,Male,0,Followup,0 +5216,A,23.00,1.00,1.00,Female,0,Followup,1 +5218,B,53.00,28.0,1.00,Male,1,Followup,28 +5219,A,29.00,8.00,5.00,Male,1,Followup,40 +5223,B,32.00,15.0,4.00,Male,1,Followup,60 +5227,B,24.00,2.00,2.00,Female,1,Followup,4 +5231,C,21.00,11.0,8.00,Female,1,Followup,88 +5232,A,29.00,8.00,2.00,Male,1,Followup,16 +5233,B,23.00,2.00,4.00,Female,1,Followup,8 +5235,C,25.00,3.00,4.00,Male,1,Followup,12 +5236,C,20.00,4.00,10.0,Male,1,Followup,40 +5237,C,18.00,1.00,1.00,Female,1,Followup,1 +5238,B,25.00,1.00,4.00,Male,0,Followup,4 +5240,B,48.00,5.00,1.00,Female,1,Followup,5 +5241,C,18.00,4.00,2.00,Female,1,Followup,8 +5245,A,21.00,25.0,5.00,Female,1,Followup,125 +5246,A,29.00,6.00,4.00,Female,1,Followup,24 +5249,B,20.00,1.00,1.00,Female,0,Followup,1 +5252,A,18.00,7.00,1.00,Male,1,Followup,7 +5255,B,21.00,2.00,1.00,Female,1,Followup,2 +5257,C,21.00,8.00,6.00,Male,1,Followup,48 +5258,A,25.00,20.0,2.00,Female,1,Followup,40 +5264,C,19.00,8.00,6.00,Female,1,Followup,48 +5265,A,21.00,6.00,4.00,Female,1,Followup,24 +5267,C,19.00,3.00,1.00,Female,1,Followup,3 +5269,A,18.00,2.00,2.00,Female,1,Followup,4 +5271,B,19.00,0.00,0.00,Female,1,Followup,0 +5272,B,23.00,7.00,2.00,Male,1,Followup,14 +5273,B,19.00,6.00,4.00,Male,1,Followup,24 +5275,B,19.00,0.00,0.00,Female,0,Followup,0 +5277,C,21.00,3.00,3.00,Male,1,Followup,9 +5278,C,24.00,7.00,3.00,Female,1,Followup,21 +5280,C,20.00,1.00,3.00,Female,0,Followup,3 +5282,A,23.00,9.00,2.00,Male,1,Followup,18 +5283,A,26.00,7.00,2.00,Female,1,Followup,14 +5285,B,19.00,6.00,3.00,Female,1,Followup,18 +5288,A,20.00,7.00,2.00,Male,1,Followup,14 +5289,A,23.00,10.0,1.00,Male,1,Followup,10 +5290,C,19.00,3.00,2.00,Female,0,Followup,6 +5291,C,23.00,0.00,0.00,Male,0,Followup,0 +5293,C,23.00,1.00,1.00,Female,1,Followup,1 +5295,A,20.00,4.00,3.00,Female,1,Followup,12 +5296,C,20.00,0.00,0.00,Female,0,Followup,0 +5298,B,23.00,5.00,2.00,Female,1,Followup,10 +5299,C,24.00,4.00,2.00,Female,1,Followup,8 +5300,C,21.00,4.00,2.00,Female,1,Followup,8 +5302,B,21.00,3.00,2.00,Female,1,Followup,6 +5305,B,27.00,2.00,15.0,Male,1,Followup,30 +5306,C,20.00,2.00,3.00,Female,1,Followup,6 +5307,C,21.00,3.00,2.00,Female,0,Followup,6 +5308,B,28.00,0.00,0.00,Male,0,Followup,0 +5309,B,20.00,0.00,0.00,Female,1,Followup,0 +5310,C,37.00,21.0,8.00,Male,1,Followup,168 +5312,B,19.00,0.00,0.00,Female,0,Followup,0 +5313,B,21.00,14.0,2.00,Female,1,Followup,28 +5314,B,23.00,4.00,2.00,Female,1,Followup,8 +5315,A,19.00,0.00,0.00,Male,1,Followup,0 +5316,A,56.00,20.0,1.00,Female,1,Followup,20 +5323,C,19.00,2.00,1.00,Male,1,Followup,2 +5324,A,18.00,0.00,0.00,Male,0,Followup,0 +5326,A,20.00,4.00,2.00,Female,1,Followup,8 +5328,B,19.00,0.00,0.00,Male,1,Followup,0 +5331,C,19.00,1.00,1.00,Female,1,Followup,1 +5335,B,19.00,1.00,6.00,Female,0,Followup,6 +5339,A,25.00,0.00,0.00,Female,0,Followup,0 +5340,A,20.00,7.00,13.0,Male,1,Followup,91 +5344,B,20.00,3.00,5.00,Female,1,Followup,15 +5345,C,55.00,3.00,2.00,Female,1,Followup,6 +5347,C,19.00,1.00,4.00,Female,1,Followup,4 +5348,A,51.00,2.00,2.00,Female,0,Followup,4 +5351,A,25.00,5.00,5.00,Male,1,Followup,25 +5353,C,18.00,0.00,0.00,Female,0,Followup,0 +5357,B,30.00,2.00,1.00,Female,1,Followup,2 +5359,C,19.00,2.00,15.0,Male,1,Followup,30 +5363,B,31.00,6.00,5.00,Male,1,Followup,30 +5364,B,19.00,3.00,6.00,Female,1,Followup,18 +5368,C,18.00,3.00,8.00,Female,1,Followup,24 +5372,C,21.00,2.00,1.00,Female,1,Followup,2 +5376,C,18.00,2.00,3.00,Female,1,Followup,6 +5377,C,20.00,0.00,0.00,Female,0,Followup,0 +5380,C,20.00,1.00,1.00,Female,0,Followup,1 +5382,C,20.00,9.00,8.00,Male,1,Followup,72 +5383,A,19.00,12.0,2.00,Male,1,Followup,24 +5386,C,35.00,16.0,1.00,Male,1,Followup,16 +5388,B,47.00,0.00,0.00,Female,0,Followup,0 +5389,A,19.00,4.00,1.00,Male,1,Followup,4 +5392,B,31.00,28.0,2.00,Male,1,Followup,56 +5397,C,61.00,25.0,2.00,Female,1,Followup,50 +5398,B,18.00,0.00,0.00,Female,0,Followup,0 +5399,B,24.00,1.00,1.00,Male,1,Followup,1 +5400,C,27.00,3.00,2.00,Male,1,Followup,6 +5402,A,49.00,2.00,1.00,Female,1,Followup,2 +5403,B,20.00,2.00,12.0,Male,1,Followup,24 +5404,B,55.00,8.00,2.00,Male,1,Followup,16 +5406,B,19.00,5.00,6.00,Female,1,Followup,30 +5411,A,26.00,1.00,1.00,Female,1,Followup,1 +5412,A,22.00,1.00,1.00,Female,1,Followup,1 +5413,B,51.00,19.0,1.00,Female,1,Followup,19 +5415,C,19.00,0.00,0.00,Female,1,Followup,0 +5417,C,51.00,23.0,4.00,Male,1,Followup,92 +5418,C,21.00,1.00,1.00,Female,0,Followup,1 +5421,C,51.00,0.00,0.00,Female,1,Followup,0 +5422,C,19.00,1.00,1.00,Female,1,Followup,1 +5427,B,22.00,0.00,0.00,Female,1,Followup,0 +5428,A,20.00,0.00,0.00,Male,1,Followup,0 +5430,A,28.00,8.00,3.00,Female,1,Followup,24 +5433,C,24.00,5.00,6.00,Female,1,Followup,30 +5436,B,20.00,14.0,2.00,Female,1,Followup,28 +5437,C,25.00,9.00,2.00,Female,1,Followup,18 +5438,C,26.00,2.00,1.00,Female,1,Followup,2 +5439,B,24.00,4.00,3.00,Female,1,Followup,12 +5444,C,21.00,5.00,7.00,Female,1,Followup,35 +5445,B,21.00,1.00,10.0,Male,1,Followup,10 +5448,B,19.00,0.00,0.00,Female,0,Followup,0 +5450,C,22.00,18.0,2.00,Male,1,Followup,36 +5456,C,26.00,1.00,1.00,Female,1,Followup,1 +5458,B,31.00,8.00,4.00,Female,1,Followup,32 +5460,C,20.00,0.00,0.00,Female,1,Followup,0 +5461,B,23.00,1.00,6.00,Female,0,Followup,6 +5462,B,18.00,3.00,2.00,Male,1,Followup,6 +5463,C,21.00,0.00,0.00,Female,1,Followup,0 +5464,B,23.00,0.00,0.00,Male,0,Followup,0 +5465,A,22.00,4.00,2.00,Male,1,Followup,8 +5466,C,39.00,0.00,0.00,Female,0,Followup,0 +5467,C,38.00,2.00,1.00,Female,1,Followup,2 +5468,A,38.00,3.00,3.00,Male,1,Followup,9 +5470,B,20.00,0.00,0.00,Female,0,Followup,0 +5471,A,19.00,3.00,3.00,Female,1,Followup,9 +5474,B,20.00,1.00,2.00,Female,0,Followup,2 +5475,A,34.00,8.00,2.00,Male,1,Followup,16 +5476,B,24.00,1.00,6.00,Female,1,Followup,6 +5477,B,21.00,0.00,0.00,Male,1,Followup,0 +5479,A,18.00,0.00,0.00,Male,1,Followup,0 +5480,A,18.00,6.00,8.00,Female,1,Followup,48 +5481,B,21.00,0.00,0.00,Male,1,Followup,0 +5482,B,21.00,2.00,2.00,Female,1,Followup,4 +5483,B,18.00,2.00,2.00,Male,1,Followup,4 +5484,A,20.00,1.00,1.00,Female,1,Followup,1 +5486,A,24.00,2.00,1.00,Female,1,Followup,2 +5487,C,21.00,4.00,7.00,Female,1,Followup,28 +5488,A,20.00,5.00,1.00,Female,1,Followup,5 +5489,A,30.00,0.00,0.00,Male,0,Followup,0 +5490,C,22.00,7.00,5.00,Female,1,Followup,35 +5491,B,24.00,0.00,0.00,Female,0,Followup,0 +5492,A,52.00,0.00,0.00,Female,1,Followup,0 +5493,A,21.00,5.00,3.00,Male,1,Followup,15 +5494,A,21.00,3.00,1.00,Female,1,Followup,3 +5495,A,20.00,2.00,6.00,Male,1,Followup,12 +5496,C,21.00,3.00,2.00,Male,1,Followup,6 +5497,B,23.00,5.00,10.0,Female,1,Followup,50 +5498,B,19.00,0.00,0.00,Female,0,Followup,0 +5499,A,24.00,0.00,0.00,Male,0,Followup,0 +5500,B,18.00,3.00,5.00,Female,1,Followup,15 +5501,A,20.00,5.00,6.00,Male,1,Followup,30 +5502,A,20.00,4.00,4.00,Female,1,Followup,16 +5503,A,22.00,10.0,6.00,Male,1,Followup,60 +5506,C,23.00,1.00,10.0,Male,1,Followup,10 +5510,A,19.00,7.00,5.00,Female,1,Followup,35 +5511,C,31.00,7.00,3.00,Male,1,Followup,21 +5512,C,19.00,3.00,7.00,Female,1,Followup,21 +5513,A,35.00,0.00,0.00,Female,1,Followup,0 +5515,C,19.00,0.00,0.00,Male,0,Followup,0 +5516,A,20.00,0.00,0.00,Female,0,Followup,0 +5517,A,29.00,4.00,2.00,Female,1,Followup,8 +5518,B,53.00,22.0,3.00,Male,1,Followup,66 +5520,C,21.00,5.00,8.00,Female,1,Followup,40 +5521,B,20.00,0.00,0.00,Female,0,Followup,0 +5522,B,20.00,12.0,3.00,Female,1,Followup,36 +5523,A,20.00,3.00,2.00,Female,0,Followup,6 +5524,A,41.00,12.0,1.00,Male,1,Followup,12 +5525,A,24.00,2.00,5.00,Female,1,Followup,10 +5527,B,19.00,2.00,5.00,Female,1,Followup,10 +5528,A,32.00,4.00,1.00,Female,1,Followup,4 +5529,C,18.00,3.00,3.00,Female,1,Followup,9 +5530,C,57.00,0.00,0.00,Female,0,Followup,0 +5531,B,19.00,0.00,0.00,Male,0,Followup,0 +5532,C,44.00,10.0,3.00,Female,1,Followup,30 +5533,C,44.00,3.00,1.00,Female,1,Followup,3 +5537,C,23.00,0.00,0.00,Male,1,Followup,0 +5538,B,19.00,4.00,4.00,Female,1,Followup,16 +5540,B,21.00,0.00,0.00,Female,1,Followup,0 +5541,A,56.00,12.0,1.00,Male,1,Followup,12 +5542,B,19.00,0.00,0.00,Male,0,Followup,0 +5543,C,19.00,1.00,4.00,Female,1,Followup,4 +5544,A,25.00,10.0,3.00,Female,1,Followup,30 +5546,B,22.00,2.00,24.0,Female,1,Followup,48 +5547,C,21.00,6.00,2.00,Female,1,Followup,12 +5548,A,22.00,2.00,3.00,Male,1,Followup,6 +5549,C,18.00,0.00,0.00,Female,0,Followup,0 +5550,B,18.00,12.0,10.0,Female,1,Followup,120 +5553,A,19.00,2.00,1.00,Male,1,Followup,2 +5555,B,22.00,0.00,0.00,Female,0,Followup,0 +5556,C,24.00,20.0,1.00,Female,1,Followup,20 +5557,B,25.00,0.00,0.00,Female,0,Followup,0 +5558,B,20.00,5.00,5.00,Female,1,Followup,25 +5559,A,42.00,1.00,3.00,Female,1,Followup,3 +5560,B,20.00,3.00,2.00,Female,0,Followup,6 +5562,C,30.00,0.00,0.00,Female,1,Followup,0 +5563,A,20.00,10.0,3.00,Female,1,Followup,30 +5565,C,39.00,7.00,2.00,Male,1,Followup,14 +5566,A,26.00,4.00,4.00,Male,1,Followup,16 +5568,A,21.00,0.00,0.00,Female,0,Followup,0 +5569,A,24.00,3.00,2.00,Female,1,Followup,6 +5572,A,44.00,6.00,3.00,Female,1,Followup,18 +5574,B,18.00,1.00,10.0,Male,1,Followup,10 +5575,A,18.00,0.00,0.00,Female,0,Followup,0 +5576,B,53.00,2.00,2.00,Female,1,Followup,4 +5578,A,23.00,1.00,4.00,Male,1,Followup,4 +5579,C,43.00,0.00,0.00,Female,0,Followup,0 +5580,B,48.00,2.00,1.00,Male,1,Followup,2 +5581,B,22.00,0.00,0.00,Female,1,Followup,0 +5582,B,21.00,2.00,1.00,Male,1,Followup,2 +5583,B,34.00,2.00,8.00,Female,1,Followup,16 +5585,C,23.00,9.00,5.00,Female,1,Followup,45 +5587,A,42.00,12.0,1.00,Female,1,Followup,12 +5588,B,44.00,18.0,1.00,Female,1,Followup,18 +5589,C,21.00,1.00,1.00,Female,1,Followup,1 +5590,A,25.00,0.00,0.00,Female,0,Followup,0 +5591,A,26.00,2.00,2.00,Male,1,Followup,4 +5592,C,21.00,6.00,1.00,Male,1,Followup,6 +5593,C,22.00,0.00,0.00,Male,1,Followup,0 +5594,B,22.00,10.0,10.0,Male,1,Followup,100 +5595,B,21.00,4.00,6.00,Female,1,Followup,24 +5596,B,25.00,3.00,3.00,Female,1,Followup,9 +5597,A,35.00,0.00,0.00,Female,1,Followup,0 +5599,B,38.00,0.00,0.00,Male,0,Followup,0 +5601,B,18.00,0.00,0.00,Male,0,Followup,0 +5602,B,35.00,20.0,7.00,Male,1,Followup,140 +5603,B,23.00,5.00,2.00,Female,1,Followup,10 +5604,A,23.00,2.00,1.00,Female,1,Followup,2 +5605,C,18.00,1.00,8.00,Female,1,Followup,8 +5606,C,21.00,1.00,1.00,Female,1,Followup,1 +5607,A,22.00,0.00,0.00,Male,0,Followup,0 +5608,A,36.00,12.0,1.00,Female,1,Followup,12 +5610,A,35.00,1.00,1.00,Male,1,Followup,1 +5612,B,40.00,0.00,0.00,Female,0,Followup,0 +5613,B,22.00,3.00,3.00,Female,1,Followup,9 +5615,C,33.00,0.00,0.00,Male,0,Followup,0 +5616,A,26.00,8.00,8.00,Male,1,Followup,64 +5617,B,19.00,0.00,0.00,Female,1,Followup,0 +5618,C,18.00,1.00,2.00,Male,1,Followup,2 +5619,C,23.00,1.00,2.00,Male,1,Followup,2 +5620,A,25.00,2.00,1.00,Female,1,Followup,2 +5621,C,39.00,6.00,3.00,Female,1,Followup,18 +5623,C,35.00,1.00,2.00,Female,1,Followup,2 +5624,A,18.00,1.00,1.00,Female,1,Followup,1 +5625,A,24.00,0.00,0.00,Female,1,Followup,0 +5626,C,21.00,3.00,5.00,Female,1,Followup,15 +5627,B,31.00,12.0,1.00,Female,1,Followup,12 +5629,C,20.00,0.00,0.00,Female,0,Followup,0 +5631,A,34.00,1.00,1.00,Female,0,Followup,1 +5635,A,18.00,4.00,4.00,Female,1,Followup,16 +5636,B,19.00,3.00,2.00,Female,1,Followup,6 +5637,C,24.00,0.00,0.00,Female,1,Followup,0 +5638,B,25.00,0.00,0.00,Female,0,Followup,0 +5640,C,23.00,0.00,0.00,Female,0,Followup,0 +5641,B,20.00,3.00,3.00,Female,1,Followup,9 +5642,C,30.00,4.00,4.00,Female,1,Followup,16 +5643,C,26.00,0.00,0.00,Female,0,Followup,0 +5644,A,22.00,3.00,3.00,Female,1,Followup,9 +5645,A,20.00,1.00,1.00,Female,1,Followup,1 +5647,A,24.00,14.0,2.00,Male,1,Followup,28 +5648,A,20.00,2.00,6.00,Female,1,Followup,12 +5649,B,18.00,0.00,0.00,Male,0,Followup,0 +5650,C,20.00,4.00,3.00,Female,1,Followup,12 +5651,A,22.00,16.0,4.00,Male,1,Followup,64 +5655,B,20.00,10.0,4.00,Male,1,Followup,40 +5656,C,22.00,5.00,2.00,Female,1,Followup,10 +5657,C,23.00,0.00,0.00,Female,1,Followup,0 +5659,A,21.00,0.00,0.00,Male,1,Followup,0 +5660,C,20.00,10.0,1.00,Female,1,Followup,10 +5661,B,21.00,4.00,4.00,Female,1,Followup,16 +5662,C,22.00,4.00,2.00,Female,1,Followup,8 +5663,C,20.00,0.00,0.00,Male,0,Followup,0 +5664,C,21.00,8.00,5.00,Female,1,Followup,40 +5665,A,20.00,7.00,3.00,Female,1,Followup,21 +5666,A,22.00,1.00,2.00,Female,1,Followup,2 +5669,C,21.00,2.00,1.00,Female,1,Followup,2 +5670,A,30.00,5.00,1.00,Male,1,Followup,5 +5671,A,21.00,5.00,2.00,Female,1,Followup,10 +5672,A,20.00,3.00,3.00,Female,1,Followup,9 +5673,B,21.00,4.00,4.00,Male,1,Followup,16 +5674,B,20.00,3.00,4.00,Female,1,Followup,12 +5675,A,24.00,19.0,4.00,Female,1,Followup,76 +5677,C,26.00,4.00,2.00,Female,1,Followup,8 +5678,A,20.00,1.00,1.00,Male,1,Followup,1 +5679,C,19.00,5.00,4.00,Male,0,Followup,20 +5681,C,30.00,0.00,0.00,Male,0,Followup,0 +5682,C,23.00,0.00,0.00,Female,0,Followup,0 +5683,B,22.00,4.00,2.00,Female,1,Followup,8 +5684,C,22.00,3.00,4.00,Male,1,Followup,12 +5685,A,20.00,7.00,1.00,Male,1,Followup,7 +5686,B,24.00,4.00,5.00,Female,1,Followup,20 +5687,C,37.00,6.00,4.00,Female,1,Followup,24 +5688,A,20.00,4.00,3.00,Female,1,Followup,12 +5689,A,23.00,10.0,5.00,Female,1,Followup,50 +5691,A,23.00,7.00,2.00,Female,1,Followup,14 +5693,C,35.00,2.00,1.00,Male,1,Followup,2 +5694,B,38.00,28.0,5.00,Male,1,Followup,140 +5695,C,23.00,3.00,1.00,Female,1,Followup,3 +5696,C,19.00,3.00,2.00,Female,0,Followup,6 +5697,C,21.00,3.00,2.00,Female,1,Followup,6 +5698,C,19.00,4.00,6.00,Female,1,Followup,24 +5700,B,18.00,2.00,3.00,Male,1,Followup,6 +5701,B,25.00,7.00,1.00,Male,1,Followup,7 +5703,B,19.00,2.00,5.00,Female,1,Followup,10 +5704,B,45.00,2.00,1.00,Female,1,Followup,2 +5705,A,37.00,3.00,2.00,Male,0,Followup,6 +5706,B,42.00,0.00,0.00,Female,0,Followup,0 +5707,B,23.00,4.00,1.00,Female,1,Followup,4 +5708,C,18.00,1.00,2.00,Male,1,Followup,2 +5709,B,25.00,1.00,1.00,Male,0,Followup,1 +5710,B,36.00,0.00,0.00,Male,0,Followup,0 +5711,A,21.00,3.00,2.00,Female,1,Followup,6 +5713,B,25.00,3.00,2.00,Female,1,Followup,6 +5715,C,24.00,3.00,4.00,Female,1,Followup,12 +5716,A,29.00,2.00,1.00,Female,0,Followup,2 +5717,B,29.00,14.0,2.00,Female,1,Followup,28 +5719,B,21.00,6.00,2.00,Female,1,Followup,12 +5720,B,37.00,8.00,4.00,Male,1,Followup,32 +5721,C,20.00,5.00,2.00,Female,1,Followup,10 +5724,B,21.00,3.00,2.00,Female,1,Followup,6 +5725,B,28.00,1.00,4.00,Female,1,Followup,4 +5726,C,24.00,0.00,0.00,Male,0,Followup,0 +5727,B,18.00,16.0,1.00,Male,1,Followup,16 +5729,C,24.00,6.00,3.00,Female,1,Followup,18 +5730,C,20.00,0.00,0.00,Male,1,Followup,0 +5731,A,34.00,4.00,1.00,Male,0,Followup,4 +5733,B,21.00,0.00,0.00,Female,1,Followup,0 +5734,B,19.00,1.00,1.00,Female,1,Followup,1 +5736,A,21.00,0.00,0.00,Male,0,Followup,0 +5739,A,21.00,2.00,3.00,Female,1,Followup,6 +5740,A,22.00,12.0,3.00,Female,1,Followup,36 +5741,C,20.00,5.00,3.00,Female,1,Followup,15 +5743,B,21.00,3.00,7.00,Female,1,Followup,21 +5746,B,19.00,12.0,2.00,Female,1,Followup,24 +5747,A,21.00,1.00,1.00,Female,0,Followup,1 +5748,C,19.00,2.00,3.00,Male,1,Followup,6 +5749,A,23.00,0.00,0.00,Female,0,Followup,0 +5750,C,19.00,3.00,5.00,Female,0,Followup,15 +5751,C,34.00,0.00,0.00,Male,0,Followup,0 +5752,A,22.00,5.00,12.0,Male,1,Followup,60 +5753,C,21.00,2.00,1.00,Female,0,Followup,2 +5754,C,32.00,5.00,5.00,Female,1,Followup,25 +5755,B,20.00,5.00,9.00,Female,1,Followup,45 +5757,B,19.00,3.00,7.00,Female,1,Followup,21 +5758,A,23.00,0.00,0.00,Female,1,Followup,0 +5760,C,18.00,8.00,10.0,Male,1,Followup,80 +5762,B,20.00,3.00,4.00,Female,1,Followup,12 +5763,C,25.00,4.00,2.00,Female,1,Followup,8 +5765,B,22.00,4.00,1.00,Female,1,Followup,4 +5766,C,41.00,20.0,1.00,Female,1,Followup,20 +5768,B,18.00,3.00,1.00,Female,1,Followup,3 +5769,A,36.00,0.00,0.00,Female,0,Followup,0 +5770,C,30.00,8.00,2.00,Female,1,Followup,16 +5771,B,23.00,7.00,1.00,Male,1,Followup,7 +5773,C,38.00,1.00,1.00,Female,0,Followup,1 +5774,B,19.00,2.00,2.00,Female,1,Followup,4 +5776,A,23.00,0.00,0.00,Female,0,Followup,0 +5777,A,21.00,12.0,4.00,Female,1,Followup,48 +5778,B,24.00,28.0,2.00,Female,1,Followup,56 +5779,A,22.00,6.00,2.00,Male,1,Followup,12 +5781,C,27.00,0.00,0.00,Male,1,Followup,0 +5782,A,21.00,3.00,3.00,Male,1,Followup,9 +5784,C,22.00,5.00,2.00,Female,1,Followup,10 +5785,B,28.00,0.00,0.00,Male,0,Followup,0 +5786,B,21.00,4.00,3.00,Female,1,Followup,12 +5787,B,20.00,6.00,6.00,Female,1,Followup,36 +5788,B,54.00,8.00,3.00,Male,1,Followup,24 +5789,B,18.00,7.00,2.00,Female,1,Followup,14 +5790,A,19.00,4.00,5.00,Female,0,Followup,20 +5791,C,33.00,4.00,3.00,Male,1,Followup,12 +5793,C,21.00,3.00,1.00,Female,1,Followup,3 +5794,A,18.00,5.00,11.0,Male,1,Followup,55 +5795,A,22.00,2.00,5.00,Female,0,Followup,10 +5798,B,24.00,4.00,2.00,Female,1,Followup,8 +5799,C,21.00,2.00,6.00,Female,1,Followup,12 +5801,B,20.00,16.0,3.00,Female,1,Followup,48 +5802,C,21.00,5.00,6.00,Male,1,Followup,30 +5803,C,35.00,28.0,2.00,Female,1,Followup,56 +5805,B,21.00,0.00,0.00,Female,0,Followup,0 +5806,A,38.00,0.00,0.00,Female,0,Followup,0 +5808,B,34.00,20.0,3.00,Male,1,Followup,60 +5810,A,23.00,0.00,0.00,Female,1,Followup,0 +5811,A,26.00,14.0,2.00,Male,1,Followup,28 +5814,B,22.00,19.0,3.00,Female,1,Followup,57 +5815,C,32.00,0.00,0.00,Female,0,Followup,0 +5816,A,49.00,0.00,0.00,Female,0,Followup,0 +5817,C,21.00,1.00,1.00,Female,0,Followup,1 +5819,A,22.00,0.00,0.00,Female,0,Followup,0 +5820,C,21.00,5.00,4.00,Female,1,Followup,20 +5821,A,35.00,0.00,0.00,Male,0,Followup,0 +5822,B,40.00,14.0,1.00,Female,1,Followup,14 +5824,C,24.00,2.00,3.00,Female,1,Followup,6 +5825,A,22.00,3.00,4.00,Male,1,Followup,12 +5826,C,20.00,3.00,4.00,Female,1,Followup,12 +5827,C,19.00,25.0,7.00,Female,1,Followup,175 +5830,C,28.00,6.00,1.00,Female,1,Followup,6 +5831,B,24.00,18.0,1.00,Female,1,Followup,18 +5832,C,21.00,3.00,2.00,Female,1,Followup,6 +5833,B,22.00,3.00,2.00,Male,1,Followup,6 +5834,C,19.00,4.00,12.0,Female,1,Followup,48 +5835,B,20.00,3.00,3.00,Female,1,Followup,9 +5836,A,21.00,1.00,2.00,Female,1,Followup,2 +5837,C,23.00,7.00,4.00,Female,1,Followup,28 +5839,A,24.00,4.00,1.00,Male,0,Followup,4 +5841,B,23.00,1.00,14.0,Male,1,Followup,14 +5842,C,25.00,0.00,0.00,Female,0,Followup,0 +5843,B,18.00,0.00,0.00,Female,0,Followup,0 +5844,A,21.00,0.00,0.00,Female,0,Followup,0 +5845,B,36.00,7.00,1.00,Female,1,Followup,7 +5848,A,22.00,3.00,2.00,Male,1,Followup,6 +5850,C,21.00,3.00,2.00,Female,1,Followup,6 +5851,A,22.00,4.00,3.00,Female,1,Followup,12 +5853,B,29.00,4.00,2.00,Female,1,Followup,8 +5854,C,22.00,0.00,0.00,Female,0,Followup,0 +5855,B,23.00,4.00,8.00,Female,1,Followup,32 +5857,B,34.00,6.00,2.00,Female,1,Followup,12 +5858,B,20.00,1.00,1.00,Female,0,Followup,1 +5859,A,22.00,3.00,3.00,Male,1,Followup,9 +5860,C,21.00,9.00,1.00,Female,1,Followup,9 +5861,A,43.00,4.00,1.00,Female,0,Followup,4 +5863,C,20.00,10.0,4.00,Male,1,Followup,40 +5864,B,25.00,0.00,0.00,Female,1,Followup,0 +5865,C,22.00,0.00,0.00,Female,0,Followup,0 +5867,A,38.00,20.0,2.00,Male,1,Followup,40 +5868,C,18.00,1.00,1.00,Female,1,Followup,1 +5869,B,33.00,8.00,1.00,Male,1,Followup,8 +5870,A,20.00,5.00,5.00,Male,1,Followup,25 +5871,C,20.00,6.00,3.00,Male,1,Followup,18 +5872,A,33.00,2.00,1.00,Female,0,Followup,2 +5875,A,21.00,10.0,3.00,Male,1,Followup,30 +5876,C,18.00,6.00,8.00,Female,1,Followup,48 +5877,A,21.00,2.00,2.00,Female,1,Followup,4 +5878,C,28.00,5.00,2.00,Female,1,Followup,10 +5879,A,20.00,4.00,1.00,Male,1,Followup,4 +5880,A,18.00,8.00,6.00,Female,1,Followup,48 +5881,B,21.00,4.00,4.00,Female,1,Followup,16 +5882,B,20.00,8.00,9.00,Male,1,Followup,72 +5883,C,45.00,9.00,2.00,Female,1,Followup,18 +5884,C,18.00,4.00,2.00,Female,1,Followup,8 +5885,A,22.00,6.00,4.00,Male,1,Followup,24 +5887,A,20.00,4.00,4.00,Female,1,Followup,16 +5888,A,24.00,1.00,1.00,Female,1,Followup,1 +5889,A,21.00,17.0,6.00,Female,1,Followup,102 +5890,B,33.00,0.00,0.00,Female,0,Followup,0 +5891,B,53.00,28.0,3.00,Female,1,Followup,84 +5894,C,37.00,6.00,1.00,Male,1,Followup,6 +5895,A,19.00,11.0,7.00,Male,1,Followup,77 +5896,C,19.00,0.00,0.00,Female,1,Followup,0 +5898,B,43.00,12.0,1.00,Female,1,Followup,12 +5899,C,21.00,0.00,0.00,Female,0,Followup,0 +5901,A,29.00,5.00,2.00,Female,1,Followup,10 +5903,C,18.00,4.00,3.00,Female,1,Followup,12 +5904,B,30.00,2.00,2.00,Female,1,Followup,4 +5905,B,26.00,1.00,4.00,Female,1,Followup,4 +5906,A,35.00,22.0,2.00,Male,1,Followup,44 +5907,B,19.00,0.00,0.00,Female,0,Followup,0 +5908,B,27.00,4.00,6.00,Male,1,Followup,24 +5910,B,18.00,0.00,0.00,Female,0,Followup,0 +5911,B,23.00,10.0,4.00,Male,1,Followup,40 +5912,C,19.00,2.00,2.00,Female,1,Followup,4 +5913,B,34.00,13.0,1.00,Female,1,Followup,13 +5914,A,32.00,4.00,1.00,Female,1,Followup,4 +5915,C,23.00,0.00,0.00,Female,0,Followup,0 +5916,A,21.00,4.00,2.00,Male,1,Followup,8 +5917,A,34.00,0.00,0.00,Male,0,Followup,0 +5919,A,32.00,0.00,0.00,Male,0,Followup,0 +5920,A,20.00,8.00,2.00,Female,1,Followup,16 +5921,B,32.00,2.00,1.00,Male,1,Followup,2 +5922,A,22.00,6.00,4.00,Female,1,Followup,24 +5924,C,23.00,3.00,2.00,Male,1,Followup,6 +5925,C,18.00,2.00,1.00,Male,0,Followup,2 +5926,B,24.00,7.00,1.00,Male,1,Followup,7 +5927,A,34.00,2.00,1.00,Female,0,Followup,2 +5929,B,19.00,3.00,3.00,Female,1,Followup,9 +5930,B,25.00,0.00,0.00,Male,0,Followup,0 +5931,C,21.00,0.00,0.00,Female,0,Followup,0 +5933,B,22.00,1.00,8.00,Female,0,Followup,8 +5934,B,20.00,2.00,1.00,Female,1,Followup,2 +5936,C,21.00,9.00,3.00,Male,1,Followup,27 +5938,B,22.00,6.00,8.00,Male,1,Followup,48 +5939,A,25.00,1.00,5.00,Female,1,Followup,5 +5940,B,21.00,2.00,1.00,Male,1,Followup,2 +5941,B,18.00,5.00,10.0,Female,1,Followup,50 +5942,A,24.00,8.00,2.00,Male,1,Followup,16 +5944,C,21.00,6.00,12.0,Female,1,Followup,72 +5945,C,21.00,5.00,1.00,Male,1,Followup,5 +5946,C,46.00,28.0,1.00,Female,1,Followup,28 +5947,B,36.00,0.00,0.00,Female,0,Followup,0 +5948,C,19.00,0.00,0.00,Female,1,Followup,0 +5949,C,20.00,7.00,8.00,Male,1,Followup,56 +5950,B,26.00,6.00,2.00,Female,1,Followup,12 +5951,B,24.00,15.0,1.00,Female,1,Followup,15 +5952,C,19.00,5.00,2.00,Female,1,Followup,10 +5953,B,26.00,4.00,10.0,Male,1,Followup,40 +5954,A,19.00,4.00,7.00,Male,1,Followup,28 +5955,A,33.00,21.0,2.00,Male,1,Followup,42 +5956,B,25.00,20.0,6.00,Male,1,Followup,120 +5958,B,24.00,1.00,3.00,Female,1,Followup,3 +5959,A,20.00,1.00,2.00,Female,1,Followup,2 +5960,C,21.00,5.00,12.0,Male,1,Followup,60 +5961,C,21.00,0.00,0.00,Male,1,Followup,0 +5963,B,18.00,0.00,0.00,Male,0,Followup,0 +5964,B,21.00,0.00,0.00,Female,0,Followup,0 +5965,A,21.00,3.00,1.00,Female,1,Followup,3 +5966,B,25.00,4.00,1.00,Female,1,Followup,4 +5967,C,24.00,6.00,3.00,Female,1,Followup,18 +5968,B,19.00,7.00,2.00,Male,1,Followup,14 +5969,C,25.00,0.00,0.00,Male,1,Followup,0 +5972,A,24.00,1.00,5.00,Female,1,Followup,5 +5973,C,32.00,1.00,1.00,Female,0,Followup,1 +5974,A,24.00,0.00,0.00,Female,0,Followup,0 +5976,A,19.00,1.00,2.00,Female,1,Followup,2 +5977,C,23.00,7.00,2.00,Female,1,Followup,14 +5978,B,28.00,8.00,5.00,Male,1,Followup,40 +5979,B,21.00,3.00,1.00,Female,1,Followup,3 +5980,B,34.00,23.0,2.00,Male,1,Followup,46 +5981,C,25.00,3.00,4.00,Male,1,Followup,12 +5983,C,21.00,0.00,0.00,Female,0,Followup,0 +5984,A,21.00,5.00,2.00,Female,1,Followup,10 +5985,A,22.00,3.00,3.00,Female,1,Followup,9 +5986,C,21.00,5.00,3.00,Male,1,Followup,15 +5987,C,23.00,0.00,0.00,Male,0,Followup,0 +5988,A,24.00,4.00,2.00,Female,1,Followup,8 +5989,B,20.00,4.00,1.00,Female,1,Followup,4 +5990,A,18.00,1.00,3.00,Female,1,Followup,3 +5992,A,24.00,0.00,0.00,Female,0,Followup,0 +5993,B,21.00,4.00,2.00,Female,1,Followup,8 +5994,B,25.00,20.0,1.00,Male,1,Followup,20 +5995,C,18.00,15.0,2.00,Male,1,Followup,30 +5996,C,33.00,2.00,2.00,Male,1,Followup,4 +5997,A,40.00,3.00,2.00,Female,1,Followup,6 +5999,A,21.00,1.00,6.00,Male,1,Followup,6 +6000,B,45.00,0.00,0.00,Male,1,Followup,0 +6003,C,21.00,4.00,3.00,Male,1,Followup,12 +6004,C,22.00,0.00,0.00,Male,0,Followup,0 +6005,A,26.00,10.0,5.00,Female,1,Followup,50 +6006,A,29.00,8.00,3.00,Male,1,Followup,24 +6007,A,40.00,3.00,3.00,Female,1,Followup,9 +6008,B,33.00,0.00,0.00,Male,0,Followup,0 +6010,A,23.00,7.00,2.00,Female,1,Followup,14 +6011,C,47.00,8.00,2.00,Male,1,Followup,16 +6012,A,20.00,4.00,4.00,Male,1,Followup,16 +6013,B,24.00,7.00,1.00,Female,1,Followup,7 +6014,C,19.00,5.00,5.00,Female,1,Followup,25 +6016,C,24.00,9.00,3.00,Female,1,Followup,27 +6017,B,18.00,2.00,8.00,Male,1,Followup,16 +6018,C,21.00,7.00,1.00,Female,1,Followup,7 +6019,A,27.00,1.00,8.00,Female,1,Followup,8 +6020,A,21.00,6.00,6.00,Female,1,Followup,36 +6021,C,31.00,4.00,1.00,Male,1,Followup,4 +6022,B,51.00,13.0,2.00,Female,1,Followup,26 +6023,C,23.00,4.00,6.00,Male,1,Followup,24 +6024,C,21.00,14.0,2.00,Male,1,Followup,28 +6027,B,22.00,8.00,8.00,Male,1,Followup,64 +6028,C,19.00,0.00,0.00,Female,0,Followup,0 +6029,C,20.00,5.00,2.00,Female,1,Followup,10 +6031,B,29.00,10.0,4.00,Female,1,Followup,40 +6032,A,27.00,2.00,4.00,Female,1,Followup,8 +6033,C,19.00,3.00,2.00,Male,1,Followup,6 +6034,A,20.00,8.00,10.0,Male,1,Followup,80 +6036,A,23.00,0.00,0.00,Female,0,Followup,0 +6037,A,20.00,4.00,5.00,Female,1,Followup,20 +6038,A,41.00,8.00,5.00,Female,1,Followup,40 +6039,A,21.00,6.00,6.00,Male,1,Followup,36 +6041,C,21.00,3.00,4.00,Female,1,Followup,12 +6042,B,24.00,22.0,1.00,Female,1,Followup,22 +6043,A,26.00,2.00,1.00,Female,1,Followup,2 +6044,B,26.00,1.00,3.00,Female,1,Followup,3 +6045,C,20.00,10.0,2.00,Female,1,Followup,20 +6046,B,22.00,10.0,2.00,Female,1,Followup,20 +6047,A,30.00,2.00,8.00,Female,1,Followup,16 +6048,B,49.00,1.00,1.00,Male,1,Followup,1 +6049,A,41.00,4.00,2.00,Female,1,Followup,8 +6050,B,19.00,1.00,1.00,Male,1,Followup,1 +6051,C,38.00,16.0,2.00,Male,1,Followup,32 +6052,C,23.00,0.00,0.00,Female,0,Followup,0 +6053,B,25.00,26.0,1.00,Female,1,Followup,26 +6054,C,21.00,4.00,2.00,Female,1,Followup,8 +6055,C,20.00,3.00,5.00,Male,1,Followup,15 +6056,B,54.00,5.00,1.00,Female,1,Followup,5 +6057,B,20.00,0.00,0.00,Female,0,Followup,0 +6058,C,18.00,2.00,3.00,Male,1,Followup,6 +6059,A,18.00,2.00,1.00,Female,1,Followup,2 +6060,C,22.00,0.00,0.00,Male,1,Followup,0 +6061,B,25.00,18.0,1.00,Female,1,Followup,18 +6063,C,26.00,14.0,1.00,Male,1,Followup,14 +6065,A,18.00,1.00,5.00,Male,0,Followup,5 +6066,A,20.00,1.00,2.00,Female,1,Followup,2 +6069,B,22.00,3.00,2.00,Male,1,Followup,6 +6070,C,18.00,8.00,7.00,Male,1,Followup,56 +6072,A,29.00,0.00,0.00,Female,1,Followup,0 +6073,C,20.00,0.00,0.00,Female,0,Followup,0 +6074,C,23.00,0.00,0.00,Female,1,Followup,0 +6075,A,25.00,8.00,8.00,Male,1,Followup,64 +6076,B,20.00,4.00,6.00,Female,1,Followup,24 +6077,B,20.00,10.0,2.00,Male,1,Followup,20 +6078,C,21.00,10.0,2.00,Female,1,Followup,20 +6079,B,19.00,3.00,3.00,Female,0,Followup,9 +6080,C,47.00,2.00,1.00,Female,1,Followup,2 +6082,C,37.00,3.00,2.00,Male,1,Followup,6 +6083,C,20.00,3.00,4.00,Female,1,Followup,12 +6084,B,21.00,4.00,5.00,Female,1,Followup,20 +6085,A,25.00,6.00,4.00,Male,1,Followup,24 +6086,B,18.00,4.00,4.00,Male,1,Followup,16 +6087,C,21.00,15.0,2.00,Male,1,Followup,30 +6088,B,21.00,15.0,1.00,Female,1,Followup,15 +6089,C,20.00,3.00,3.00,Female,1,Followup,9 +6090,A,25.00,0.00,0.00,Male,0,Followup,0 +6091,C,21.00,2.00,2.00,Female,1,Followup,4 +6092,A,25.00,4.00,1.00,Male,1,Followup,4 +6093,A,19.00,5.00,2.00,Female,1,Followup,10 +6095,C,22.00,2.00,3.00,Female,1,Followup,6 +6096,A,41.00,9.00,2.00,Male,1,Followup,18 +6097,C,19.00,0.00,0.00,Male,0,Followup,0 +6098,B,19.00,6.00,8.00,Male,1,Followup,48 +6099,B,31.00,9.00,1.00,Female,1,Followup,9 +6100,C,23.00,7.00,2.00,Male,1,Followup,14 +6101,A,45.00,5.00,1.00,Female,1,Followup,5 +6102,B,20.00,4.00,2.00,Female,1,Followup,8 +6103,B,29.00,7.00,2.00,Female,1,Followup,14 +6107,C,20.00,3.00,2.00,Female,1,Followup,6 +6108,C,20.00,14.0,2.00,Male,1,Followup,28 +6109,A,22.00,0.00,0.00,Female,1,Followup,0 +6111,B,23.00,0.00,0.00,Female,0,Followup,0 +6113,B,22.00,0.00,0.00,Female,0,Followup,0 +6114,C,33.00,3.00,3.00,Male,1,Followup,9 +6116,A,23.00,10.0,1.00,Female,1,Followup,10 +6117,A,19.00,0.00,0.00,Female,0,Followup,0 +6118,C,21.00,1.00,7.00,Male,1,Followup,7 +6119,C,21.00,20.0,2.00,Male,1,Followup,40 +6120,C,21.00,0.00,0.00,Male,0,Followup,0 +6121,B,21.00,7.00,2.00,Male,1,Followup,14 +6122,B,19.00,3.00,8.00,Male,1,Followup,24 +6123,C,20.00,0.00,0.00,Male,0,Followup,0 +6124,A,23.00,8.00,2.00,Male,1,Followup,16 +6125,B,26.00,7.00,4.00,Male,1,Followup,28 +6127,B,23.00,8.00,1.00,Male,1,Followup,8 +6128,B,19.00,7.00,7.00,Male,1,Followup,49 +6129,A,19.00,1.00,1.00,Female,1,Followup,1 +6131,A,22.00,4.00,1.00,Male,1,Followup,4 +6132,B,23.00,6.00,8.00,Female,1,Followup,48 +6133,B,21.00,4.00,4.00,Female,1,Followup,16 +6134,C,23.00,0.00,0.00,Male,0,Followup,0 +6135,B,19.00,2.00,5.00,Male,1,Followup,10 +6136,B,21.00,3.00,3.00,Female,1,Followup,9 +6139,B,46.00,5.00,2.00,Female,1,Followup,10 +6141,A,25.00,14.0,1.00,Female,1,Followup,14 +6143,A,22.00,9.00,6.00,Female,1,Followup,54 +6145,C,39.00,5.00,1.00,Female,1,Followup,5 +6147,C,24.00,7.00,1.00,Female,1,Followup,7 +6149,A,33.00,0.00,0.00,Female,0,Followup,0 +6152,C,18.00,1.00,1.00,Female,1,Followup,1 +6153,A,21.00,1.00,2.00,Female,0,Followup,2 +6154,B,19.00,0.00,0.00,Male,0,Followup,0 +6155,C,44.00,4.00,1.00,Female,1,Followup,4 +6156,B,36.00,6.00,4.00,Female,1,Followup,24 +6157,C,19.00,9.00,4.00,Female,1,Followup,36 +6158,A,21.00,2.00,1.00,Female,1,Followup,2 +6159,B,24.00,9.00,2.00,Female,1,Followup,18 +6161,A,28.00,8.00,2.00,Female,1,Followup,16 +6162,B,22.00,7.00,3.00,Female,1,Followup,21 +6164,B,22.00,7.00,2.00,Female,1,Followup,14 +6165,B,21.00,1.00,8.00,Female,1,Followup,8 +6166,A,23.00,8.00,2.00,Female,1,Followup,16 +6167,A,19.00,1.00,5.00,Male,0,Followup,5 +6168,B,18.00,8.00,5.00,Male,1,Followup,40 +6170,A,28.00,3.00,12.0,Male,1,Followup,36 +6171,C,19.00,5.00,2.00,Female,1,Followup,10 +6172,A,18.00,14.0,3.00,Male,1,Followup,42 +6173,B,22.00,4.00,1.00,Female,1,Followup,4 +6174,B,20.00,3.00,2.00,Female,1,Followup,6 +6177,A,51.00,25.0,2.00,Female,1,Followup,50 +6179,B,21.00,10.0,2.00,Female,1,Followup,20 +6180,C,36.00,4.00,4.00,Male,1,Followup,16 +6182,B,39.00,0.00,0.00,Female,0,Followup,0 +6183,C,25.00,6.00,2.00,Male,1,Followup,12 +6184,A,22.00,3.00,2.00,Female,1,Followup,6 +6186,C,22.00,12.0,5.00,Female,1,Followup,60 +6187,B,23.00,0.00,0.00,Male,1,Followup,0 +6188,A,22.00,8.00,1.00,Female,1,Followup,8 +6189,A,18.00,6.00,6.00,Female,1,Followup,36 +6191,A,21.00,0.00,0.00,Female,0,Followup,0 +6193,A,20.00,3.00,13.0,Male,1,Followup,39 +6194,B,21.00,0.00,0.00,Female,1,Followup,0 +6195,A,32.00,0.00,0.00,Male,0,Followup,0 +6196,B,19.00,5.00,2.00,Female,1,Followup,10 +6197,A,44.00,21.0,2.00,Female,1,Followup,42 +6198,B,22.00,4.00,1.00,Female,1,Followup,4 +6199,B,27.00,3.00,1.00,Male,1,Followup,3 +6202,A,19.00,5.00,4.00,Male,1,Followup,20 +6203,B,21.00,0.00,0.00,Female,0,Followup,0 +6204,B,27.00,0.00,0.00,Female,0,Followup,0 +6205,A,29.00,0.00,0.00,Male,0,Followup,0 +6206,B,20.00,3.00,4.00,Female,1,Followup,12 +6208,B,31.00,0.00,0.00,Female,0,Followup,0 +6209,A,50.00,12.0,2.00,Female,1,Followup,24 +6211,B,37.00,1.00,1.00,Female,1,Followup,1 +6212,B,19.00,5.00,4.00,Female,1,Followup,20 +6213,B,45.00,12.0,2.00,Male,1,Followup,24 +6214,C,19.00,10.0,5.00,Male,1,Followup,50 +6216,A,21.00,21.0,3.00,Male,1,Followup,63 +6217,C,22.00,2.00,2.00,Female,1,Followup,4 +6218,C,21.00,2.00,5.00,Female,1,Followup,10 +6219,B,31.00,10.0,3.00,Male,1,Followup,30 +6220,C,19.00,0.00,0.00,Female,1,Followup,0 +6222,A,23.00,0.00,0.00,Male,0,Followup,0 +6224,C,52.00,0.00,0.00,Female,0,Followup,0 +6225,A,25.00,1.00,7.00,Male,0,Followup,7 +6226,C,26.00,7.00,2.00,Female,1,Followup,14 +6227,C,25.00,0.00,0.00,Female,1,Followup,0 +6228,B,30.00,5.00,2.00,Female,1,Followup,10 +6230,C,47.00,8.00,1.00,Female,1,Followup,8 +6232,C,21.00,7.00,2.00,Female,0,Followup,14 +6233,A,20.00,7.00,2.00,Male,1,Followup,14 +6234,A,18.00,3.00,4.00,Female,0,Followup,12 +6235,C,34.00,10.0,1.00,Male,1,Followup,10 +6236,A,20.00,0.00,0.00,Female,1,Followup,0 +6237,A,21.00,1.00,8.00,Male,1,Followup,8 +6239,B,35.00,1.00,6.00,Male,1,Followup,6 +6241,B,20.00,7.00,4.00,Female,1,Followup,28 +6242,C,28.00,8.00,2.00,Male,1,Followup,16 +6243,A,20.00,5.00,1.00,Female,1,Followup,5 +6244,A,28.00,6.00,2.00,Female,1,Followup,12 +6245,B,25.00,1.00,2.00,Male,1,Followup,2 +6246,C,54.00,0.00,0.00,Female,0,Followup,0 +6247,C,21.00,7.00,4.00,Male,1,Followup,28 +6248,C,18.00,4.00,7.00,Female,1,Followup,28 +6249,B,32.00,0.00,0.00,Male,1,Followup,0 +6250,A,19.00,3.00,2.00,Female,1,Followup,6 +6251,B,20.00,0.00,0.00,Female,0,Followup,0 +6252,B,20.00,4.00,12.0,Male,1,Followup,48 +6254,C,30.00,5.00,6.00,Male,1,Followup,30 +6255,A,20.00,2.00,2.00,Female,1,Followup,4 +6256,A,20.00,0.00,0.00,Female,0,Followup,0 +6257,C,27.00,6.00,2.00,Male,1,Followup,12 +6258,A,53.00,2.00,1.00,Female,1,Followup,2 +6259,A,33.00,14.0,2.00,Male,1,Followup,28 +6260,A,22.00,5.00,3.00,Female,1,Followup,15 +6261,B,19.00,10.0,5.00,Male,1,Followup,50 +6263,C,26.00,1.00,4.00,Female,1,Followup,4 +6264,A,34.00,1.00,1.00,Female,0,Followup,1 +6265,A,20.00,6.00,2.00,Female,1,Followup,12 +6266,C,31.00,20.0,2.00,Female,1,Followup,40 +6268,A,19.00,3.00,11.0,Female,1,Followup,33 +6269,C,48.00,4.00,3.00,Female,1,Followup,12 +6270,B,22.00,0.00,0.00,Female,0,Followup,0 +6271,B,19.00,12.0,2.00,Male,1,Followup,24 +6272,A,24.00,6.00,1.00,Female,1,Followup,6 +6275,A,35.00,8.00,2.00,Female,1,Followup,16 +6276,C,20.00,4.00,4.00,Female,1,Followup,16 +6277,B,43.00,6.00,2.00,Male,1,Followup,12 +6279,A,19.00,3.00,3.00,Female,1,Followup,9 +6280,B,22.00,20.0,2.00,Female,1,Followup,40 +6282,C,19.00,0.00,0.00,Female,1,Followup,0 +6283,A,22.00,0.00,0.00,Male,0,Followup,0 +6285,A,23.00,7.00,1.00,Female,1,Followup,7 +6286,A,22.00,4.00,1.00,Female,1,Followup,4 +6287,C,20.00,4.00,3.00,Female,1,Followup,12 +6288,C,21.00,0.00,0.00,Male,1,Followup,0 +6289,C,20.00,3.00,7.00,Male,1,Followup,21 +6290,B,22.00,4.00,2.00,Female,1,Followup,8 +6291,C,24.00,3.00,2.00,Female,1,Followup,6 +6292,A,22.00,0.00,0.00,Male,1,Followup,0 +6293,C,39.00,16.0,2.00,Male,1,Followup,32 +6295,C,21.00,4.00,3.00,Male,1,Followup,12 +6296,B,27.00,2.00,2.00,Female,1,Followup,4 +6298,C,23.00,7.00,3.00,Male,1,Followup,21 +6299,C,20.00,2.00,1.00,Female,1,Followup,2 +6300,C,22.00,1.00,2.00,Female,1,Followup,2 +6301,B,19.00,2.00,3.00,Female,1,Followup,6 +6302,A,20.00,4.00,6.00,Female,0,Followup,24 +6304,A,23.00,21.0,2.00,Male,1,Followup,42 +6305,A,18.00,4.00,4.00,Female,1,Followup,16 +6306,A,22.00,12.0,2.00,Male,1,Followup,24 +6307,B,51.00,2.00,1.00,Female,1,Followup,2 +6309,A,19.00,0.00,0.00,Female,1,Followup,0 +6310,A,36.00,18.0,1.00,Male,1,Followup,18 +6311,B,18.00,1.00,7.00,Female,1,Followup,7 +6313,A,22.00,1.00,24.0,Male,1,Followup,24 +6314,C,19.00,6.00,2.00,Female,1,Followup,12 +6316,B,35.00,4.00,1.00,Female,1,Followup,4 +6319,C,19.00,2.00,5.00,Female,1,Followup,10 +6321,B,21.00,2.00,6.00,Male,1,Followup,12 +6324,C,29.00,5.00,4.00,Female,0,Followup,20 +6325,C,20.00,5.00,2.00,Female,1,Followup,10 +6326,B,21.00,7.00,2.00,Male,1,Followup,14 +6327,B,40.00,2.00,3.00,Female,1,Followup,6 +6328,B,31.00,14.0,1.00,Female,1,Followup,14 +6329,C,25.00,0.00,0.00,Female,0,Followup,0 +6332,B,21.00,0.00,0.00,Female,1,Followup,0 +6333,A,32.00,8.00,3.00,Male,1,Followup,24 +6334,B,27.00,10.0,2.00,Female,1,Followup,20 +6335,A,34.00,0.00,0.00,Female,0,Followup,0 +6337,A,21.00,3.00,7.00,Female,1,Followup,21 +6338,C,19.00,2.00,4.00,Male,1,Followup,8 +6339,A,22.00,3.00,4.00,Female,1,Followup,12 +6340,B,22.00,0.00,0.00,Female,0,Followup,0 +6341,C,23.00,2.00,2.00,Female,0,Followup,4 +6344,A,21.00,1.00,10.0,Female,1,Followup,10 +6345,A,21.00,1.00,1.00,Female,1,Followup,1 +6346,B,22.00,7.00,5.00,Male,1,Followup,35 +6348,A,21.00,5.00,7.00,Male,1,Followup,35 +6349,B,28.00,2.00,3.00,Female,1,Followup,6 +6350,C,25.00,12.0,2.00,Female,1,Followup,24 +6351,B,24.00,4.00,3.00,Female,1,Followup,12 +6352,A,26.00,0.00,0.00,Female,0,Followup,0 +6353,C,36.00,0.00,0.00,Male,0,Followup,0 +6354,A,25.00,7.00,2.00,Female,1,Followup,14 +6355,C,30.00,8.00,2.00,Female,1,Followup,16 +6356,A,41.00,23.0,1.00,Female,1,Followup,23 +6357,C,26.00,4.00,4.00,Female,1,Followup,16 +6358,B,20.00,3.00,3.00,Male,0,Followup,9 +6359,C,63.00,0.00,0.00,Male,0,Followup,0 +6361,C,51.00,2.00,1.00,Male,1,Followup,2 +6362,B,25.00,2.00,4.00,Female,1,Followup,8 +6365,C,18.00,4.00,6.00,Female,1,Followup,24 +6366,B,52.00,8.00,1.00,Male,1,Followup,8 +6367,B,21.00,0.00,0.00,Female,1,Followup,0 +6368,A,32.00,21.0,4.00,Male,1,Followup,84 +6369,C,20.00,6.00,5.00,Male,1,Followup,30 +6370,C,18.00,4.00,6.00,Female,1,Followup,24 +6371,C,21.00,0.00,0.00,Female,0,Followup,0 +6372,C,19.00,1.00,3.00,Male,0,Followup,3 +6373,B,21.00,7.00,10.0,Male,1,Followup,70 +6374,A,22.00,5.00,3.00,Female,1,Followup,15 +6378,A,21.00,6.00,5.00,Male,1,Followup,30 +6379,A,36.00,1.00,1.00,Male,0,Followup,1 +6380,A,23.00,7.00,2.00,Male,1,Followup,14 +6381,A,21.00,3.00,2.00,Male,1,Followup,6 +6383,C,23.00,4.00,1.00,Female,1,Followup,4 +6384,A,49.00,3.00,2.00,Female,1,Followup,6 +6385,A,24.00,1.00,1.00,Female,1,Followup,1 +6386,C,19.00,0.00,0.00,Female,1,Followup,0 +6387,C,73.00,8.00,2.00,Male,1,Followup,16 +6388,B,22.00,15.0,1.00,Female,1,Followup,15 +6390,C,26.00,20.0,3.00,Female,1,Followup,60 +6391,A,20.00,0.00,0.00,Female,0,Followup,0 +6392,C,41.00,10.0,2.00,Male,1,Followup,20 +6393,C,20.00,3.00,4.00,Female,1,Followup,12 +6394,B,20.00,1.00,1.00,Female,1,Followup,1 +6396,B,18.00,1.00,1.00,Female,0,Followup,1 +6397,A,20.00,3.00,1.00,Female,1,Followup,3 +6399,B,21.00,4.00,7.00,Female,1,Followup,28 +6400,B,21.00,5.00,1.00,Female,1,Followup,5 +6401,A,26.00,4.00,1.00,Female,1,Followup,4 +6402,A,22.00,22.0,3.00,Male,1,Followup,66 +6403,C,19.00,4.00,5.00,Female,1,Followup,20 +6404,A,20.00,0.00,0.00,Male,0,Followup,0 +6405,A,31.00,28.0,2.00,Female,1,Followup,56 +6407,A,27.00,12.0,1.00,Male,1,Followup,12 +6408,C,20.00,0.00,0.00,Female,0,Followup,0 +6409,A,36.00,20.0,2.00,Male,1,Followup,40 +6410,A,29.00,4.00,5.00,Male,1,Followup,20 +6411,B,22.00,2.00,2.00,Male,1,Followup,4 +6412,A,22.00,0.00,0.00,Female,0,Followup,0 +6416,A,25.00,20.0,1.00,Female,1,Followup,20 +6418,C,24.00,5.00,3.00,Male,1,Followup,15 +6420,C,28.00,3.00,1.00,Female,1,Followup,3 +6421,A,20.00,2.00,1.00,Female,1,Followup,2 +6422,C,21.00,5.00,1.00,Female,1,Followup,5 +6423,B,21.00,8.00,2.00,Male,1,Followup,16 +6424,A,23.00,0.00,0.00,Male,0,Followup,0 +6425,A,21.00,0.00,0.00,Male,0,Followup,0 +6427,A,19.00,6.00,5.00,Female,1,Followup,30 +6429,B,20.00,17.0,7.00,Male,1,Followup,119 +6430,A,27.00,2.00,1.00,Male,1,Followup,2 +6431,B,21.00,0.00,0.00,Female,0,Followup,0 +6432,B,38.00,24.0,1.00,Female,1,Followup,24 +6433,B,23.00,0.00,0.00,Male,1,Followup,0 +6435,B,21.00,3.00,2.00,Male,1,Followup,6 +6436,C,26.00,0.00,0.00,Female,0,Followup,0 +6437,A,22.00,3.00,5.00,Female,1,Followup,15 +6439,A,54.00,5.00,2.00,Female,1,Followup,10 +6440,B,20.00,19.0,1.00,Female,1,Followup,19 +6441,C,27.00,4.00,1.00,Female,1,Followup,4 +6442,A,23.00,2.00,4.00,Female,1,Followup,8 +6443,C,22.00,10.0,4.00,Female,1,Followup,40 +6444,B,26.00,2.00,4.00,Female,0,Followup,8 +6445,A,20.00,2.00,7.00,Female,1,Followup,14 +6447,C,18.00,0.00,0.00,Female,0,Followup,0 +6448,C,21.00,6.00,8.00,Female,1,Followup,48 +6449,B,19.00,0.00,0.00,Female,0,Followup,0 +6450,B,20.00,5.00,2.00,Female,1,Followup,10 +6451,C,20.00,10.0,10.0,Female,1,Followup,100 +6452,C,46.00,2.00,2.00,Female,1,Followup,4 +6453,A,21.00,5.00,8.00,Female,1,Followup,40 +6454,A,22.00,4.00,4.00,Female,1,Followup,16 +6456,B,41.00,0.00,0.00,Male,0,Followup,0 +6457,C,22.00,8.00,3.00,Male,1,Followup,24 +6459,B,52.00,4.00,1.00,Female,1,Followup,4 +6460,B,22.00,10.0,5.00,Female,1,Followup,50 +6462,A,18.00,3.00,5.00,Female,1,Followup,15 +6463,A,35.00,2.00,1.00,Male,1,Followup,2 +6464,B,30.00,0.00,0.00,Female,0,Followup,0 +6465,C,20.00,2.00,4.00,Male,0,Followup,8 +6466,B,20.00,4.00,2.00,Female,1,Followup,8 +6468,B,20.00,4.00,5.00,Female,1,Followup,20 +6469,C,36.00,4.00,1.00,Female,1,Followup,4 +6470,C,18.00,4.00,1.00,Female,1,Followup,4 +6471,C,46.00,4.00,3.00,Male,1,Followup,12 +6473,A,20.00,1.00,2.00,Female,1,Followup,2 +6474,A,23.00,13.0,4.00,Female,1,Followup,52 +6475,C,21.00,10.0,5.00,Female,1,Followup,50 +6479,C,30.00,14.0,1.00,Female,1,Followup,14 +6480,A,20.00,7.00,2.00,Female,1,Followup,14 +6482,C,21.00,4.00,2.00,Female,0,Followup,8 +6483,C,21.00,2.00,1.00,Male,1,Followup,2 +6486,C,29.00,8.00,2.00,Female,1,Followup,16 +6489,B,23.00,0.00,0.00,Female,0,Followup,0 +6490,A,21.00,2.00,6.00,Male,1,Followup,12 +6493,C,19.00,2.00,1.00,Female,1,Followup,2 +6494,C,20.00,3.00,10.0,Male,1,Followup,30 +6498,B,21.00,3.00,3.00,Female,1,Followup,9 +6499,A,22.00,6.00,1.00,Male,0,Followup,6 +6502,A,20.00,2.00,7.00,Female,1,Followup,14 +6503,C,27.00,17.0,3.00,Male,1,Followup,51 +6504,A,18.00,2.00,4.00,Female,1,Followup,8 +6505,C,21.00,3.00,1.00,Female,1,Followup,3 +6506,C,18.00,2.00,4.00,Female,1,Followup,8 +6507,B,21.00,2.00,10.0,Male,1,Followup,20 +6508,C,21.00,3.00,12.0,Female,1,Followup,36 +6509,A,19.00,2.00,1.00,Male,1,Followup,2 +6510,A,22.00,4.00,6.00,Female,1,Followup,24 +6511,B,21.00,6.00,2.00,Female,1,Followup,12 +6515,C,20.00,0.00,0.00,Male,0,Followup,0 +6516,A,22.00,4.00,3.00,Male,1,Followup,12 +6517,C,19.00,7.00,8.00,Male,1,Followup,56 +6518,B,18.00,0.00,0.00,Female,1,Followup,0 +6521,B,20.00,0.00,0.00,Female,0,Followup,0 +6523,B,26.00,5.00,1.00,Male,1,Followup,5 +6525,B,20.00,16.0,2.00,Male,1,Followup,32 +6527,C,20.00,1.00,6.00,Female,1,Followup,6 +6528,C,45.00,0.00,0.00,Female,0,Followup,0 +6530,C,36.00,28.0,2.00,Female,1,Followup,56 +6534,A,23.00,3.00,2.00,Female,1,Followup,6 +6535,C,21.00,3.00,8.00,Female,1,Followup,24 +6536,B,42.00,1.00,5.00,Female,1,Followup,5 +6540,B,21.00,5.00,2.00,Female,1,Followup,10 +6541,A,36.00,0.00,0.00,Female,0,Followup,0 +6542,B,58.00,1.00,1.00,Male,0,Followup,1 +6543,B,25.00,6.00,2.00,Female,1,Followup,12 +6544,B,22.00,4.00,7.00,Male,1,Followup,28 +6552,C,30.00,8.00,4.00,Male,1,Followup,32 +6563,C,22.00,5.00,2.00,Female,1,Followup,10 +6565,A,19.00,2.00,6.00,Male,1,Followup,12 +6566,C,22.00,9.00,7.00,Female,1,Followup,63 +6567,C,21.00,4.00,6.00,Male,1,Followup,24 +6570,C,42.00,12.0,2.00,Male,1,Followup,24 +6573,C,31.00,0.00,0.00,Female,0,Followup,0 +6574,C,23.00,7.00,2.00,Male,1,Followup,14 +6575,B,27.00,7.00,6.00,Male,1,Followup,42 +6576,C,19.00,5.00,2.00,Female,1,Followup,10 +6577,C,28.00,7.00,2.00,Male,1,Followup,14 +6578,C,22.00,6.00,5.00,Female,1,Followup,30 +6579,C,24.00,5.00,3.00,Female,1,Followup,15 +6581,B,20.00,0.00,0.00,Male,0,Followup,0 +6584,A,21.00,4.00,2.00,Male,1,Followup,8 +6585,C,31.00,20.0,1.00,Female,1,Followup,20 +6586,C,30.00,10.0,1.00,Female,1,Followup,10 +6587,C,21.00,7.00,3.00,Female,1,Followup,21 +6592,C,22.00,3.00,2.00,Male,1,Followup,6 +6593,B,18.00,4.00,7.00,Male,1,Followup,28 +6594,C,19.00,0.00,0.00,Female,0,Followup,0 +6598,A,19.00,0.00,0.00,Male,0,Followup,0 +6600,C,28.00,7.00,2.00,Female,1,Followup,14 +6603,A,43.00,7.00,1.00,Female,1,Followup,7 +6604,B,18.00,0.00,0.00,Female,0,Followup,0 +6611,A,18.00,0.00,0.00,Female,0,Followup,0 +6613,C,33.00,8.00,3.00,Male,1,Followup,24 +6615,C,34.00,2.00,1.00,Male,1,Followup,2 +6616,B,21.00,0.00,0.00,Female,0,Followup,0 +6623,C,29.00,1.00,1.00,Female,1,Followup,1 +6624,A,44.00,0.00,0.00,Female,0,Followup,0 +6625,B,23.00,7.00,6.00,Male,1,Followup,42 +6628,C,26.00,2.00,1.00,Female,1,Followup,2 +6632,C,18.00,4.00,5.00,Female,1,Followup,20 +6635,C,20.00,4.00,5.00,Female,1,Followup,20 +6636,A,21.00,5.00,2.00,Male,1,Followup,10 +6637,B,19.00,5.00,2.00,Female,1,Followup,10 +6638,C,22.00,1.00,1.00,Female,1,Followup,1 +6639,C,28.00,10.0,5.00,Male,1,Followup,50 +6642,B,20.00,1.00,1.00,Female,1,Followup,1 +6645,A,25.00,1.00,3.00,Female,1,Followup,3 +6647,C,64.00,2.00,1.00,Male,1,Followup,2 +6648,C,20.00,5.00,4.00,Female,1,Followup,20 +6649,C,19.00,2.00,3.00,Male,1,Followup,6 +6653,B,26.00,0.00,0.00,Female,0,Followup,0 +6655,A,19.00,7.00,2.00,Male,1,Followup,14 +6656,A,20.00,12.0,3.00,Female,1,Followup,36 +6657,C,20.00,10.0,2.00,Male,1,Followup,20 +6658,A,33.00,12.0,1.00,Female,1,Followup,12 +6660,A,30.00,0.00,0.00,Female,0,Followup,0 +6662,A,29.00,0.00,0.00,Male,0,Followup,0 +6663,A,43.00,18.0,2.00,Female,1,Followup,36 +6665,C,23.00,8.00,4.00,Male,1,Followup,32 +6668,C,41.00,5.00,2.00,Female,1,Followup,10 +6670,A,18.00,10.0,2.00,Female,1,Followup,20 +6672,B,19.00,14.0,2.00,Male,1,Followup,28 +6673,B,29.00,4.00,2.00,Male,1,Followup,8 +6674,A,19.00,0.00,0.00,Female,0,Followup,0 +6676,B,27.00,0.00,0.00,Male,1,Followup,0 +6677,A,19.00,4.00,2.00,Female,0,Followup,8 +6681,B,23.00,2.00,1.00,Female,1,Followup,2 +6682,C,19.00,5.00,5.00,Female,1,Followup,25 +6683,B,19.00,9.00,6.00,Male,1,Followup,54 +6684,C,20.00,7.00,2.00,Female,1,Followup,14 +6685,C,24.00,0.00,0.00,Female,1,Followup,0 +6689,A,29.00,3.00,3.00,Female,1,Followup,9 +6690,C,56.00,4.00,2.00,Female,1,Followup,8 +6693,C,20.00,0.00,0.00,Male,1,Followup,0 +6694,C,22.00,3.00,4.00,Female,1,Followup,12 +6695,A,58.00,15.0,1.00,Female,1,Followup,15 +6696,A,53.00,8.00,2.00,Male,1,Followup,16 +6699,B,21.00,7.00,8.00,Male,1,Followup,56 +6700,B,22.00,3.00,3.00,Female,1,Followup,9 +6704,A,21.00,4.00,4.00,Male,1,Followup,16 +6705,C,19.00,2.00,4.00,Female,1,Followup,8 +6706,A,21.00,5.00,1.00,Male,1,Followup,5 +6707,A,23.00,20.0,2.00,Female,1,Followup,40 +6710,B,25.00,7.00,2.00,Female,1,Followup,14 +6712,C,20.00,3.00,5.00,Female,0,Followup,15 +6713,A,22.00,6.00,4.00,Female,1,Followup,24 +6714,B,29.00,21.0,3.00,Female,1,Followup,63 +6715,A,21.00,2.00,4.00,Female,1,Followup,8 +6716,C,20.00,5.00,7.00,Female,1,Followup,35 +6720,A,54.00,0.00,0.00,Female,0,Followup,0 +6722,A,24.00,8.00,2.00,Male,1,Followup,16 +6723,A,21.00,10.0,2.00,Female,1,Followup,20 +6725,B,22.00,0.00,0.00,Female,1,Followup,0 +6726,C,21.00,7.00,2.00,Female,1,Followup,14 +6727,C,20.00,12.0,4.00,Male,1,Followup,48 +6729,B,24.00,9.00,1.00,Male,1,Followup,9 +6731,B,18.00,0.00,0.00,Female,0,Followup,0 +6732,C,20.00,3.00,1.00,Female,1,Followup,3 +6734,A,72.00,28.0,1.00,Female,1,Followup,28 +6736,B,19.00,5.00,10.0,Male,1,Followup,50 +6737,B,22.00,4.00,1.00,Male,1,Followup,4 +6738,B,18.00,0.00,0.00,Male,0,Followup,0 +6739,C,38.00,0.00,0.00,Female,0,Followup,0 +6740,A,18.00,5.00,4.00,Female,1,Followup,20 +6742,B,25.00,2.00,3.00,Female,1,Followup,6 +6743,C,20.00,0.00,0.00,Female,0,Followup,0 +6745,B,20.00,1.00,1.00,Female,0,Followup,1 +6746,C,21.00,4.00,6.00,Female,1,Followup,24 +6747,C,36.00,18.0,2.00,Female,1,Followup,36 +6749,A,18.00,2.00,1.00,Female,1,Followup,2 +6750,B,20.00,1.00,7.00,Male,1,Followup,7 +6751,A,32.00,0.00,0.00,Male,0,Followup,0 +6752,B,23.00,1.00,3.00,Female,1,Followup,3 +6753,C,19.00,4.00,3.00,Female,1,Followup,12 +6754,B,34.00,0.00,0.00,Male,0,Followup,0 +6755,A,19.00,9.00,18.0,Male,1,Followup,162 +6758,A,25.00,8.00,2.00,Male,1,Followup,16 +6759,C,21.00,1.00,4.00,Male,1,Followup,4 +6760,A,18.00,3.00,6.00,Female,1,Followup,18 +6761,B,21.00,12.0,2.00,Male,1,Followup,24 +6762,A,22.00,0.00,0.00,Female,0,Followup,0 +6764,B,22.00,9.00,1.00,Female,1,Followup,9 +6765,A,20.00,1.00,4.00,Female,1,Followup,4 +6766,C,21.00,4.00,6.00,Female,1,Followup,24 +6767,B,22.00,7.00,2.00,Male,1,Followup,14 +6768,B,18.00,0.00,0.00,Male,0,Followup,0 +6769,B,18.00,6.00,4.00,Male,1,Followup,24 +6770,A,29.00,8.00,12.0,Male,1,Followup,96 +6771,B,19.00,3.00,3.00,Male,1,Followup,9 +6772,A,24.00,25.0,2.00,Female,1,Followup,50 +6773,A,20.00,2.00,1.00,Female,1,Followup,2 +6775,A,35.00,0.00,0.00,Male,1,Followup,0 +6776,C,20.00,1.00,3.00,Female,0,Followup,3 +6777,C,22.00,8.00,4.00,Male,1,Followup,32 +6779,C,24.00,8.00,1.00,Male,1,Followup,8 +6780,A,32.00,20.0,1.00,Female,1,Followup,20 +6781,B,21.00,14.0,1.00,Female,1,Followup,14 +6783,B,19.00,1.00,2.00,Male,1,Followup,2 +6785,C,23.00,4.00,1.00,Female,1,Followup,4 +6788,A,20.00,1.00,1.00,Female,1,Followup,1 +6789,B,33.00,0.00,0.00,Female,0,Followup,0 +6790,C,19.00,2.00,6.00,Male,1,Followup,12 +6792,C,25.00,10.0,2.00,Male,1,Followup,20 +6793,B,19.00,0.00,0.00,Female,0,Followup,0 +6795,C,33.00,4.00,2.00,Female,1,Followup,8 +6796,A,19.00,2.00,5.00,Male,1,Followup,10 +6797,C,20.00,0.00,0.00,Male,1,Followup,0 +6798,B,20.00,4.00,4.00,Male,1,Followup,16 +6799,B,24.00,3.00,2.00,Female,1,Followup,6 +6800,A,19.00,0.00,0.00,Female,0,Followup,0 +6801,C,21.00,1.00,1.00,Female,1,Followup,1 +6802,A,20.00,0.00,0.00,Female,1,Followup,0 +6804,A,22.00,0.00,0.00,Female,0,Followup,0 +6805,B,32.00,6.00,1.00,Female,1,Followup,6 +6806,C,19.00,5.00,6.00,Female,1,Followup,30 +6807,C,43.00,2.00,1.00,Female,1,Followup,2 +6808,C,22.00,20.0,2.00,Male,1,Followup,40 +6809,A,51.00,0.00,0.00,Male,0,Followup,0 +6813,B,26.00,4.00,3.00,Male,1,Followup,12 +6815,B,19.00,2.00,1.00,Male,1,Followup,2 +6816,A,50.00,24.0,1.00,Female,1,Followup,24 +6818,B,18.00,1.00,2.00,Female,1,Followup,2 +6819,A,45.00,4.00,1.00,Male,1,Followup,4 +6820,B,21.00,0.00,0.00,Female,1,Followup,0 +6822,C,22.00,14.0,2.00,Female,1,Followup,28 +6823,C,55.00,21.0,1.00,Female,1,Followup,21 +6824,A,26.00,9.00,2.00,Female,1,Followup,18 +6826,C,21.00,4.00,5.00,Male,1,Followup,20 +6828,C,39.00,8.00,8.00,Male,1,Followup,64 +6829,B,19.00,1.00,1.00,Female,1,Followup,1 +6830,A,24.00,14.0,1.00,Male,1,Followup,14 +6831,C,26.00,4.00,6.00,Male,1,Followup,24 +6832,B,19.00,2.00,3.00,Female,1,Followup,6 +6833,C,20.00,10.0,4.00,Male,1,Followup,40 +6834,C,25.00,2.00,1.00,Male,1,Followup,2 +6835,C,21.00,0.00,0.00,Female,0,Followup,0 +6836,B,23.00,0.00,0.00,Male,0,Followup,0 +6838,A,21.00,6.00,4.00,Female,1,Followup,24 +6839,A,19.00,1.00,4.00,Male,1,Followup,4 +6840,C,39.00,2.00,4.00,Male,1,Followup,8 +6841,C,23.00,2.00,3.00,Male,1,Followup,6 +6844,C,23.00,3.00,5.00,Female,1,Followup,15 +6845,A,21.00,4.00,6.00,Female,0,Followup,24 +6846,B,20.00,0.00,0.00,Female,0,Followup,0 +6847,A,20.00,8.00,15.0,Male,1,Followup,120 +6848,C,19.00,2.00,8.00,Male,1,Followup,16 +6850,C,23.00,0.00,0.00,Female,0,Followup,0 +6853,C,18.00,0.00,0.00,Male,1,Followup,0 +6854,B,19.00,3.00,16.0,Male,1,Followup,48 +6855,A,50.00,0.00,0.00,Male,0,Followup,0 +6856,B,20.00,0.00,0.00,Female,0,Followup,0 +6858,A,20.00,8.00,7.00,Female,1,Followup,56 +6860,C,19.00,2.00,1.00,Male,0,Followup,2 +6861,A,24.00,6.00,2.00,Female,1,Followup,12 +6862,C,24.00,5.00,17.0,Male,1,Followup,85 +6864,A,22.00,2.00,8.00,Male,1,Followup,16 +6866,C,24.00,4.00,3.00,Female,1,Followup,12 +6867,B,59.00,15.0,2.00,Female,1,Followup,30 +6869,C,23.00,3.00,3.00,Female,1,Followup,9 +6870,B,19.00,2.00,5.00,Female,1,Followup,10 +6871,C,19.00,6.00,3.00,Male,1,Followup,18 +6873,B,30.00,15.0,2.00,Female,1,Followup,30 +6876,A,19.00,0.00,0.00,Female,0,Followup,0 +6878,C,49.00,6.00,1.00,Female,1,Followup,6 +6879,A,18.00,6.00,7.00,Male,1,Followup,42 +6881,A,46.00,0.00,0.00,Female,1,Followup,0 +6884,A,21.00,8.00,1.00,Male,1,Followup,8 +6885,A,19.00,5.00,5.00,Male,1,Followup,25 +6888,B,21.00,2.00,4.00,Female,1,Followup,8 +6890,A,20.00,9.00,1.00,Male,1,Followup,9 +6891,C,19.00,0.00,0.00,Male,0,Followup,0 +6892,B,25.00,0.00,0.00,Male,0,Followup,0 +6893,B,32.00,14.0,1.00,Female,1,Followup,14 +6895,B,21.00,5.00,7.00,Female,1,Followup,35 +6897,B,22.00,6.00,8.00,Female,1,Followup,48 +6898,A,32.00,2.00,1.00,Female,1,Followup,2 +6899,B,21.00,4.00,5.00,Female,1,Followup,20 +6900,A,21.00,4.00,2.00,Female,1,Followup,8 +6901,C,33.00,0.00,0.00,Female,0,Followup,0 +6902,A,20.00,5.00,1.00,Female,1,Followup,5 +6904,A,23.00,12.0,2.00,Male,1,Followup,24 +6906,A,20.00,1.00,1.00,Female,0,Followup,1 +6907,C,20.00,5.00,3.00,Female,1,Followup,15 +6908,B,21.00,2.00,2.00,Female,1,Followup,4 +6910,C,19.00,2.00,2.00,Female,1,Followup,4 +6911,C,48.00,0.00,0.00,Female,0,Followup,0 +6912,C,21.00,0.00,0.00,Female,1,Followup,0 +6913,C,20.00,8.00,1.00,Male,1,Followup,8 +6914,A,21.00,9.00,2.00,Female,1,Followup,18 +6915,C,29.00,14.0,3.00,Female,1,Followup,42 +6916,A,20.00,0.00,0.00,Female,0,Followup,0 +6919,C,18.00,0.00,0.00,Female,0,Followup,0 +6920,B,22.00,5.00,4.00,Female,1,Followup,20 +6921,A,22.00,0.00,0.00,Male,0,Followup,0 +6923,A,28.00,22.0,1.00,Female,1,Followup,22 +6924,A,22.00,5.00,7.00,Female,1,Followup,35 +6925,A,31.00,0.00,0.00,Female,0,Followup,0 +6926,C,20.00,3.00,3.00,Female,1,Followup,9 +6927,A,24.00,0.00,0.00,Male,0,Followup,0 +6929,C,23.00,3.00,1.00,Female,1,Followup,3 +6931,B,20.00,0.00,0.00,Female,0,Followup,0 +6932,B,20.00,3.00,6.00,Male,1,Followup,18 +6933,B,57.00,3.00,1.00,Female,1,Followup,3 +6934,C,20.00,0.00,0.00,Female,1,Followup,0 +6935,B,20.00,4.00,3.00,Female,1,Followup,12 +6936,B,18.00,7.00,8.00,Female,1,Followup,56 +6938,C,20.00,4.00,2.00,Male,1,Followup,8 +6939,B,19.00,11.0,1.00,Female,1,Followup,11 +6940,B,20.00,2.00,9.00,Female,1,Followup,18 +6942,C,21.00,1.00,1.00,Female,0,Followup,1 +6943,A,31.00,2.00,5.00,Male,1,Followup,10 +6944,C,22.00,12.0,3.00,Male,1,Followup,36 +6945,A,44.00,2.00,1.00,Female,1,Followup,2 +6951,C,19.00,5.00,2.00,Female,1,Followup,10 +6952,B,26.00,6.00,3.00,Male,1,Followup,18 +6954,C,47.00,0.00,0.00,Female,0,Followup,0 +6955,B,20.00,0.00,0.00,Female,0,Followup,0 +6956,C,22.00,7.00,2.00,Female,0,Followup,14 +6957,A,20.00,0.00,0.00,Female,0,Followup,0 +6959,A,21.00,0.00,0.00,Female,0,Followup,0 +6960,C,20.00,1.00,3.00,Male,1,Followup,3 +6962,C,22.00,0.00,0.00,Female,0,Followup,0 +6963,C,24.00,12.0,2.00,Female,1,Followup,24 +6964,A,18.00,0.00,0.00,Male,0,Followup,0 +6965,A,43.00,11.0,2.00,Female,1,Followup,22 +6966,C,52.00,0.00,0.00,Male,0,Followup,0 +6967,A,40.00,0.00,0.00,Female,0,Followup,0 +6969,B,22.00,7.00,1.00,Female,1,Followup,7 +6970,C,20.00,0.00,0.00,Female,1,Followup,0 +6971,B,20.00,0.00,0.00,Female,0,Followup,0 +6974,C,21.00,4.00,2.00,Female,1,Followup,8 +6975,C,19.00,2.00,4.00,Male,1,Followup,8 +6976,A,24.00,2.00,1.00,Female,0,Followup,2 +6977,C,21.00,0.00,0.00,Female,0,Followup,0 +6978,B,24.00,3.00,1.00,Male,1,Followup,3 +6979,B,41.00,17.0,1.00,Female,1,Followup,17 +6981,C,26.00,0.00,0.00,Female,1,Followup,0 +6982,A,19.00,0.00,0.00,Female,0,Followup,0 +6983,B,22.00,3.00,2.00,Female,1,Followup,6 +6984,A,20.00,1.00,1.00,Male,0,Followup,1 +6986,C,20.00,2.00,3.00,Female,1,Followup,6 +6987,C,34.00,8.00,1.00,Female,1,Followup,8 +6988,B,22.00,2.00,3.00,Female,1,Followup,6 +6990,C,19.00,0.00,0.00,Female,0,Followup,0 +6991,C,19.00,4.00,6.00,Male,1,Followup,24 +6992,B,26.00,0.00,0.00,Female,0,Followup,0 +6995,B,24.00,0.00,0.00,Female,0,Followup,0 +6996,B,19.00,0.00,0.00,Female,0,Followup,0 +7000,C,22.00,6.00,8.00,Female,1,Followup,48 +7001,C,29.00,1.00,1.00,Female,1,Followup,1 +7002,C,19.00,2.00,4.00,Female,1,Followup,8 +7003,C,21.00,2.00,3.00,Male,1,Followup,6 +7004,A,20.00,1.00,1.00,Female,0,Followup,1 +7005,C,37.00,18.0,1.00,Female,1,Followup,18 +7006,C,23.00,0.00,0.00,Male,0,Followup,0 +7007,A,20.00,0.00,0.00,Female,0,Followup,0 +7009,A,28.00,2.00,1.00,Male,0,Followup,2 +7013,C,21.00,6.00,2.00,Female,1,Followup,12 +7015,C,18.00,5.00,9.00,Male,1,Followup,45 +7016,A,21.00,14.0,2.00,Female,1,Followup,28 +7020,A,20.00,1.00,4.00,Female,0,Followup,4 +7021,A,22.00,3.00,2.00,Female,0,Followup,6 +7022,A,25.00,25.0,4.00,Female,1,Followup,100 +7023,B,27.00,0.00,0.00,Male,1,Followup,0 +7024,C,24.00,10.0,3.00,Male,1,Followup,30 +7025,C,21.00,3.00,3.00,Female,1,Followup,9 +7026,B,20.00,1.00,1.00,Female,0,Followup,1 +7027,B,18.00,0.00,0.00,Female,0,Followup,0 +7028,A,30.00,0.00,0.00,Female,0,Followup,0 +7029,A,22.00,1.00,1.00,Female,1,Followup,1 +7030,C,18.00,4.00,6.00,Female,1,Followup,24 +7031,C,21.00,1.00,4.00,Female,1,Followup,4 +7032,B,21.00,9.00,2.00,Female,1,Followup,18 +7035,B,24.00,16.0,2.00,Female,1,Followup,32 +7037,B,26.00,8.00,1.00,Male,1,Followup,8 +7038,C,23.00,1.00,1.00,Female,1,Followup,1 +7039,A,22.00,0.00,0.00,Female,0,Followup,0 +7043,B,32.00,7.00,1.00,Female,1,Followup,7 +7044,A,42.00,5.00,3.00,Male,1,Followup,15 +7048,B,29.00,0.00,0.00,Female,0,Followup,0 +7049,C,19.00,0.00,0.00,Female,0,Followup,0 +7050,A,18.00,4.00,8.00,Female,1,Followup,32 +7051,A,22.00,1.00,6.00,Male,1,Followup,6 +7052,B,22.00,4.00,5.00,Male,1,Followup,20 +7054,C,22.00,3.00,8.00,Male,1,Followup,24 +7055,B,19.00,0.00,0.00,Male,0,Followup,0 +7056,B,26.00,8.00,3.00,Female,1,Followup,24 +7057,A,21.00,1.00,2.00,Male,1,Followup,2 +7058,B,28.00,7.00,1.00,Male,1,Followup,7 +7059,A,32.00,3.00,1.00,Female,1,Followup,3 +7060,B,19.00,6.00,6.00,Female,1,Followup,36 +7063,A,23.00,0.00,0.00,Female,0,Followup,0 +7064,A,21.00,0.00,0.00,Male,1,Followup,0 +7065,A,22.00,0.00,0.00,Female,0,Followup,0 +7066,A,21.00,8.00,4.00,Female,1,Followup,32 +7067,C,20.00,0.00,0.00,Female,0,Followup,0 +7068,A,24.00,10.0,2.00,Female,1,Followup,20 +7069,C,20.00,0.00,0.00,Female,1,Followup,0 +7070,B,18.00,2.00,5.00,Female,1,Followup,10 +7073,C,63.00,24.0,2.00,Male,1,Followup,48 +7074,B,20.00,1.00,10.0,Male,0,Followup,10 +7075,B,54.00,8.00,1.00,Female,1,Followup,8 +7081,A,28.00,15.0,1.00,Female,1,Followup,15 +7082,C,20.00,16.0,3.00,Female,1,Followup,48 +7083,A,23.00,10.0,3.00,Male,1,Followup,30 +7084,B,18.00,3.00,5.00,Female,1,Followup,15 +7085,A,19.00,8.00,4.00,Female,1,Followup,32 +7087,C,19.00,2.00,8.00,Female,1,Followup,16 +7088,A,29.00,7.00,3.00,Female,1,Followup,21 +7089,C,21.00,0.00,0.00,Female,0,Followup,0 +7090,A,19.00,7.00,2.00,Female,1,Followup,14 +7091,B,19.00,0.00,0.00,Male,0,Followup,0 +7092,C,19.00,10.0,2.00,Female,1,Followup,20 +7093,C,19.00,10.0,3.00,Male,1,Followup,30 +7094,A,29.00,4.00,3.00,Female,1,Followup,12 +7095,C,28.00,4.00,3.00,Male,1,Followup,12 +7096,C,20.00,1.00,5.00,Female,0,Followup,5 +7099,A,22.00,3.00,11.0,Male,1,Followup,33 +7100,C,49.00,7.00,2.00,Female,1,Followup,14 +7102,C,21.00,0.00,0.00,Male,1,Followup,0 +7103,A,19.00,22.0,2.00,Male,1,Followup,44 +7105,A,22.00,0.00,0.00,Female,0,Followup,0 +7106,A,20.00,1.00,1.00,Female,1,Followup,1 +7107,C,31.00,1.00,2.00,Male,1,Followup,2 +7108,A,20.00,4.00,7.00,Female,1,Followup,28 +7109,C,18.00,2.00,1.00,Female,1,Followup,2 +7110,A,23.00,6.00,3.00,Female,1,Followup,18 +7111,C,22.00,0.00,0.00,Male,1,Followup,0 +7112,B,27.00,7.00,4.00,Female,1,Followup,28 +7113,C,24.00,5.00,3.00,Female,1,Followup,15 +7114,A,21.00,6.00,4.00,Female,1,Followup,24 +7115,A,19.00,5.00,3.00,Male,1,Followup,15 +7117,A,27.00,2.00,1.00,Female,1,Followup,2 +7118,A,24.00,0.00,0.00,Male,0,Followup,0 +7120,C,33.00,0.00,0.00,Female,0,Followup,0 +7121,A,19.00,0.00,0.00,Female,1,Followup,0 +7122,B,19.00,5.00,9.00,Male,1,Followup,45 +7125,C,20.00,2.00,6.00,Female,1,Followup,12 +7127,A,25.00,10.0,1.00,Male,1,Followup,10 +7128,A,19.00,2.00,5.00,Female,1,Followup,10 +7129,B,21.00,1.00,1.00,Female,0,Followup,1 +7130,C,19.00,0.00,0.00,Female,0,Followup,0 +7132,A,31.00,0.00,0.00,Female,0,Followup,0 +7133,A,21.00,1.00,1.00,Male,1,Followup,1 +7134,B,20.00,14.0,2.00,Female,1,Followup,28 +7135,B,18.00,0.00,0.00,Male,0,Followup,0 +7136,B,20.00,0.00,0.00,Female,0,Followup,0 +7138,B,19.00,8.00,4.00,Female,1,Followup,32 +7139,C,18.00,10.0,2.00,Female,1,Followup,20 +7141,A,18.00,0.00,0.00,Male,0,Followup,0 +7142,C,50.00,2.00,1.00,Female,0,Followup,2 +7147,A,19.00,8.00,2.00,Female,1,Followup,16 +7148,B,24.00,0.00,0.00,Female,0,Followup,0 +7149,C,25.00,14.0,4.00,Female,1,Followup,56 +7151,B,30.00,0.00,0.00,Female,1,Followup,0 +7153,A,28.00,0.00,0.00,Female,1,Followup,0 +7154,A,20.00,0.00,0.00,Male,0,Followup,0 +7157,A,40.00,1.00,1.00,Female,1,Followup,1 +7158,B,46.00,0.00,0.00,Female,1,Followup,0 +7159,C,19.00,0.00,0.00,Female,0,Followup,0 +7160,B,21.00,1.00,2.00,Female,1,Followup,2 +7161,B,22.00,2.00,4.00,Female,1,Followup,8 +7162,A,24.00,1.00,3.00,Female,0,Followup,3 +7163,C,19.00,1.00,1.00,Female,1,Followup,1 +7164,B,19.00,0.00,0.00,Female,1,Followup,0 +7169,B,20.00,0.00,0.00,Male,0,Followup,0 +7170,C,47.00,0.00,0.00,Female,0,Followup,0 +7172,C,22.00,21.0,1.00,Female,1,Followup,21 +7173,A,33.00,8.00,1.00,Female,1,Followup,8 +7175,B,18.00,0.00,0.00,Female,0,Followup,0 +7177,A,20.00,5.00,2.00,Female,1,Followup,10 +7178,A,21.00,4.00,4.00,Male,1,Followup,16 +7179,C,20.00,10.0,2.00,Female,1,Followup,20 +7180,B,21.00,4.00,1.00,Female,1,Followup,4 +7181,C,21.00,0.00,0.00,Male,0,Followup,0 +7184,B,18.00,1.00,2.00,Female,1,Followup,2 +7185,B,23.00,0.00,0.00,Female,0,Followup,0 +7188,C,23.00,1.00,1.00,Female,0,Followup,1 +7192,C,21.00,9.00,6.00,Female,1,Followup,54 +7193,B,37.00,28.0,2.00,Male,1,Followup,56 +7194,A,48.00,25.0,1.00,Female,1,Followup,25 +7199,A,20.00,1.00,2.00,Female,0,Followup,2 +7202,C,25.00,4.00,2.00,Male,1,Followup,8 +7203,A,22.00,0.00,0.00,Female,0,Followup,0 +7204,A,21.00,1.00,1.00,Female,1,Followup,1 +7207,B,29.00,0.00,0.00,Female,0,Followup,0 +7208,A,19.00,0.00,0.00,Female,0,Followup,0 +7210,B,18.00,0.00,0.00,Female,1,Followup,0 +7212,A,19.00,5.00,2.00,Male,1,Followup,10 +7214,B,59.00,18.0,3.00,Male,1,Followup,54 +7215,B,29.00,0.00,0.00,Female,0,Followup,0 +7216,C,23.00,1.00,1.00,Female,1,Followup,1 +7217,C,20.00,3.00,5.00,Female,1,Followup,15 +7218,C,21.00,0.00,0.00,Male,1,Followup,0 +7219,B,21.00,0.00,0.00,Female,0,Followup,0 +7220,C,21.00,6.00,3.00,Female,1,Followup,18 +7221,B,19.00,0.00,0.00,Female,0,Followup,0 +7223,B,18.00,3.00,1.00,Female,1,Followup,3 +7224,A,22.00,1.00,1.00,Female,0,Followup,1 +7226,B,20.00,6.00,2.00,Female,1,Followup,12 +7228,B,30.00,4.00,2.00,Female,1,Followup,8 +7229,B,21.00,1.00,5.00,Male,1,Followup,5 +7231,B,22.00,12.0,1.00,Female,1,Followup,12 +7233,B,19.00,1.00,9.00,Male,0,Followup,9 +7234,B,20.00,4.00,4.00,Male,1,Followup,16 +7235,B,30.00,7.00,3.00,Male,1,Followup,21 +7236,C,20.00,10.0,3.00,Female,1,Followup,30 +7240,A,22.00,5.00,4.00,Female,1,Followup,20 +7242,C,19.00,4.00,3.00,Female,1,Followup,12 +7243,B,22.00,6.00,4.00,Female,1,Followup,24 +7244,A,23.00,7.00,5.00,Male,1,Followup,35 +7246,A,20.00,0.00,0.00,Male,1,Followup,0 +7247,A,21.00,1.00,1.00,Female,0,Followup,1 +7248,C,21.00,2.00,1.00,Male,1,Followup,2 +7249,C,19.00,0.00,0.00,Male,1,Followup,0 +7250,A,24.00,7.00,4.00,Male,1,Followup,28 +7251,A,21.00,2.00,2.00,Female,1,Followup,4 +7252,C,20.00,3.00,3.00,Female,1,Followup,9 +7255,C,20.00,4.00,6.00,Female,1,Followup,24 +7256,A,21.00,0.00,0.00,Male,0,Followup,0 +7257,C,20.00,2.00,3.00,Female,1,Followup,6 +7259,B,20.00,3.00,2.00,Male,1,Followup,6 +7262,B,23.00,4.00,4.00,Female,1,Followup,16 +7265,C,20.00,1.00,13.0,Male,1,Followup,13 +7266,A,20.00,0.00,0.00,Female,0,Followup,0 +7267,A,30.00,2.00,2.00,Female,0,Followup,4 +7270,A,19.00,5.00,3.00,Female,1,Followup,15 +7272,A,18.00,0.00,0.00,Female,0,Followup,0 +7273,B,20.00,0.00,0.00,Male,0,Followup,0 +7274,B,43.00,20.0,3.00,Female,1,Followup,60 +7275,C,27.00,4.00,2.00,Female,1,Followup,8 +7276,C,18.00,4.00,5.00,Male,1,Followup,20 +7277,C,19.00,10.0,3.00,Male,1,Followup,30 +7278,A,25.00,7.00,8.00,Female,1,Followup,56 +7280,B,21.00,7.00,12.0,Male,1,Followup,84 +7283,C,19.00,1.00,12.0,Female,1,Followup,12 +7286,C,20.00,10.0,2.00,Female,1,Followup,20 +7291,C,26.00,5.00,10.0,Female,1,Followup,50 +7292,B,28.00,6.00,2.00,Male,1,Followup,12 +7295,A,19.00,2.00,2.00,Male,1,Followup,4 +7297,B,20.00,0.00,0.00,Female,0,Followup,0 +7298,C,35.00,0.00,0.00,Female,1,Followup,0 +7299,A,21.00,0.00,0.00,Female,0,Followup,0 +7300,A,37.00,26.0,2.00,Female,1,Followup,52 +7301,A,21.00,1.00,1.00,Male,0,Followup,1 +7302,B,26.00,8.00,2.00,Female,1,Followup,16 +7303,B,30.00,10.0,1.00,Female,1,Followup,10 +7305,C,18.00,2.00,6.00,Female,1,Followup,12 +7306,A,20.00,3.00,6.00,Female,1,Followup,18 +7308,A,55.00,28.0,3.00,Female,1,Followup,84 +7309,C,20.00,21.0,8.00,Female,1,Followup,168 +7310,A,21.00,0.00,0.00,Female,0,Followup,0 +7311,A,23.00,4.00,3.00,Male,1,Followup,12 +7313,C,21.00,0.00,0.00,Female,0,Followup,0 +7314,C,57.00,10.0,1.00,Female,1,Followup,10 +7315,C,21.00,0.00,0.00,Female,0,Followup,0 +7316,B,19.00,0.00,0.00,Female,0,Followup,0 +7318,C,24.00,0.00,0.00,Female,0,Followup,0 +7319,C,40.00,0.00,0.00,Female,0,Followup,0 +7320,B,20.00,2.00,1.00,Female,1,Followup,2 +7321,C,49.00,9.00,4.00,Male,1,Followup,36 +7322,B,22.00,0.00,0.00,Female,1,Followup,0 +7323,C,19.00,1.00,1.00,Female,1,Followup,1 +7324,C,18.00,1.00,1.00,Female,1,Followup,1 +7325,B,19.00,5.00,8.00,Male,1,Followup,40 +7326,A,18.00,2.00,1.00,Female,1,Followup,2 +7328,C,22.00,4.00,2.00,Female,1,Followup,8 +7329,C,20.00,0.00,0.00,Male,0,Followup,0 +7330,B,23.00,2.00,5.00,Female,1,Followup,10 +7336,B,23.00,2.00,2.00,Female,0,Followup,4 +7338,B,22.00,4.00,6.00,Female,1,Followup,24 +7339,C,21.00,0.00,0.00,Female,0,Followup,0 +7340,A,22.00,5.00,1.00,Female,1,Followup,5 +7342,B,22.00,0.00,0.00,Female,0,Followup,0 +7343,A,21.00,0.00,0.00,Male,0,Followup,0 +7344,B,20.00,4.00,4.00,Male,1,Followup,16 +7345,A,22.00,20.0,2.00,Male,1,Followup,40 +7347,B,29.00,14.0,2.00,Female,1,Followup,28 +7348,C,20.00,7.00,10.0,Male,1,Followup,70 +7350,C,49.00,28.0,2.00,Male,1,Followup,56 +7351,C,19.00,4.00,1.00,Female,1,Followup,4 +7352,B,22.00,4.00,5.00,Female,1,Followup,20 +7353,B,22.00,11.0,10.0,Male,1,Followup,110 +7354,C,21.00,9.00,10.0,Female,1,Followup,90 +7357,B,19.00,12.0,2.00,Female,1,Followup,24 +7360,C,20.00,5.00,3.00,Male,1,Followup,15 +7361,A,22.00,7.00,6.00,Female,1,Followup,42 +7362,C,19.00,10.0,7.00,Female,1,Followup,70 +7363,C,29.00,6.00,2.00,Male,1,Followup,12 +7364,B,26.00,0.00,0.00,Male,0,Followup,0 +7365,A,20.00,1.00,1.00,Female,1,Followup,1 +7367,B,21.00,1.00,1.00,Female,1,Followup,1 +7368,B,19.00,1.00,1.00,Female,1,Followup,1 +7369,C,31.00,0.00,0.00,Male,0,Followup,0 +7370,A,63.00,20.0,2.00,Male,1,Followup,40 +7371,C,23.00,4.00,2.00,Female,1,Followup,8 +7372,A,19.00,4.00,3.00,Male,1,Followup,12 +7373,C,20.00,0.00,0.00,Male,1,Followup,0 +7375,C,19.00,1.00,9.00,Male,1,Followup,9 +7377,C,21.00,0.00,0.00,Female,1,Followup,0 +7378,A,19.00,3.00,2.00,Male,1,Followup,6 +7379,B,27.00,14.0,1.00,Female,1,Followup,14 +7383,A,19.00,5.00,5.00,Female,1,Followup,25 +7385,B,21.00,4.00,2.00,Female,1,Followup,8 +7387,A,21.00,2.00,3.00,Female,1,Followup,6 +7388,C,21.00,8.00,2.00,Female,1,Followup,16 +7390,C,22.00,5.00,3.00,Female,1,Followup,15 +7391,C,20.00,2.00,2.00,Female,1,Followup,4 +7393,C,49.00,0.00,0.00,Male,0,Followup,0 +7394,A,63.00,8.00,2.00,Female,1,Followup,16 +7395,C,32.00,4.00,2.00,Female,1,Followup,8 +7396,B,18.00,4.00,3.00,Female,0,Followup,12 +7398,C,19.00,1.00,7.00,Female,0,Followup,7 +7400,A,19.00,0.00,0.00,Female,0,Followup,0 +7401,C,25.00,3.00,2.00,Male,1,Followup,6 +7402,A,23.00,10.0,3.00,Male,1,Followup,30 +7404,B,45.00,14.0,1.00,Female,1,Followup,14 +7406,C,20.00,8.00,2.00,Female,1,Followup,16 +7407,C,18.00,1.00,1.00,Female,0,Followup,1 +7408,B,23.00,1.00,1.00,Female,0,Followup,1 +7409,B,18.00,5.00,10.0,Male,1,Followup,50 +7410,A,23.00,2.00,6.00,Male,1,Followup,12 +7411,A,19.00,0.00,0.00,Female,1,Followup,0 +7412,B,23.00,5.00,6.00,Female,1,Followup,30 +7413,C,24.00,5.00,1.00,Female,1,Followup,5 +7414,B,33.00,6.00,4.00,Female,1,Followup,24 +7416,A,22.00,1.00,1.00,Female,1,Followup,1 +7417,A,22.00,8.00,4.00,Male,1,Followup,32 +7418,A,19.00,1.00,2.00,Female,0,Followup,2 +7419,C,28.00,14.0,2.00,Female,1,Followup,28 +7421,B,21.00,12.0,30.0,Male,1,Followup,360 +7422,C,19.00,1.00,5.00,Female,1,Followup,5 +7424,A,19.00,0.00,0.00,Male,1,Followup,0 +7425,C,24.00,2.00,1.00,Female,1,Followup,2 +7426,B,20.00,12.0,3.00,Female,1,Followup,36 +7428,A,19.00,0.00,0.00,Male,0,Followup,0 +7429,B,18.00,0.00,0.00,Male,0,Followup,0 +7430,A,23.00,4.00,1.00,Female,1,Followup,4 +7431,A,23.00,12.0,2.00,Female,1,Followup,24 +7433,A,22.00,0.00,0.00,Male,0,Followup,0 +7434,A,23.00,0.00,0.00,Female,1,Followup,0 +7436,B,22.00,0.00,0.00,Male,0,Followup,0 +7437,A,20.00,0.00,0.00,Female,1,Followup,0 +7439,A,21.00,3.00,3.00,Male,1,Followup,9 +7440,A,25.00,0.00,0.00,Female,1,Followup,0 +7441,C,20.00,2.00,2.00,Female,0,Followup,4 +7442,C,23.00,0.00,0.00,Male,1,Followup,0 +7443,C,19.00,24.0,3.00,Female,1,Followup,72 +7444,B,22.00,15.0,2.00,Female,1,Followup,30 +7450,B,22.00,4.00,6.00,Female,1,Followup,24 +7452,A,32.00,20.0,3.00,Female,1,Followup,60 +7454,B,21.00,0.00,0.00,Male,1,Followup,0 +7455,A,23.00,4.00,3.00,Female,1,Followup,12 +7456,C,21.00,14.0,3.00,Female,1,Followup,42 +7457,B,21.00,2.00,2.00,Female,1,Followup,4 +7458,B,21.00,4.00,8.00,Female,1,Followup,32 +7459,C,21.00,6.00,5.00,Male,1,Followup,30 +7461,A,20.00,0.00,0.00,Female,0,Followup,0 +7462,A,19.00,1.00,2.00,Female,1,Followup,2 +7463,B,24.00,15.0,3.00,Female,1,Followup,45 +7464,A,20.00,1.00,6.00,Female,1,Followup,6 +7466,C,32.00,20.0,2.00,Female,1,Followup,40 +7467,B,24.00,24.0,4.00,Female,1,Followup,96 +7469,A,18.00,3.00,4.00,Female,1,Followup,12 +7470,B,51.00,16.0,3.00,Female,1,Followup,48 +7471,C,20.00,12.0,2.00,Male,1,Followup,24 +7472,B,29.00,2.00,1.00,Female,1,Followup,2 +7473,B,18.00,2.00,8.00,Female,1,Followup,16 +7475,C,29.00,0.00,0.00,Female,1,Followup,0 +7477,B,20.00,0.00,0.00,Female,0,Followup,0 +7478,B,25.00,10.0,2.00,Female,1,Followup,20 +7479,A,21.00,0.00,0.00,Male,0,Followup,0 +7480,A,19.00,1.00,1.00,Female,1,Followup,1 +7481,C,26.00,2.00,1.00,Female,1,Followup,2 +7482,B,23.00,4.00,1.00,Male,1,Followup,4 +7483,B,20.00,0.00,0.00,Female,0,Followup,0 +7484,C,21.00,6.00,3.00,Female,1,Followup,18 +7485,C,19.00,0.00,0.00,Female,1,Followup,0 +7486,A,22.00,3.00,7.00,Female,1,Followup,21 +7487,B,30.00,24.0,2.00,Male,1,Followup,48 +7488,C,20.00,3.00,5.00,Female,1,Followup,15 +7490,B,19.00,0.00,0.00,Male,1,Followup,0 +7492,C,21.00,3.00,5.00,Female,1,Followup,15 +7493,B,42.00,10.0,1.00,Female,1,Followup,10 +7494,B,25.00,3.00,4.00,Male,1,Followup,12 +7495,B,19.00,1.00,3.00,Female,1,Followup,3 +7496,B,21.00,0.00,0.00,Male,0,Followup,0 +7498,A,19.00,2.00,4.00,Female,1,Followup,8 +7499,B,18.00,3.00,5.00,Female,1,Followup,15 +7501,A,29.00,0.00,0.00,Female,0,Followup,0 +7502,C,18.00,0.00,0.00,Male,1,Followup,0 +7504,B,23.00,0.00,0.00,Female,0,Followup,0 +7505,B,19.00,6.00,2.00,Female,1,Followup,12 +7506,B,22.00,3.00,2.00,Female,1,Followup,6 +7508,B,18.00,6.00,6.00,Female,1,Followup,36 +7509,B,23.00,6.00,2.00,Female,1,Followup,12 +7511,C,20.00,8.00,1.00,Male,1,Followup,8 +7512,A,19.00,4.00,1.00,Female,1,Followup,4 +7513,B,18.00,4.00,4.00,Female,1,Followup,16 +7514,B,20.00,2.00,3.00,Female,1,Followup,6 +7515,B,18.00,4.00,5.00,Female,1,Followup,20 +7516,A,22.00,16.0,2.00,Female,1,Followup,32 +7518,B,19.00,2.00,7.00,Male,1,Followup,14 +7520,B,29.00,2.00,4.00,Female,1,Followup,8 +7521,C,20.00,7.00,6.00,Female,1,Followup,42 +7522,C,39.00,0.00,0.00,Male,0,Followup,0 +7523,A,25.00,6.00,5.00,Female,1,Followup,30 +7526,B,20.00,2.00,1.00,Female,1,Followup,2 +7527,A,25.00,0.00,0.00,Female,0,Followup,0 +7528,C,19.00,7.00,8.00,Male,1,Followup,56 +7529,B,28.00,18.0,2.00,Male,1,Followup,36 +7530,C,19.00,4.00,1.00,Female,1,Followup,4 +7531,C,20.00,5.00,6.00,Female,1,Followup,30 +7532,A,21.00,10.0,3.00,Female,1,Followup,30 +7533,B,20.00,0.00,0.00,Male,1,Followup,0 +7534,C,50.00,8.00,1.00,Female,1,Followup,8 +7535,A,27.00,22.0,5.00,Male,1,Followup,110 +7536,B,19.00,6.00,3.00,Female,1,Followup,18 +7537,B,20.00,9.00,12.0,Male,1,Followup,108 +7538,B,20.00,6.00,2.00,Male,1,Followup,12 +7540,B,20.00,6.00,5.00,Female,1,Followup,30 +7541,C,18.00,3.00,2.00,Female,0,Followup,6 +7543,C,19.00,10.0,9.00,Female,1,Followup,90 +7544,B,23.00,5.00,1.00,Female,1,Followup,5 +7546,A,18.00,0.00,0.00,Female,0,Followup,0 +7547,A,20.00,6.00,6.00,Female,1,Followup,36 +7550,A,19.00,1.00,5.00,Female,1,Followup,5 +7551,B,30.00,21.0,2.00,Female,1,Followup,42 +7552,B,20.00,14.0,3.00,Female,1,Followup,42 +7553,B,24.00,4.00,2.00,Female,1,Followup,8 +7554,B,20.00,8.00,5.00,Female,1,Followup,40 +7555,C,49.00,3.00,1.00,Female,1,Followup,3 +7556,C,22.00,6.00,4.00,Female,1,Followup,24 +7557,C,21.00,12.0,3.00,Male,1,Followup,36 +7558,C,29.00,5.00,1.00,Female,1,Followup,5 +7559,C,27.00,12.0,6.00,Male,1,Followup,72 +7560,A,19.00,1.00,4.00,Female,1,Followup,4 +7561,C,18.00,5.00,5.00,Male,1,Followup,25 +7562,B,21.00,4.00,2.00,Female,1,Followup,8 +7563,B,18.00,7.00,4.00,Female,1,Followup,28 +7564,B,21.00,12.0,3.00,Female,1,Followup,36 +7565,A,19.00,9.00,4.00,Female,1,Followup,36 +7566,B,21.00,0.00,0.00,Female,0,Followup,0 +7569,A,24.00,25.0,3.00,Male,1,Followup,75 +7570,B,27.00,5.00,2.00,Female,0,Followup,10 +7571,A,35.00,8.00,3.00,Female,1,Followup,24 +7572,A,22.00,2.00,2.00,Female,1,Followup,4 +7573,B,22.00,3.00,1.00,Female,0,Followup,3 +7574,A,21.00,15.0,4.00,Female,1,Followup,60 +7577,B,19.00,3.00,2.00,Female,1,Followup,6 +7578,B,18.00,4.00,1.00,Female,1,Followup,4 +7580,C,25.00,0.00,0.00,Male,0,Followup,0 +7582,A,21.00,2.00,4.00,Male,1,Followup,8 +7583,C,21.00,1.00,1.00,Female,0,Followup,1 +7585,B,18.00,0.00,0.00,Female,1,Followup,0 +7586,B,22.00,18.0,6.00,Female,1,Followup,108 +7587,A,20.00,3.00,8.00,Male,1,Followup,24 +7588,B,18.00,6.00,4.00,Female,1,Followup,24 +7590,A,20.00,4.00,2.00,Female,1,Followup,8 +7592,A,18.00,0.00,0.00,Male,0,Followup,0 +7594,A,19.00,7.00,7.00,Male,1,Followup,49 +7596,C,26.00,1.00,5.00,Male,1,Followup,5 +7597,A,22.00,4.00,1.00,Female,1,Followup,4 +7599,A,40.00,5.00,3.00,Male,1,Followup,15 +7601,A,22.00,14.0,2.00,Female,1,Followup,28 +7602,B,27.00,1.00,1.00,Female,1,Followup,1 +7605,C,20.00,3.00,5.00,Female,1,Followup,15 +7606,C,22.00,11.0,3.00,Male,1,Followup,33 +7607,C,25.00,2.00,2.00,Female,1,Followup,4 +7608,A,21.00,0.00,0.00,Female,1,Followup,0 +7609,B,27.00,1.00,1.00,Male,0,Followup,1 +7610,C,18.00,7.00,4.00,Male,1,Followup,28 +7611,C,18.00,2.00,2.00,Male,1,Followup,4 +7612,C,27.00,2.00,5.00,Male,1,Followup,10 +7613,B,26.00,0.00,0.00,Male,0,Followup,0 +7614,C,19.00,8.00,7.00,Female,1,Followup,56 +7615,A,21.00,2.00,2.00,Female,1,Followup,4 +7616,B,22.00,0.00,0.00,Female,0,Followup,0 +7617,C,54.00,5.00,2.00,Male,1,Followup,10 +7619,B,20.00,2.00,3.00,Female,1,Followup,6 +7620,A,20.00,3.00,5.00,Male,1,Followup,15 +7621,B,19.00,0.00,0.00,Female,0,Followup,0 +7622,A,18.00,5.00,7.00,Female,1,Followup,35 +7623,C,22.00,4.00,5.00,Male,1,Followup,20 +7624,C,22.00,0.00,0.00,Female,0,Followup,0 +7625,A,18.00,5.00,15.0,Male,1,Followup,75 +7626,B,41.00,2.00,1.00,Female,1,Followup,2 +7627,C,22.00,6.00,3.00,Male,1,Followup,18 +7629,A,18.00,0.00,0.00,Male,0,Followup,0 +7630,A,20.00,12.0,6.00,Male,1,Followup,72 +7631,A,20.00,12.0,2.00,Female,1,Followup,24 +7634,A,18.00,3.00,3.00,Female,1,Followup,9 +7635,C,20.00,2.00,5.00,Female,1,Followup,10 +7637,B,21.00,8.00,4.00,Female,1,Followup,32 +7638,C,20.00,4.00,8.00,Female,1,Followup,32 +7640,B,18.00,1.00,6.00,Male,1,Followup,6 +7641,C,37.00,4.00,6.00,Male,1,Followup,24 +7642,C,19.00,18.0,2.00,Male,1,Followup,36 +7643,C,40.00,2.00,2.00,Female,1,Followup,4 +7644,B,22.00,0.00,0.00,Female,0,Followup,0 +7645,A,23.00,0.00,0.00,Male,0,Followup,0 +7646,B,24.00,2.00,1.00,Female,1,Followup,2 +7647,C,19.00,3.00,7.00,Female,1,Followup,21 +7648,B,21.00,0.00,0.00,Male,1,Followup,0 +7650,A,38.00,2.00,4.00,Male,1,Followup,8 +7651,A,19.00,2.00,5.00,Male,0,Followup,10 +7652,A,39.00,27.0,2.00,Female,1,Followup,54 +7653,C,22.00,2.00,2.00,Male,1,Followup,4 +7654,C,26.00,24.0,2.00,Female,1,Followup,48 +7655,B,20.00,17.0,3.00,Female,1,Followup,51 +7656,B,20.00,3.00,1.00,Female,1,Followup,3 +7657,A,19.00,0.00,0.00,Female,1,Followup,0 +7658,C,20.00,7.00,10.0,Male,1,Followup,70 +7659,C,19.00,6.00,4.00,Female,1,Followup,24 +7660,A,20.00,1.00,4.00,Male,1,Followup,4 +7662,C,27.00,8.00,2.00,Female,1,Followup,16 +7663,B,21.00,9.00,3.00,Female,1,Followup,27 +7664,C,23.00,8.00,6.00,Female,1,Followup,48 +7665,B,20.00,1.00,1.00,Male,1,Followup,1 +7666,B,20.00,2.00,1.00,Male,1,Followup,2 +7668,C,22.00,7.00,2.00,Female,1,Followup,14 +7669,C,58.00,0.00,0.00,Male,0,Followup,0 +7670,A,21.00,7.00,6.00,Male,1,Followup,42 +7672,C,20.00,4.00,1.00,Female,1,Followup,4 +7676,C,25.00,14.0,2.00,Female,1,Followup,28 +7678,B,21.00,5.00,3.00,Female,1,Followup,15 +7679,B,24.00,12.0,1.00,Female,1,Followup,12 +7680,C,25.00,10.0,2.00,Male,1,Followup,20 +7681,B,19.00,11.0,4.00,Female,1,Followup,44 +7682,A,21.00,10.0,3.00,Male,1,Followup,30 +7683,C,23.00,8.00,3.00,Female,1,Followup,24 +7684,A,18.00,1.00,2.00,Female,1,Followup,2 +7685,A,34.00,20.0,1.00,Female,1,Followup,20 +7686,B,20.00,0.00,0.00,Female,0,Followup,0 +7687,A,23.00,4.00,3.00,Male,1,Followup,12 +7688,C,19.00,5.00,5.00,Female,1,Followup,25 +7689,C,28.00,4.00,6.00,Male,1,Followup,24 +7691,A,22.00,0.00,0.00,Male,0,Followup,0 +7692,C,22.00,4.00,1.00,Female,1,Followup,4 +7693,A,27.00,8.00,1.00,Female,1,Followup,8 +7694,A,19.00,2.00,6.00,Female,1,Followup,12 +7695,B,22.00,1.00,4.00,Female,1,Followup,4 +7696,A,22.00,3.00,1.00,Female,1,Followup,3 +7697,C,43.00,1.00,1.00,Female,1,Followup,1 +7698,B,20.00,1.00,3.00,Female,1,Followup,3 +7700,B,28.00,0.00,0.00,Female,0,Followup,0 +7704,A,37.00,0.00,0.00,Female,0,Followup,0 +7706,B,22.00,6.00,4.00,Female,1,Followup,24 +7707,A,22.00,4.00,6.00,Male,1,Followup,24 +7710,C,25.00,0.00,0.00,Female,1,Followup,0 +7711,C,21.00,2.00,2.00,Female,1,Followup,4 +7712,B,22.00,7.00,4.00,Male,1,Followup,28 +7713,C,25.00,11.0,4.00,Female,1,Followup,44 +7714,A,19.00,20.0,4.00,Female,1,Followup,80 +7715,C,21.00,5.00,12.0,Male,1,Followup,60 +7716,B,18.00,1.00,3.00,Female,1,Followup,3 +7717,C,28.00,3.00,3.00,Female,1,Followup,9 +7719,C,20.00,6.00,2.00,Female,1,Followup,12 +7720,C,20.00,2.00,4.00,Male,1,Followup,8 +7723,C,34.00,0.00,0.00,Male,0,Followup,0 +7725,B,48.00,5.00,1.00,Male,1,Followup,5 +7726,A,21.00,2.00,1.00,Male,1,Followup,2 +7727,B,20.00,3.00,2.00,Female,1,Followup,6 +7728,A,22.00,4.00,2.00,Female,1,Followup,8 +7730,C,18.00,4.00,10.0,Female,1,Followup,40 +7731,B,22.00,1.00,2.00,Female,1,Followup,2 +7733,B,21.00,6.00,10.0,Female,1,Followup,60 +7735,C,21.00,4.00,4.00,Female,1,Followup,16 +7736,A,20.00,8.00,4.00,Female,1,Followup,32 +7737,B,38.00,0.00,0.00,Female,0,Followup,0 +7738,C,22.00,8.00,3.00,Female,1,Followup,24 +7739,A,27.00,2.00,9.00,Female,1,Followup,18 +7740,C,21.00,8.00,4.00,Female,1,Followup,32 +7741,A,20.00,1.00,1.00,Female,1,Followup,1 +7742,A,19.00,3.00,2.00,Male,1,Followup,6 +7744,C,24.00,7.00,5.00,Male,1,Followup,35 +7745,B,19.00,3.00,4.00,Female,1,Followup,12 +7746,A,19.00,3.00,2.00,Female,1,Followup,6 +7747,C,21.00,0.00,0.00,Male,1,Followup,0 +7749,,,0.00,0.00,,,Followup,0 +7751,A,24.00,15.0,2.00,Male,1,Followup,30 +7752,B,20.00,15.0,6.00,Female,1,Followup,90 +7753,C,23.00,0.00,0.00,Female,1,Followup,0 +7754,A,19.00,0.00,0.00,Female,0,Followup,0 +7757,B,31.00,5.00,2.00,Female,1,Followup,10 +7760,A,22.00,10.0,5.00,Male,1,Followup,50 +7761,C,27.00,0.00,0.00,Female,0,Followup,0 +7762,C,19.00,4.00,4.00,Female,1,Followup,16 +7763,C,20.00,4.00,5.00,Female,1,Followup,20 +7764,B,25.00,1.00,1.00,Male,1,Followup,1 +7765,B,31.00,2.00,1.00,Male,1,Followup,2 +7766,B,55.00,0.00,0.00,Female,0,Followup,0 +7767,B,20.00,1.00,2.00,Female,1,Followup,2 +7768,C,30.00,6.00,3.00,Female,1,Followup,18 +7770,A,18.00,0.00,0.00,Female,0,Followup,0 +7771,C,20.00,8.00,2.00,Female,1,Followup,16 +7772,A,22.00,6.00,2.00,Female,1,Followup,12 +7774,C,50.00,2.00,1.00,Female,1,Followup,2 +7775,B,54.00,2.00,1.00,Female,1,Followup,2 +7776,C,19.00,1.00,1.00,Female,1,Followup,1 +7777,C,20.00,2.00,1.00,Male,1,Followup,2 +7779,A,28.00,1.00,1.00,Female,0,Followup,1 +7781,C,28.00,10.0,1.00,Male,1,Followup,10 +7782,B,22.00,12.0,2.00,Female,1,Followup,24 +7783,A,46.00,4.00,1.00,Male,1,Followup,4 +7784,C,39.00,0.00,0.00,Female,0,Followup,0 +7788,C,25.00,0.00,0.00,Male,0,Followup,0 +7790,C,39.00,8.00,2.00,Female,1,Followup,16 +7792,C,22.00,5.00,3.00,Female,1,Followup,15 +7793,A,35.00,2.00,2.00,Female,1,Followup,4 +7794,B,55.00,12.0,1.00,Female,1,Followup,12 +7797,C,30.00,15.0,8.00,Male,1,Followup,120 +7798,B,20.00,14.0,1.00,Female,1,Followup,14 +7800,A,23.00,6.00,12.0,Female,1,Followup,72 +7801,A,30.00,0.00,0.00,Female,0,Followup,0 +7802,C,23.00,13.0,1.00,Female,1,Followup,13 +7803,B,18.00,17.0,2.00,Male,1,Followup,34 +7804,A,20.00,17.0,3.00,Female,1,Followup,51 +7805,B,49.00,10.0,1.00,Female,1,Followup,10 +7808,B,21.00,10.0,3.00,Female,1,Followup,30 +7809,B,18.00,0.00,0.00,Female,1,Followup,0 +7810,C,20.00,0.00,0.00,Female,0,Followup,0 +7812,C,28.00,2.00,1.00,Female,1,Followup,2 +7813,C,20.00,0.00,0.00,Female,0,Followup,0 +7814,C,24.00,3.00,1.00,Female,1,Followup,3 +7816,B,32.00,12.0,2.00,Female,1,Followup,24 +7818,C,41.00,0.00,0.00,Female,1,Followup,0 +7820,A,20.00,0.00,0.00,Female,1,Followup,0 +7821,A,52.00,20.0,1.00,Female,1,Followup,20 +7824,B,19.00,2.00,6.00,Female,1,Followup,12 +7825,B,52.00,25.0,2.00,Female,1,Followup,50 +7826,A,19.00,3.00,5.00,Female,1,Followup,15 +7827,C,18.00,4.00,3.00,Female,1,Followup,12 +7828,B,19.00,3.00,1.00,Female,1,Followup,3 +7830,B,18.00,10.0,7.00,Female,1,Followup,70 +7831,A,22.00,2.00,7.00,Female,1,Followup,14 +7832,C,20.00,0.00,0.00,Female,1,Followup,0 +7833,B,22.00,4.00,2.00,Female,1,Followup,8 +7835,A,21.00,28.0,3.00,Male,1,Followup,84 +7838,B,35.00,1.00,1.00,Female,0,Followup,1 +7842,B,23.00,1.00,1.00,Male,0,Followup,1 +7844,C,29.00,4.00,3.00,Female,1,Followup,12 +7845,A,26.00,7.00,3.00,Female,1,Followup,21 +7846,B,19.00,14.0,4.00,Male,1,Followup,56 +7847,C,21.00,14.0,1.00,Female,1,Followup,14 +7849,B,38.00,12.0,3.00,Male,1,Followup,36 +7850,B,22.00,5.00,2.00,Male,1,Followup,10 +7851,B,23.00,8.00,2.00,Female,1,Followup,16 +7853,A,26.00,2.00,6.00,Male,1,Followup,12 +7854,B,29.00,4.00,6.00,Male,1,Followup,24 +7857,B,39.00,8.00,3.00,Female,1,Followup,24 +7858,A,19.00,1.00,3.00,Female,1,Followup,3 +7859,A,20.00,4.00,,Male,1,Followup, +7860,A,21.00,4.00,1.00,Female,1,Followup,4 +7861,B,24.00,2.00,1.00,Male,1,Followup,2 +7863,A,23.00,14.0,2.00,Male,1,Followup,28 +7864,B,32.00,0.00,0.00,Female,1,Followup,0 +7865,B,61.00,5.00,1.00,Female,0,Followup,5 +7866,C,23.00,2.00,1.00,Male,1,Followup,2 +7867,A,18.00,3.00,12.0,Male,1,Followup,36 +7870,A,28.00,2.00,1.00,Female,1,Followup,2 +7871,A,31.00,8.00,4.00,Male,1,Followup,32 +7874,C,30.00,5.00,8.00,Male,1,Followup,40 +7875,B,34.00,12.0,2.00,Male,1,Followup,24 +7876,B,20.00,5.00,4.00,Female,1,Followup,20 +7877,C,19.00,0.00,0.00,Female,1,Followup,0 +7880,B,45.00,4.00,1.00,Female,1,Followup,4 +7881,B,45.00,10.0,2.00,Female,1,Followup,20 +7882,B,20.00,10.0,1.00,Female,1,Followup,10 +7885,C,18.00,5.00,3.00,Female,1,Followup,15 +7886,A,41.00,8.00,1.00,Male,1,Followup,8 +7887,C,42.00,0.00,0.00,Female,1,Followup,0 +7888,A,49.00,0.00,0.00,Female,1,Followup,0 +7889,A,24.00,9.00,3.00,Female,1,Followup,27 +7890,B,18.00,6.00,3.00,Female,1,Followup,18 +7893,A,27.00,0.00,0.00,Female,0,Followup,0 +7894,C,21.00,4.00,1.00,Male,1,Followup,4 +7895,C,24.00,18.0,1.00,Female,1,Followup,18 +7896,A,19.00,6.00,3.00,Female,1,Followup,18 +7897,C,21.00,2.00,4.00,Female,1,Followup,8 +7898,A,20.00,0.00,0.00,Female,1,Followup,0 +7899,C,22.00,3.00,2.00,Male,0,Followup,6 +7900,C,21.00,4.00,12.0,Male,1,Followup,48 +7901,B,18.00,1.00,1.00,Male,1,Followup,1 +7902,A,21.00,4.00,2.00,Male,1,Followup,8 +7903,A,23.00,0.00,0.00,Female,0,Followup,0 +7904,C,20.00,1.00,2.00,Female,1,Followup,2 +7905,A,48.00,1.00,1.00,Female,0,Followup,1 +7908,B,20.00,7.00,5.00,Female,1,Followup,35 +7909,B,46.00,6.00,1.00,Female,1,Followup,6 +7910,B,36.00,19.0,3.00,Female,1,Followup,57 +7911,C,22.00,2.00,3.00,Female,1,Followup,6 +7912,C,26.00,8.00,1.00,Male,1,Followup,8 +7916,A,47.00,28.0,2.00,Female,1,Followup,56 +7917,A,18.00,1.00,2.00,Female,1,Followup,2 +7918,B,19.00,18.0,3.00,Male,1,Followup,54 +7922,A,21.00,1.00,1.00,Female,1,Followup,1 +7923,B,19.00,9.00,4.00,Female,1,Followup,36 +7925,A,42.00,0.00,0.00,Female,0,Followup,0 +7926,C,29.00,6.00,3.00,Male,1,Followup,18 +7929,A,55.00,6.00,3.00,Female,1,Followup,18 +7930,B,20.00,0.00,0.00,Female,1,Followup,0 +7931,B,19.00,1.00,2.00,Female,0,Followup,2 +7932,C,22.00,7.00,2.00,Female,1,Followup,14 +7934,B,20.00,9.00,4.00,Male,1,Followup,36 +7936,C,20.00,5.00,5.00,Female,1,Followup,25 +7937,B,42.00,16.0,1.00,Female,1,Followup,16 +7939,C,20.00,2.00,4.00,Male,1,Followup,8 +7940,C,34.00,2.00,1.00,Female,1,Followup,2 +7941,B,19.00,12.0,2.00,Male,1,Followup,24 +7942,B,28.00,0.00,0.00,Female,0,Followup,0 +7944,B,21.00,4.00,5.00,Female,1,Followup,20 +7947,A,27.00,10.0,3.00,Female,1,Followup,30 +7948,C,19.00,3.00,1.00,Female,1,Followup,3 +7950,C,20.00,1.00,3.00,Female,1,Followup,3 +7951,C,21.00,0.00,0.00,Male,0,Followup,0 +7952,A,20.00,2.00,10.0,Female,1,Followup,20 +7953,A,23.00,0.00,0.00,Female,0,Followup,0 +7954,A,21.00,5.00,4.00,Female,1,Followup,20 +7955,A,23.00,10.0,2.00,Female,1,Followup,20 +7957,A,23.00,7.00,4.00,Female,1,Followup,28 +7959,A,40.00,6.00,3.00,Female,1,Followup,18 +7960,A,23.00,12.0,4.00,Female,1,Followup,48 +7962,A,19.00,4.00,1.00,Female,1,Followup,4 +7968,C,20.00,0.00,0.00,Male,0,Followup,0 +7969,C,18.00,0.00,0.00,Female,0,Followup,0 +7972,A,20.00,5.00,5.00,Female,1,Followup,25 +7973,B,45.00,0.00,0.00,Male,0,Followup,0 +7974,C,21.00,0.00,0.00,Female,0,Followup,0 +7975,A,19.00,7.00,7.00,Male,1,Followup,49 +7977,B,40.00,24.0,2.00,Female,1,Followup,48 +7979,A,19.00,4.00,6.00,Male,1,Followup,24 +7980,C,23.00,11.0,4.00,Female,1,Followup,44 +7981,C,21.00,9.00,10.0,Male,1,Followup,90 +7982,B,28.00,14.0,7.00,Male,1,Followup,98 +7983,B,19.00,2.00,4.00,Female,1,Followup,8 +7984,B,21.00,16.0,3.00,Female,1,Followup,48 +7985,B,32.00,14.0,1.00,Female,1,Followup,14 +7988,B,21.00,18.0,6.00,Male,1,Followup,108 +7990,A,19.00,0.00,0.00,Female,1,Followup,0 +7991,A,32.00,0.00,0.00,Male,0,Followup,0 +7992,C,49.00,12.0,2.00,Female,1,Followup,24 +7993,C,20.00,4.00,8.00,Female,1,Followup,32 +7995,B,18.00,8.00,2.00,Female,1,Followup,16 +7996,A,19.00,18.0,10.0,Male,1,Followup,180 +7997,B,43.00,16.0,2.00,Female,1,Followup,32 +7998,B,18.00,12.0,2.00,Female,1,Followup,24 +7999,C,18.00,14.0,3.00,Female,1,Followup,42 +8000,B,26.00,0.00,0.00,Male,0,Followup,0 +8001,A,40.00,0.00,0.00,Male,0,Followup,0 +8004,A,21.00,20.0,5.00,Male,1,Followup,100 +8005,C,20.00,4.00,8.00,Female,1,Followup,32 +8007,B,23.00,7.00,2.00,Male,1,Followup,14 +8009,A,38.00,2.00,2.00,Female,1,Followup,4 +8010,C,18.00,5.00,4.00,Male,1,Followup,20 +8012,A,49.00,16.0,1.00,Female,1,Followup,16 +8014,C,22.00,3.00,4.00,Female,1,Followup,12 +8016,B,20.00,1.00,1.00,Male,1,Followup,1 +8020,B,23.00,1.00,1.00,Male,1,Followup,1 +8024,A,23.00,3.00,3.00,Female,1,Followup,9 +8025,B,21.00,3.00,3.00,Male,1,Followup,9 +8026,A,23.00,7.00,3.00,Male,1,Followup,21 +8030,A,19.00,3.00,8.00,Female,1,Followup,24 +8031,B,21.00,5.00,8.00,Female,1,Followup,40 +8032,B,21.00,3.00,3.00,Female,1,Followup,9 +8033,A,21.00,1.00,6.00,Female,1,Followup,6 +8034,C,22.00,1.00,1.00,Male,1,Followup,1 +8036,B,18.00,7.00,2.00,Female,1,Followup,14 +8037,C,20.00,8.00,5.00,Male,1,Followup,40 +8040,C,32.00,5.00,2.00,Female,1,Followup,10 +8041,B,21.00,5.00,4.00,Female,1,Followup,20 +8042,B,44.00,5.00,4.00,Male,1,Followup,20 +8043,A,21.00,8.00,5.00,Female,1,Followup,40 +8044,A,28.00,18.0,2.00,Male,1,Followup,36 +8046,A,19.00,1.00,4.00,Male,1,Followup,4 +8048,C,29.00,2.00,1.00,Female,1,Followup,2 +8049,C,21.00,3.00,5.00,Female,1,Followup,15 +8051,C,22.00,18.0,1.00,Male,1,Followup,18 +8052,A,48.00,8.00,2.00,Female,1,Followup,16 +8053,C,25.00,4.00,3.00,Female,1,Followup,12 +8055,A,42.00,0.00,0.00,Female,1,Followup,0 +8057,B,19.00,8.00,3.00,Male,1,Followup,24 +8058,A,18.00,5.00,3.00,Female,1,Followup,15 +8059,C,34.00,4.00,2.00,Male,1,Followup,8 +8060,C,40.00,0.00,0.00,Female,0,Followup,0 +8062,A,23.00,4.00,1.00,Female,1,Followup,4 +8063,A,21.00,4.00,6.00,Female,1,Followup,24 +8064,B,23.00,2.00,1.00,Male,1,Followup,2 +8065,C,21.00,0.00,0.00,Male,1,Followup,0 +8067,A,42.00,14.0,2.00,Female,1,Followup,28 +8068,B,19.00,12.0,7.00,Female,1,Followup,84 +8071,C,23.00,4.00,2.00,Male,1,Followup,8 +8073,A,24.00,8.00,2.00,Female,1,Followup,16 +8075,C,18.00,0.00,0.00,Male,0,Followup,0 +8076,A,23.00,4.00,1.00,Male,0,Followup,4 +8077,C,35.00,6.00,1.00,Female,1,Followup,6 +8078,B,30.00,4.00,1.00,Female,1,Followup,4 +8082,C,19.00,0.00,0.00,Female,1,Followup,0 +8084,B,19.00,0.00,0.00,Female,0,Followup,0 +8085,B,27.00,2.00,2.00,Female,1,Followup,4 +8086,C,23.00,5.00,3.00,Female,1,Followup,15 +8116,B,21.00,3.00,4.00,Female,1,Followup,12 +8118,C,21.00,3.00,2.00,Female,1,Followup,6 +8119,B,25.00,0.00,0.00,Female,0,Followup,0 +8123,A,30.00,20.0,8.00,Male,1,Followup,160 +8126,C,20.00,4.00,7.00,Male,1,Followup,28 +8128,C,57.00,4.00,1.00,Female,1,Followup,4 +8129,A,21.00,3.00,9.00,Female,1,Followup,27 diff --git a/papers/Avocado_Update/campbell_lakens_supplement/disregard_BF_CET_R2.R b/papers/Avocado_Update/campbell_lakens_supplement/disregard_BF_CET_R2.R new file mode 100644 index 00000000..cb4ad909 --- /dev/null +++ b/papers/Avocado_Update/campbell_lakens_supplement/disregard_BF_CET_R2.R @@ -0,0 +1,179 @@ +## +# Here are the settings for the plot: +BFthres<-3 +alpha1<-0.05 +alpha2<-0.05 +p <- K <- 12 + + +## code to calculate/estimate intersection of two curves: +curve_intersect <- function(curve1, curve2, empirical=TRUE, domain=NULL) { + if (!empirical & missing(domain)) { + stop("'domain' must be provided with non-empirical curves") + } + + if (!empirical & (length(domain) != 2 | !is.numeric(domain))) { + stop("'domain' must be a two-value numeric vector, like c(0, 10)") + } + + if (empirical) { + # Approximate the functional form of both curves + curve1_f <- approxfun(curve1$x, curve1$y, rule = 2) + curve2_f <- approxfun(curve2$x, curve2$y, rule = 2) + + # Calculate the intersection of curve 1 and curve 2 along the x-axis + point_x <- uniroot(function(x) curve1_f(x) - curve2_f(x), + c(min(curve1$x), max(curve1$x)))$root + + # Find where point_x is in curve 2 + point_y <- curve2_f(point_x) + } else { + # Calculate the intersection of curve 1 and curve 2 along the x-axis + # within the given domain + point_x <- uniroot(function(x) curve1(x) - curve2(x), domain)$root + + # Find where point_x is in curve 2 + point_y <- curve2(point_x) + } + + return(list(x = point_x, y = point_y)) +} + +#### + +library(BayesFactor) + +# Set colours # +green<-rgb(0.1, 0.8, 0.1, alpha=0.25) +blue<-rgb(0.1, 0.8, 0.2, alpha=0.25) +yellow<-rgb(0.3, 0.8, 0.2, alpha=0.25) +clear<-rgb(1, 0, 0, alpha=0.0001) +red<-rgb(1, 0, 0.1, alpha=0.25) + + +################################# +lseq<-function(from, to, length.out){10^(seq(log10(from), log10(to), length.out = length.out))} + + + + + + +resultmat<-data.frame() +Nvec<-c(lseq(30,200,50),200,240:260, 300, 500,750,1000) +BFvec<-c(round(1/BFthres,3),BFthres) + +k<-1 +for(i in 1:length(BFvec)){ + for(j in 1:length(Nvec)){ +N <- Nvec[j] +Delta <- 0.1 +BF <- BFvec[i] + +matchBF<-function(x){(BF-linearReg.R2stat(N, p, x, rscale = "medium", simple = TRUE))} + +R2 <- tryCatch(uniroot(matchBF, interval=c(0.0001,0.999))$root, error=function(x) 0) + +resultmat[k,"BF"]<-BF +resultmat[k,"N"]<-N +resultmat[k,"R2"]<-R2 +resultmat[k,"p"]<-p +resultmat[k,"Delta"]<-Delta + +R2_CET<-function(x){ +Fstat <- (x/K)/( (1-x)/(N-K-1) ) +pval1 <- pf(Fstat,df1 = K, df2 = N-K-1, lower.tail=FALSE) +pval2 <- pf(Fstat, df1 = K, df2 = N-K-1, ncp = (N*Delta)/(1-Delta), lower.tail=TRUE ) +if(pval1=alpha1){return(list(pval=pval2,result=-1)) } + } + +R2_NHST<-function(x){ + Fstat <- (x/K)/( (1-x)/(N-K-1) ) + pf(Fstat,df1 = K, df2 = N-K-1,lower.tail=FALSE) +} + +R2_EQUIV<-function(x){ + Fstat <- (x/K)/( (1-x)/(N-K-1) ) + pf(Fstat, df1 = K, df2 = N-K-1, ncp = (N*Delta)/(1-Delta) ,lower.tail=TRUE) +} + + +if(BF>=1){ +R2_freq <- uniroot(function(x){R2_NHST(x)-alpha1}, interval=c(0,1))$root} + + +if(BF<1){ +R2_freq <- uniroot(function(x){R2_EQUIV(x)-alpha2}, interval=c(0,1))$root} + + + +resultmat[k, "R2_freq"] <- R2_freq + +k <- k+1 +print(k) +}} + +library(ggplot2) + + + +###################### +x <-data.frame(N=resultmat[resultmat$BF==unique(resultmat $BF)[1],]$N) +x$R2<-resultmat[resultmat $BF==unique(resultmat $BF)[1],]$R2_freq +x$x2<-resultmat[resultmat $BF==unique(resultmat $BF)[2],]$R2_freq + +interxect_x<-round(curve_intersect(data.frame(x=x$N, y=x$R2), data.frame(x=x$N, y=x$x2) )$x) + + +equivplot<- ggplot(x, aes(x=N, y=R2)) + + geom_ribbon(data=subset(x, 0 <= N & N <= interxect_x), + aes(ymin=R2,ymax=x2), fill="yellow", alpha="0.5") + + geom_ribbon(data=subset(x, 0 <= (N+1) & (N-1) <= interxect_x+1), + aes(ymin=0,ymax= R2), fill="red", alpha="0.5") + + geom_ribbon(data=subset(x, interxect_x <= (N) & (N-1) <=10000), + aes(ymin=0,ymax= x2), fill="red", alpha="0.5") + + geom_ribbon(data=subset(x, interxect_x <= N & N <=10000), + aes(ymin= x2,ymax= R2), fill="palegreen1", alpha="0.5")+ + geom_ribbon(data=subset(x, interxect_x <= (N+1) & (N-3) <=10000), + aes(ymin= R2,ymax= 1), fill="green", alpha="0.5")+ + geom_ribbon(data=subset(x, 0<= (N+2) & (N-2) <=interxect_x), + aes(ymin= x2,ymax= 1), fill="green", alpha="0.5")+ + geom_line(aes(y = R2)) + + geom_line(aes(y = x2))+ geom_line(aes(y = 0.10), lty=3)+ + scale_y_log10(breaks=c(.001,.1,0.5,1), limits=c(0.0001,1))+ scale_x_log10(breaks=c(10,30,50,100, interxect_x ,500,1000,5000,10000)) + + + + + + + + +##### + + + +x <-data.frame(N=resultmat[resultmat$BF==unique(resultmat $BF)[1],]$N) +x$R2<-resultmat[resultmat$BF==unique(resultmat $BF)[1],]$R2 +x$x2<-resultmat[resultmat$BF==unique(resultmat $BF)[2],]$R2 + +BFplot<- ggplot(x, aes(x=N, y=R2)) + geom_line(aes(y = R2)) + + geom_line(aes(y = x2)) + + scale_y_log10(breaks=c(.001,.1,0.5,1), limits=c(0.0001,1))+ scale_x_log10(breaks=c(10,30,50,100,500,1000,5000,10000)) + + geom_ribbon(data=subset(x, 0 <= (N+1) & (N-1) <= 10000), + aes(ymin=x2,ymax=1), fill="green", alpha="0.5") + + geom_ribbon(data=subset(x, 0 <= N & N <= 10000), + aes(ymin=R2,ymax= x2), fill="yellow", alpha="0.5") + + geom_ribbon(data=subset(x, 0 <= (N+1) & (N-1) <=10000), + aes(ymin=0,ymax= R2), fill="red", alpha="0.5") + + + + require(gridExtra) + + grid.arrange(equivplot, BFplot, ncol=2) + + +## This behaviour may seem odd but: +#plot(apply(cbind(lseq(50,500,90)), 1, function(x){ci.R2(R2=0.12,N=x, K=12, alpha.upper=0.05, alpha.lower=0.0, Random.Regressors=FALSE)$Upper.Conf.Limit.R2})~lseq(50,500,90), ylim=c(0,0.20)); abline(0.12,0) \ No newline at end of file diff --git a/papers/Avocado_Update/campbell_lakens_supplement/disregard_hawthorne.R b/papers/Avocado_Update/campbell_lakens_supplement/disregard_hawthorne.R new file mode 100644 index 00000000..7cd86241 --- /dev/null +++ b/papers/Avocado_Update/campbell_lakens_supplement/disregard_hawthorne.R @@ -0,0 +1,171 @@ +library(gee) +library(geepack) +library(BayesFactor) +library(RCurl) +library(httr) + +############################################################# +# This loads custom code for ANOVA non-inferiority testing from github repo: +script <- getURL("https://raw.githubusercontent.com/harlanhappydog/noninfANOVAlm/master/noninfANOVA.R", ssl.verifypeer = FALSE) +eval(parse(text = script)) + + +############################################################# +## This reads in the data, and formats it appropriately: +Hdata <-read.csv(text= getURL("https://raw.githubusercontent.com/harlanhappydog/noninfANOVAlm/master/analysisdataset2018.csv")) + +Hdata$group<-as.factor(Hdata$group) +Hdata$t<-as.factor(Hdata$t) +Hdata$participant_ID <-as.factor(Hdata$participant_ID) + +Hdata<- Hdata[!(Hdata$group)=="",] +Hdata$group<-as.factor(as.character(Hdata$group)) + +Hdata<-Hdata[order(Hdata$participant_ID),] +Hdata<-Hdata[Hdata$itt==1,] + +############################################################# +## This reads reduces the data to subset of complete cases (i.e., participants that have both baseline and follow-up recorded for at least one outcome) : + +Hdata_complete<-Hdata[Hdata$participant_ID%in%(c(names(table(Hdata$participant_ID)[table(Hdata$participant_ID)==2]))),] + +Hdata_complete$participant_ID<-as.factor(as.character((Hdata_complete$participant_ID))) +Hdata_complete<-Hdata_complete[order(Hdata_complete$participant_ID),] + +Hdata_complete <- Hdata_complete[order(Hdata_complete$participant_ID),] + + + +base_data<-na.omit(Hdata[Hdata$t=="Baseline",][,c("participant_ID","totaldrinking", "group")]) + +followup_data<-na.omit(Hdata[Hdata$t=="Followup",][,c("participant_ID","totaldrinking")]) + +side_data<-merge(base_data , followup_data, by="participant_ID", all=TRUE) +side_data$totaldrinking.diff<-side_data$totaldrinking.y-side_data$totaldrinking.x + + +############################################################# +## This creates a "wide" version of the complete cases data: + + + +#### sample sizes don't quite line up with what is published for Followup outcomes: +library(xtable) + + +### Group A +n_A <- length(na.omit(side_data[side_data$group=="A",]$totaldrinking.x)) +m_A <- mean(na.omit(side_data[ side_data$group=="A",]$totaldrinking.x)) +sd_A <- sd(na.omit(side_data[ side_data$group=="A",]$totaldrinking.x)) + + +### Group B +n_B <- length(na.omit(side_data[ side_data$group=="B",]$totaldrinking.x)) +m_B <- mean(na.omit(side_data[ side_data$group=="B",]$totaldrinking.x)) +sd_B <- sd(na.omit(side_data[ side_data$group=="B",]$totaldrinking.x)) + +### Group C +n_C <- length(na.omit(side_data[ side_data$group=="C",]$totaldrinking.x)) +m_C <- mean(na.omit(side_data[ side_data$group=="C",]$totaldrinking.x)) +sd_C <- sd(na.omit(side_data[ side_data$group=="C",]$totaldrinking.x)) + +### Total +n_Total<- length(na.omit(side_data[,]$totaldrinking.x)) +m_Total <- mean(na.omit(side_data[,]$totaldrinking.x)) +sd_Total <- sd(na.omit(side_data[,]$totaldrinking.x)) + + +baseline <-c(c(n_A,m_A,sd_A),c(n_B,m_B,sd_B),c(n_C,m_C,sd_C),c(n_Total,m_Total,sd_Total)) +### Group A +n_A <- length(na.omit(side_data[side_data$group=="A",]$totaldrinking.y)) +m_A <- mean(na.omit(side_data[ side_data$group=="A",]$totaldrinking.y)) +sd_A <- sd(na.omit(side_data[ side_data$group=="A",]$totaldrinking.y)) + + +### Group B +n_B <- length(na.omit(side_data[ side_data$group=="B",]$totaldrinking.y)) +m_B <- mean(na.omit(side_data[ side_data$group=="B",]$totaldrinking.y)) +sd_B <- sd(na.omit(side_data[ side_data$group=="B",]$totaldrinking.y)) + +### Group C +n_C <- length(na.omit(side_data[ side_data$group=="C",]$totaldrinking.y)) +m_C <- mean(na.omit(side_data[ side_data$group=="C",]$totaldrinking.y)) +sd_C <- sd(na.omit(side_data[ side_data$group=="C",]$totaldrinking.y)) + +### Total +n_Total<- length(na.omit(side_data[,]$totaldrinking.y)) +m_Total <- mean(na.omit(side_data[,]$totaldrinking.y)) +sd_Total <- sd(na.omit(side_data[,]$totaldrinking.y)) + + +followup <-c(c(n_A,m_A,sd_A),c(n_B,m_B,sd_B),c(n_C,m_C,sd_C),c(n_Total,m_Total,sd_Total)) + + +### Group A +n_A <- length(na.omit(side_data[side_data$group=="A",]$totaldrinking.diff)) +m_A <- mean(na.omit(side_data[ side_data$group=="A",]$totaldrinking.diff)) +sd_A <- sd(na.omit(side_data[ side_data$group=="A",]$totaldrinking.diff)) + + +### Group B +n_B <- length(na.omit(side_data[ side_data$group=="B",]$totaldrinking.diff)) +m_B <- mean(na.omit(side_data[ side_data$group=="B",]$totaldrinking.diff)) +sd_B <- sd(na.omit(side_data[ side_data$group=="B",]$totaldrinking.diff)) + +### Group C +n_C <- length(na.omit(side_data[ side_data$group=="C",]$totaldrinking.diff)) +m_C <- mean(na.omit(side_data[ side_data$group=="C",]$totaldrinking.diff)) +sd_C <- sd(na.omit(side_data[ side_data$group=="C",]$totaldrinking.diff)) + +### Total +n_Total<- length(na.omit(side_data[,]$totaldrinking.diff)) +m_Total <- mean(na.omit(side_data[,]$totaldrinking.diff)) +sd_Total <- sd(na.omit(side_data[,]$totaldrinking.diff)) + + +diff<-c(c(n_A,m_A,sd_A),c(n_B,m_B,sd_B),c(n_C,m_C,sd_C),c(n_Total,m_Total,sd_Total)) + +table_for_paper<-t(rbind(baseline, followup, diff)) + +rownames(table_for_paper)<-c(c("n_A","m_A","sd_A"),c("n_B","m_B","sd_B"),c("n_C","m_C","sd_C"),c("n_Total","m_Total","sd_Total")) + +xtable(table_for_paper) + + + + +#### Analysis: + + +Xmatrix <- model.matrix(totaldrinking.diff ~ group, data= side_data) +lmmodel <- lm(totaldrinking.diff ~ group , data= side_data) + +R2 <- summary(lmmodel)$r.squared +Fstat <- summary(lmmodel)$fstatistic[1] +K <- dim(Xmatrix)[2] - 1 +N <- dim(Xmatrix)[1] +Delta <- 0.01 + +pf(Fstat,df1=K,df2=N-K-1,ncp=(N*Delta)/(1-Delta),lower.tail=TRUE) + +linearReg.R2stat(N=N, p=K, R2= R2, simple=TRUE) + + + + +### The code bellow replicates the results published in McCambridge et al. (2019) +### Note: there appears to be a typo in McCambridge et al. (2019) Table 2: +### p-values 0.89 and 0.86 are switched. + +Hdata$group<-relevel(Hdata$group,"A") + +mod0 <- geeglm(totaldrinking ~ + group+t, id= participant_ID, corstr="independence", data= Hdata, x=TRUE) +mod1 <- geeglm(totaldrinking ~ group*t + group+t, id= participant_ID, corstr="independence", data= Hdata) +(anova(mod1,mod0)) +summary(mod1)$coefficients + +Hdata$group<-relevel(Hdata$group,"C") +mod1a <- geeglm(totaldrinking ~ group*t + group+t, id= participant_ID, corstr="independence", data= Hdata) +summary(mod1a) + + diff --git a/papers/Avocado_Update/campbell_lakens_supplement/disregard_simFigA.pdf b/papers/Avocado_Update/campbell_lakens_supplement/disregard_simFigA.pdf new file mode 100644 index 00000000..8eca3909 Binary files /dev/null and b/papers/Avocado_Update/campbell_lakens_supplement/disregard_simFigA.pdf differ diff --git a/papers/Avocado_Update/campbell_lakens_supplement/disregard_simFigB.pdf b/papers/Avocado_Update/campbell_lakens_supplement/disregard_simFigB.pdf new file mode 100644 index 00000000..dc478c3d Binary files /dev/null and b/papers/Avocado_Update/campbell_lakens_supplement/disregard_simFigB.pdf differ diff --git a/papers/Avocado_Update/campbell_lakens_supplement/disregard_simulation_study.R b/papers/Avocado_Update/campbell_lakens_supplement/disregard_simulation_study.R new file mode 100644 index 00000000..21a7d549 --- /dev/null +++ b/papers/Avocado_Update/campbell_lakens_supplement/disregard_simulation_study.R @@ -0,0 +1,154 @@ +set.seed(123) + + +# Functions for rounding: +ceiling_dec <- function(x, level=1) round((x + 5*10^(-level-1))/0.5, level)*0.5 + +# number of simulations: +nSim<-10000 + +resultsmat <- data.frame( +JJJindex=NA, +trueP2_num= NA, +power=NA, +as.matrix(expand.grid(Nvar=c(2,4),sigma2=c(0.4,0.5,1), Nsample=c(120, 1200,12000)))) + +resultsmat$trueP2 <- NA + +resultsmat$alpha_sig <- 0.05 + +dim(resultsmat)[1] + + +resultsmat<-resultsmat[order(resultsmat$Nvar, resultsmat$sigma2),] +pval_list<-list() +problist<-list() +for(jjj in 1:dim(resultsmat)[1]){ + +print(jjj) + +resultsmat[jjj, "JJJindex"] <- paste("jjj",jjj,sep="") +sigma2 <- resultsmat[jjj, "sigma2"] +N <- resultsmat[jjj, "Nsample"] +nVar <- resultsmat[jjj, "Nvar"] + +basematrix <- data.frame(expand.grid( + X1=c(0,1), + X2=c(0,1), + X3=c(0,1), + X4=c(0,1))) + +X1 <- rep(basematrix$X1,2000000) +X2 <- rep(basematrix$X2,2000000) +X3 <- rep(basematrix$X3,2000000) +X4 <- rep(basematrix$X4,2000000) + +epsilon <- rnorm(length(X1), 0, sqrt(sigma2)) + + +if(nVar==2){ +X <- as.matrix(cbind(1, X1, X2)) +betavec <- c(0.0, 0.2, 0.3) + +Y <- c(X%*%betavec) + epsilon +sigmaXY <-(c(cov(X[,-1], Y))) +SIGMAX <- cov(X[,-1]) +(trueP2_num <-(t(sigmaXY)%*%solve(SIGMAX)%*%sigmaXY)) + +resultsmat[jjj, "trueP2_num"] <- trueP2_num +resultsmat[jjj, "trueP2"] <-(resultsmat[jjj, "trueP2_num"]/var(Y)) + +confirmmod<-lm(Y~ X[,-1]) +print(c(summary(confirmmod)$r.squared,resultsmat[jjj, "trueP2"])) + +resultsmat[jjj, "trueP2_v2"] <- summary(confirmmod)$r.squared + +Xmatrix_ <- X[1:N,] +} + +if(nVar==4){ +X <- as.matrix(cbind(1, X1, X2, X3, X4)) +betavec <- c(0.0, 0.2, 0.2, -0.1, -0.2) + +Y <- c(X%*%betavec) + epsilon +sigmaXY <- c(cov(X[,-1], Y)) +SIGMAX <- cov(X[,-1]) +(trueP2_num <- (t(sigmaXY)%*%solve(SIGMAX)%*%sigmaXY)) + +resultsmat[jjj, "trueP2_num"] <- trueP2_num +resultsmat[jjj, "trueP2"] <-(resultsmat[jjj, "trueP2_num"]/var(Y)) + + +confirmmod<-lm(Y~ X[,-1]) +print(c(summary(confirmmod)$r.squared,resultsmat[jjj, "trueP2"])) + +resultsmat[jjj, "trueP2_v2"] <- summary(confirmmod)$r.squared + +Xmatrix_ <- X[1:N,] +} + + +pval_list[[jjj]]<-list() +Deltavec<-seq(0.01,0.10,0.005) + +for(iii in 1:nSim){ + + + + epsilon <- rnorm(N, 0, sqrt(sigma2)) + Y <- Xmatrix_%*%betavec + epsilon + + lmmodel<-lm(Y~ Xmatrix_[,-1]) + Xmatrix <- model.matrix(lmmodel) + + R2 <- summary(lmmodel)$r.squared + Fstat <- summary(lmmodel)$fstatistic[1] + K <- dim(Xmatrix)[2] - 1 + N <- dim(Xmatrix)[1] + + pval_list[[jjj]][[iii]]<-vector() + + for(kk in 1:length(Deltavec)){ + Delta<-Deltavec[kk] + pval <- pf(Fstat,df1=K,df2=N-K-1,ncp=(N*Delta)/(1-Delta),lower.tail=TRUE) + pval_list[[jjj]][[iii]][kk]<-pval + } + + } + +pvalmat<-as.data.frame(pval_list[[jjj]], col.names=NA, row.names=Deltavec) +problist[[jjj]]<-rowMeans(pvalmat0.03 & resultsmatall$trueP2_v2<0.05]<-round( mean(resultsmatall$trueP2_v2[resultsmatall$trueP2_v2>0.03 & resultsmatall$trueP2_v2<0.05]),3) + +resultsmatall$trueP2_v2[resultsmatall$trueP2_v2>0.06 & resultsmatall$trueP2_v2<0.07]<-round( mean(resultsmatall$trueP2_v2[resultsmatall$trueP2_v2>0.06 & resultsmatall$trueP2_v2<0.07]),3) + +resultsmatall$trueP2_v2[resultsmatall$trueP2_v2>0.07]<-round( mean(resultsmatall$trueP2_v2[resultsmatall$trueP2_v2>0.07]),3) + +resultsmatall$trueP2_v2[resultsmatall$trueP2_v2<0.02]<-round( mean(resultsmatall$trueP2_v2[resultsmatall$trueP2_v2<0.02]),3) + +resultsmatall$P2 <-as.factor(round((resultsmatall$trueP2_v2),3)) +resultsmatall$N <-as.factor(resultsmatall$Nsample) + +resultsmatall$g <- as.factor(paste(as.character(resultsmatall$P2),as.character(resultsmatall$N), sep="_")) + +resultsmatall <- transform(resultsmatall, + Nvar = factor(Nvar, levels = sort(unique(resultsmatall$Nvar)), c( (("K = 2")),(("K = 4"))) )) + +#saveRDS(resultsmatall,'~/Desktop/UBC/ThesisProposal/Rcode/lakens_project/resultsmatall.rds') + +resultsmatall<- readRDS('~/Desktop/UBC/ThesisProposal/Rcode/lakens_project/resultsmatall.rds') + +resultsmatall$KK <- as.numeric(resultsmatall$Nvar)*2 +resultsmatall$NN <- as.numeric(as.character(resultsmatall$N)) + + +resultsmatall$power <-NA +power_estimate<-function(Delta, K, N){ +Fstat_star <- qf(0.05,df1=K,df2=N-K-1,ncp=(N*Delta)/(1-Delta),lower.tail=TRUE) +power<-pf(Fstat_star,df1=K,df2=N-K-1,lower.tail=TRUE) +return(round(power,3))} + + +resultsmatall[resultsmatall$P2==0,]$power <- apply(resultsmatall[resultsmatall$P2==0, c("Delta","KK","NN")],1, function(y){ power_estimate(y[1],y[2],y[3])}) + + +#### plot with truncated axis: +library(ggplot2) +qplot(x=Delta, y= pr_less_alpha, group= g, pch=N, lty=N, col= P2, data= resultsmatall)+geom_line()+ geom_hline(yintercept = 0.05)+ facet_grid(Nvar ~ . ) + scale_x_continuous(breaks = seq(0, 0.1, by = 0.01)) + scale_y_continuous(breaks = seq(-0.01, 1, by = 0.05))+ coord_cartesian(ylim = c(0, 0.20))+ labs(x = expression(Delta), y = expression("probability of p" < alpha))+geom_line(aes(y = power, x= Delta), color = "black", linetype = "dotted") + +#### plot with full axis: +library(ggplot2) +qplot(x=Delta, y= pr_less_alpha, group= g, pch=N, lty=N, col= P2, data= resultsmatall)+geom_line()+ geom_hline(yintercept = 0.05)+ facet_grid(Nvar ~. ) + scale_x_continuous(breaks = seq(0, 0.1, by = 0.01)) + scale_y_continuous(breaks = seq(0, 1, by = 0.1))+ labs(x = expression(Delta),y = expression("probability of p" < alpha))+ coord_cartesian(ylim = c(0, 1)) +geom_line(aes(y = power, x= Delta), color = "black", linetype = "dotted") + + + + diff --git a/papers/Avocado_Update/campbell_lakens_supplement/lakens4.png b/papers/Avocado_Update/campbell_lakens_supplement/lakens4.png new file mode 100644 index 00000000..63fcd25d Binary files /dev/null and b/papers/Avocado_Update/campbell_lakens_supplement/lakens4.png differ diff --git a/papers/Avocado_Update/campbell_lakens_verification.html b/papers/Avocado_Update/campbell_lakens_verification.html new file mode 100644 index 00000000..540ce142 --- /dev/null +++ b/papers/Avocado_Update/campbell_lakens_verification.html @@ -0,0 +1,5983 @@ + + + + + + + + + + + +Verifying TOSTER’s F-test Equivalence Procedure + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+

Verifying TOSTER’s F-test Equivalence Procedure

+

A reproduction of the simulation study in Campbell & Lakens (2021)

+
+ + + +
+ +
+
Author
+
+

Aaron R. Caldwell

+
+
+ +
+
Published
+
+

September 5, 2026

+
+
+ + +
+ + + +
+ + +
+
+Code +
library(TOSTER)
+library(ggplot2)
+library(dplyr)
+library(tidyr)
+library(knitr)
+
+theme_set(theme_bw(base_size = 12))
+set.seed(123)
+
+
+
+

Purpose

+

@Campbell_2021 proposed an omnibus non-inferiority (“equivalence”) test for \(R^2\) in multivariable linear regression and for the omnibus effect in a one-way ANOVA, and evaluated its operating characteristics by simulation. TOSTER::equ_ftest() implements a generalization of that procedure.

+

This document does three things:

+
    +
  1. Establishes that TOSTER’s non-centrality parameter is algebraically identical to the published one in the setting Campbell & Lakens studied, and confirms this numerically.
  2. +
  3. Reproduces their simulation study using TOSTER’s implementation, and checks that the recovered operating characteristics match what the paper reports.
  4. +
  5. Notes a few things about the published supplementary code that are worth knowing if anyone tries to run it directly.
  6. +
+

This is a verification exercise. Nothing here is currently cited in the manuscript.

+
+
+
+ +
+
+NoteSummary of findings +
+
+
+
    +
  • TOSTER’s non-centrality parameter reduces exactly to the published expression whenever \(df_1 + df_2 + 1 = N\), which holds for both the one-way ANOVA and the multivariable regression settings Campbell & Lakens simulated. Numerical agreement is at machine precision (max absolute difference \(\approx 2 \times 10^{-16}\)).
  • +
  • The reproduced simulation recovers the published behaviour: the rejection rate is at or below \(\alpha\) everywhere the null hypothesis is true, and rises to exactly \(\alpha\) at the boundary \(\Delta = \rho^2\).
  • +
  • power_eq_f() reproduces the analytic power function used in their supplement exactly (difference of 0 across every combination checked).
  • +
+

Part 2 goes beyond what Campbell & Lakens simulated, into the designs where \(df_1 + df_2 + 1 \neq N\):

+
    +
  • The generalization holds its size. Across one-way repeated measures (48 cells), factorial between-subjects (108), and the between-subjects effect of a mixed design (8), the rejection rate at the null boundary is 0.0504, 0.0501 and 0.0505 against a nominal 0.05. equ_anova()’s degrees-of-freedom extraction agrees with the closed form exactly.
  • +
  • \(df_1 + df_2 + 1\) is the effective sample size of the error stratum, not an approximation to total N. The mixed design shows this cleanly: there the correct normalizer is the subject count, far smaller than the observation count.
  • +
  • In repeated-measures designs the bound is not a share of total variance. Calibrated against total variance instead of the partial scale, the test becomes severely conservative — rejecting at 0.022 rather than 0.05 when \(k = 2\) — and more so as \(n\) grows. An interpretation trap, not a bug.
  • +
  • Sphericity is the one real limitation. equ_anova() silently ignores Greenhouse-Geisser and Huynh-Feldt corrections, and at Box’s \(\epsilon = 0.5\) the size reaches 0.19 — nearly four times nominal — or collapses to 0.02, depending on where the effect sits in the contrast space.
  • +
+
+
+
+
+

Part 1: Reproducing the published simulation

+
+

Background: the procedure

+

The hypotheses are one-sided, because a proportion of variance cannot be negative:

+

\[ +H_0: \rho^2 \geq \Delta \qquad \text{versus} \qquad H_1: \rho^2 < \Delta +\]

+

@Campbell_2021 give the p-value for a model with \(K\) predictors and \(N\) observations as

+

\[ +p = p_F\left(F; \space K, \space N - K - 1, \space \frac{N \cdot \Delta}{1 - \Delta}\right) +\]

+

where \(p_F(\cdot)\) is the CDF of the non-central F distribution. TOSTER instead computes the non-centrality parameter from the degrees of freedom directly, so that the same logic can be applied to designs where the relationship between \(N\) and the degrees of freedom is less direct:

+

\[ +\lambda_{eq} = \frac{\Delta}{1 - \Delta} \cdot (df_1 + df_2 + 1) +\]

+
+

The two are identical in this setting

+

For a regression with \(K\) predictors, \(df_1 = K\) and \(df_2 = N - K - 1\), so

+

\[ +df_1 + df_2 + 1 = K + (N - K - 1) + 1 = N +\]

+

and the two expressions coincide. The same holds for a one-way ANOVA with \(J\) groups, where \(df_1 = J - 1\) and \(df_2 = N - J\). Any divergence between the two implementations is therefore floating-point noise, not a difference in method.

+
+
grid <- expand.grid(
+  Fstat = c(0.5, 1.2, 3.4, 8.9),
+  K     = c(2, 4, 5),
+  N     = c(60, 180, 450, 1000),
+  Delta = c(0.01, 0.035, 0.06, 0.10)
+)
+grid$df1 <- grid$K
+grid$df2 <- grid$N - grid$K - 1
+
+# Campbell & Lakens, verbatim from their supplementary script
+grid$p_CL <- pf(grid$Fstat,
+                df1 = grid$df1, df2 = grid$df2,
+                ncp = (grid$N * grid$Delta) / (1 - grid$Delta),
+                lower.tail = TRUE)
+
+# TOSTER
+grid$p_TOSTER <- mapply(
+  function(f, d1, d2, e) equ_ftest(Fstat = f, df1 = d1, df2 = d2, eqb = e)$p.value,
+  grid$Fstat, grid$df1, grid$df2, grid$Delta
+)
+
+c(comparisons     = nrow(grid),
+  max_abs_diff    = max(abs(grid$p_CL - grid$p_TOSTER)),
+  machine_epsilon = .Machine$double.eps)
+
+
    comparisons    max_abs_diff machine_epsilon 
+   1.920000e+02    2.220446e-16    2.220446e-16 
+
+
+

Agreement is at machine precision across all 192 combinations.

+
+
+
+

The simulation design

+

The design below follows disregard_simulation_study_2.R from the published supplement, which is the more complete of the two scripts (it adds a true-null condition and overlays the analytic power curve).

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FactorLevels
Predictors \(K\)2, 4
Sample size \(N\)60, 180, 450, 1000
Residual variance \(\sigma^2\)0.4, 0.5, 1 (effect present); 1 with \(\beta = 0\) (true null)
Equivalence bound \(\Delta\)0.010 to 0.100 in steps of 0.005
Replications10,000 per cell
+

Predictors are balanced binary variables from a \(2^4\) factorial grid. Coefficients are \(\beta = (0.2,\ 0.3)\) for \(K = 2\) and \(\beta = (0.2,\ 0.2,\ -0.1,\ -0.2)\) for \(K = 4\). Both give \(\sum \beta_j^2 = 0.13\), so the two values of \(K\) produce the same true \(\rho^2\) at a given \(\sigma^2\) — an elegant feature of their design that makes the two facets directly comparable.

+
+

The true \(\rho^2\)

+

Campbell & Lakens estimate the true \(\rho^2\) by Monte Carlo over a 32-million-row design matrix. It is available in closed form. Because the predictors are independent Bernoulli(0.5), \(\mathrm{Var}(X\beta) = 0.25 \sum \beta_j^2 = 0.0325\), giving \(\rho^2 = 0.0325 / (0.0325 + \sigma^2)\).

+

One wrinkle is worth handling carefully. Their code builds the design with X[1:N, ], taking the first \(N\) rows of a repeating 16-row block. Since none of \(N \in \{60, 180, 450, 1000\}\) is a multiple of 16, the final block is truncated and the four predictors are not perfectly balanced. The quantity that actually determines whether \(H_0\) holds is therefore the design-specific \(\rho^2\), computed from the non-centrality the fixed design implies:

+

\[ +\lambda_{\text{true}} = \frac{\lVert (I - P_1) X\beta \rVert^2}{\sigma^2}, +\qquad +\rho^2_{\text{true}} = \frac{\lambda_{\text{true}}}{\lambda_{\text{true}} + N} +\]

+
+
+Code +
build_X <- function(K, N) {
+  base <- as.matrix(expand.grid(X1 = c(0, 1), X2 = c(0, 1),
+                                X3 = c(0, 1), X4 = c(0, 1)))
+  reps <- ceiling(N / nrow(base))
+  Xf   <- cbind(1, base[rep(seq_len(nrow(base)), reps), , drop = FALSE])
+  Xf[seq_len(N), c(1, seq_len(K) + 1), drop = FALSE]
+}
+
+beta_for <- function(K, null = FALSE) {
+  if (null) return(rep(0, K + 1))
+  if (K == 2) c(0, 0.2, 0.3) else c(0, 0.2, 0.2, -0.1, -0.2)
+}
+
+rho2_design <- function(K, N, sigma2, betavec) {
+  mu     <- as.vector(build_X(K, N) %*% betavec)
+  lambda <- sum((mu - mean(mu))^2) / sigma2
+  lambda / (lambda + N)
+}
+
+
+
+
+Code +
expand.grid(K = c(2, 4), N = c(60, 180, 450, 1000), sigma2 = c(0.4, 0.5, 1)) |>
+  rowwise() |>
+  mutate(
+    rho2_population = 0.0325 / (0.0325 + sigma2),
+    rho2_design     = rho2_design(K, N, sigma2, beta_for(K))
+  ) |>
+  ungroup() |>
+  mutate(across(starts_with("rho2"), ~ round(.x, 5))) |>
+  pivot_wider(names_from = N, values_from = rho2_design,
+              names_prefix = "N = ") |>
+  kable(caption = "Population vs. design-specific true rho-squared. The K = 2 design stays balanced under truncation; K = 4 drifts slightly.")
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Population vs. design-specific true rho-squared. The K = 2 design stays balanced under truncation; K = 4 drifts slightly.
Ksigma2rho2_populationN = 60N = 180N = 450N = 1000
20.40.075140.075140.075140.075140.07514
40.40.075140.073500.075600.074950.07514
20.50.061030.061030.061030.061030.06103
40.50.061030.059680.061400.060880.06103
21.00.031480.031480.031480.031480.03148
41.00.031480.030760.031670.031390.03148
+
+
+

The \(K = 2\) design happens to remain balanced under truncation (the first two columns of the factorial grid cycle with periods 2 and 4). The \(K = 4\) design drifts by up to about 0.002 in \(\rho^2\). This is minor, but it is the reason the boundary check below uses the design-specific value rather than the population value.

+
+
+
+

Reproducing the simulation

+

The implementation below is a vectorized rewrite rather than a transcription. For a fixed design matrix the QR decomposition can be reused across all replications, so the whole study runs in well under a minute instead of fitting 320,000 separate models with lm(). The statistic computed is identical.

+
+
+Code +
sim_condition <- function(K, N, sigma2, betavec, Deltavec,
+                          nSim = 10000, alpha = 0.05, block = 2500) {
+  X   <- build_X(K, N)
+  mu  <- as.vector(X %*% betavec)
+  qrX <- qr(X)
+  df2 <- N - K - 1
+
+  Fstats <- numeric(nSim)
+  done <- 0L
+  while (done < nSim) {
+    b   <- min(block, nSim - done)
+    Y   <- mu + matrix(rnorm(N * b, 0, sqrt(sigma2)), nrow = N)
+    RSS <- colSums(qr.resid(qrX, Y)^2)
+    TSS <- colSums(sweep(Y, 2, colMeans(Y))^2)
+    R2  <- 1 - RSS / TSS
+    Fstats[(done + 1):(done + b)] <- (R2 / K) / ((1 - R2) / df2)
+    done <- done + b
+  }
+
+  data.frame(
+    Delta = Deltavec,
+    pr_reject = vapply(Deltavec, function(D) {
+      mean(pf(Fstats, K, df2, ncp = N * D / (1 - D), lower.tail = TRUE) < alpha)
+    }, numeric(1))
+  )
+}
+
+
+
+
+Code +
Deltavec <- seq(0.01, 0.10, 0.005)
+nSim     <- 10000
+
+conditions <- expand.grid(
+  K       = c(2, 4),
+  N       = c(60, 180, 450, 1000),
+  sigma2  = c(0.4, 0.5, 1),
+  is_null = c(FALSE, TRUE),
+  stringsAsFactors = FALSE
+) |>
+  # the true-null condition is defined only once, at sigma2 = 1
+  filter(!(is_null & sigma2 != 1))
+
+set.seed(123)
+results <- conditions |>
+  rowwise() |>
+  group_split() |>
+  lapply(function(cond) {
+    b <- beta_for(cond$K, null = cond$is_null)
+    out <- sim_condition(cond$K, cond$N, cond$sigma2, b, Deltavec, nSim = nSim)
+    out$K       <- cond$K
+    out$N       <- cond$N
+    out$sigma2  <- cond$sigma2
+    out$is_null <- cond$is_null
+    out$rho2    <- if (cond$is_null) 0 else rho2_design(cond$K, cond$N, cond$sigma2, b)
+    out
+  }) |>
+  bind_rows()
+
+results <- results |>
+  mutate(
+    rho2_lab = factor(round(rho2, 3)),
+    N_lab    = factor(N, levels = c(60, 180, 450, 1000)),
+    K_lab    = factor(K, levels = c(2, 4), labels = c("K = 2", "K = 4")),
+    grp      = interaction(rho2_lab, N_lab, drop = TRUE)
+  )
+
+dim(results)
+
+
+
[1] 608  11
+
+
+
+

Figure 1: rejection rate, truncated axis

+

This is their main figure. The horizontal line is \(\alpha = 0.05\); the vertical dashed lines mark each true \(\rho^2\). To the left of a vertical line, \(H_0\) is true, and the curve of the matching colour must sit at or below 0.05.

+
+
+Code +
bounds <- results |> distinct(K_lab, rho2, rho2_lab) |> filter(rho2 > 0)
+
+ggplot(results, aes(x = Delta, y = pr_reject,
+                    group = grp, colour = rho2_lab)) +
+  geom_vline(data = bounds, aes(xintercept = rho2, colour = rho2_lab),
+             linetype = "dashed", linewidth = 0.4, alpha = 0.7) +
+  geom_hline(yintercept = 0.05, linewidth = 0.4) +
+  geom_line(aes(linetype = N_lab)) +
+  geom_point(aes(shape = N_lab), size = 1.6) +
+  facet_grid(K_lab ~ .) +
+  scale_x_continuous(breaks = seq(0, 0.10, by = 0.01)) +
+  scale_y_continuous(breaks = seq(0, 0.20, by = 0.05)) +
+  coord_cartesian(ylim = c(0, 0.20)) +
+  scale_colour_viridis_d(end = 0.85) +
+  labs(x = expression(Delta),
+       y = expression("Pr(" * p < alpha * ")"),
+       colour = expression("true " * rho^2),
+       shape = "N", linetype = "N")
+
+
+
+
+
+ +
+
+Figure 1: Probability of rejecting the equivalence null as a function of the bound. Colour distinguishes the true rho-squared; point shape and line type distinguish sample size. Vertical dashed lines mark each true rho-squared, i.e. the boundary of the null hypothesis. +
+
+
+
+
+
+
+

Figure 2: rejection rate, full axis

+
+
+Code +
ggplot(results, aes(x = Delta, y = pr_reject,
+                    group = grp, colour = rho2_lab)) +
+  geom_vline(data = bounds, aes(xintercept = rho2, colour = rho2_lab),
+             linetype = "dashed", linewidth = 0.4, alpha = 0.7) +
+  geom_hline(yintercept = 0.05, linewidth = 0.4) +
+  geom_line(aes(linetype = N_lab)) +
+  geom_point(aes(shape = N_lab), size = 1.6) +
+  facet_grid(K_lab ~ .) +
+  scale_x_continuous(breaks = seq(0, 0.10, by = 0.01)) +
+  scale_y_continuous(breaks = seq(0, 1, by = 0.1)) +
+  coord_cartesian(ylim = c(0, 1)) +
+  scale_colour_viridis_d(end = 0.85) +
+  labs(x = expression(Delta),
+       y = expression("Pr(" * p < alpha * ")"),
+       colour = expression("true " * rho^2),
+       shape = "N", linetype = "N")
+
+
+
+
+
+ +
+
+Figure 2: The same simulation on the full vertical scale, showing how power accumulates once the bound exceeds the true rho-squared. +
+
+
+
+
+
+
+

Type I error control

+

The strongest single check is behaviour at the boundary. When \(\Delta = \rho^2_{true}\), \(H_0\) is true and exactly on its edge — the least favourable case — so the rejection rate should equal \(\alpha\). Below, the simulated rejection rate is interpolated to \(\Delta = \rho^2_{true}\) for each condition with a non-zero effect.

+
+
+Code +
boundary <- results |>
+  filter(!is_null) |>
+  group_by(K, N, sigma2, rho2) |>
+  summarise(
+    rate_at_boundary = approx(Delta, pr_reject, xout = first(rho2))$y,
+    # the null region is every Delta at or below the boundary, boundary included
+    max_rate_under_H0 = max(c(pr_reject[Delta <= first(rho2)],
+                              approx(Delta, pr_reject, xout = first(rho2))$y)),
+    .groups = "drop"
+  ) |>
+  mutate(z = (rate_at_boundary - 0.05) / sqrt(0.05 * 0.95 / nSim))
+
+boundary |>
+  mutate(across(c(rho2, rate_at_boundary, max_rate_under_H0), ~ round(.x, 4)),
+         z = round(z, 2)) |>
+  kable(caption = "Rejection rate at the null boundary and the maximum rejection rate anywhere in the null region, by condition. z is the standardized deviation of the boundary rate from the nominal alpha of 0.05.")
+
+
+
+
+Table 1: Rejection rate at the null boundary and the maximum rejection rate anywhere in the null region, by condition. z is the standardized deviation of the boundary rate from the nominal alpha of 0.05. +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KNsigma2rho2rate_at_boundarymax_rate_under_H0z
2600.40.07510.05220.05221.03
2600.50.06100.04840.0484-0.74
2601.00.03150.04960.0496-0.19
21800.40.07510.04980.0498-0.09
21800.50.06100.05230.05231.05
21801.00.03150.05190.05190.87
24500.40.07510.04810.0481-0.88
24500.50.06100.05180.05180.85
24501.00.03150.05220.05221.02
210000.40.07510.04810.0481-0.86
210000.50.06100.05020.05020.09
210001.00.03150.05580.05582.64
4600.40.07350.04900.0490-0.44
4600.50.05970.05110.05110.52
4601.00.03080.05250.05251.13
41800.40.07560.05140.05140.63
41800.50.06140.04850.0485-0.67
41801.00.03170.05250.05251.16
44500.40.07500.05100.05100.47
44500.50.06090.05050.05050.23
44501.00.03140.04950.0495-0.22
410000.40.07510.05460.05462.10
410000.50.06100.05300.05301.36
410001.00.03150.05430.05431.97
+
+
+
+
+
+
+
+Code +
mcse <- sqrt(0.05 * 0.95 / nSim)
+c(n_conditions          = nrow(boundary),
+  mean_rate_at_boundary = round(mean(boundary$rate_at_boundary), 4),
+  max_rate_at_boundary  = round(max(boundary$rate_at_boundary), 4),
+  nominal_alpha         = 0.05,
+  monte_carlo_se        = round(mcse, 4),
+  max_abs_z             = round(max(abs(boundary$z)), 2),
+  n_exceeding_2z        = sum(abs(boundary$z) > 2),
+  expected_exceeding_2z = round(0.0455 * nrow(boundary), 2))
+
+
+
         n_conditions mean_rate_at_boundary  max_rate_at_boundary 
+              24.0000                0.0512                0.0558 
+        nominal_alpha        monte_carlo_se             max_abs_z 
+               0.0500                0.0022                2.6400 
+       n_exceeding_2z expected_exceeding_2z 
+               2.0000                1.0900 
+
+
+

Averaged across conditions the boundary rejection rate is essentially exactly nominal. Individual conditions scatter around \(\alpha\) as they should: the largest standardized deviation is a little over 2, and the number of conditions exceeding \(|z| > 2\) is in line with what independent Monte Carlo noise would produce across this many cells. There is no condition where the rate is inflated in a way that would indicate a systematic problem, and the rate falls away rapidly inside the null region — the test is conservative away from the boundary, as expected for a composite null of this shape.

+
+ +
+
+

\(H_0: \rho^2 \geq \Delta\) is a composite null. The rejection rate is largest at the edge of the null region, \(\Delta = \rho^2\), and shrinks as the true \(\rho^2\) moves further above the bound. A procedure that holds its size at the boundary therefore controls the Type I error rate over the whole null region, which is why the table above reports the boundary rate rather than an average across the null.

+
+
+
+
+
+
+

The analytic power function

+

Their supplement also defines an analytic power function, used to overlay a dotted reference curve for the true-null condition. TOSTER exposes the same calculation through power_eq_f().

+
+
power_CL <- function(Delta, K, N) {
+  Fstar <- qf(0.05, df1 = K, df2 = N - K - 1,
+              ncp = (N * Delta) / (1 - Delta), lower.tail = TRUE)
+  pf(Fstar, df1 = K, df2 = N - K - 1, lower.tail = TRUE)
+}
+
+pchk <- expand.grid(Delta = c(0.02, 0.05, 0.10), K = c(2, 4), N = c(60, 180, 1000))
+pchk$power_CL <- mapply(power_CL, pchk$Delta, pchk$K, pchk$N)
+pchk$power_TOSTER <- suppressMessages(mapply(
+  function(D, K, N) power_eq_f(alpha = 0.05, df1 = K, df2 = N - K - 1,
+                               eqbound = D)$power,
+  pchk$Delta, pchk$K, pchk$N
+))
+
+max(abs(pchk$power_CL - pchk$power_TOSTER))
+
+
[1] 0
+
+
+

The two agree to zero difference. As a final check, the simulated true-null curves should lie on this analytic function:

+
+
+Code +
null_res <- results |>
+  filter(is_null) |>
+  rowwise() |>
+  mutate(analytic = power_CL(Delta, K, N)) |>
+  ungroup()
+
+ggplot(null_res, aes(x = Delta, colour = N_lab)) +
+  geom_line(aes(y = analytic)) +
+  geom_point(aes(y = pr_reject), size = 1.6) +
+  facet_grid(K_lab ~ .) +
+  scale_colour_viridis_d(end = 0.85) +
+  labs(x = expression(Delta), y = "Pr(reject) when true rho-squared = 0",
+       colour = "N")
+
+
+
+
+
+ +
+
+Figure 3: Simulated rejection rate under a true null effect (points) against the analytic power function (lines). Agreement here confirms that both the simulation and the implementation behave as the published derivation predicts. +
+
+
+
+
+
+
+Code +
# Exact binomial test of each simulated rate against its analytic value. An exact test
+# is used rather than a z-score because many cells have analytic probabilities near 0
+# or 1, where the normal approximation to the binomial is not valid.
+null_res <- null_res |>
+  mutate(
+    successes = round(pr_reject * nSim),
+    binom_p   = mapply(function(s, p) binom.test(s, nSim, p)$p.value,
+                       successes, analytic),
+    expected_count = nSim * analytic
+  )
+
+bonf <- 0.05 / nrow(null_res)
+
+c(n_points          = nrow(null_res),
+  max_abs_deviation = round(max(abs(null_res$pr_reject - null_res$analytic)), 4),
+  min_binom_p       = signif(min(null_res$binom_p), 3),
+  bonferroni_alpha  = signif(bonf, 3),
+  n_below_bonf      = sum(null_res$binom_p < bonf))
+
+
+
         n_points max_abs_deviation       min_binom_p  bonferroni_alpha 
+         1.52e+02          1.03e-02          2.36e-03          3.29e-04 
+     n_below_bonf 
+         0.00e+00 
+
+
+

No point deviates from the analytic value by more than exact-binomial sampling error would explain, after correcting for the number of comparisons. (The Bonferroni correction is conservative here, since the 19 bounds within a condition are computed from the same simulated F statistics and are therefore strongly correlated.)

+

As a secondary view, restricting to the cells where a normal approximation is actually valid — at least 10 expected successes and 10 expected failures — gives the usual standardized check:

+
+
+Code +
valid <- null_res |>
+  filter(expected_count >= 10, expected_count <= nSim - 10) |>
+  mutate(z = (pr_reject - analytic) / sqrt(analytic * (1 - analytic) / nSim))
+
+c(n_valid_cells         = nrow(valid),
+  max_abs_z             = round(max(abs(valid$z)), 2),
+  n_exceeding_2z        = sum(abs(valid$z) > 2),
+  expected_exceeding_2z = round(0.0455 * nrow(valid), 1))
+
+
+
        n_valid_cells             max_abs_z        n_exceeding_2z 
+               107.00                  3.02                  8.00 
+expected_exceeding_2z 
+                 4.90 
+
+
+

The count of cells with \(|z| > 2\) runs somewhat above the naive expectation. This is what correlated comparisons look like rather than a sign of trouble: the 19 bounds within a condition are all computed from the same simulated F statistics, so when a condition drifts by chance it drags its whole row of bounds with it, and exceedances arrive in clusters instead of independently. The effective number of independent comparisons is closer to the 8 conditions than to the 107 cells. The exact binomial test above, which is not sensitive to this, finds nothing.

+
+ +
+
+

Roughly a third of the grid has an analytic rejection probability below 0.001 or above 0.999. In those cells the expected number of “successes” is under 10, and a z-score computed from the normal approximation is meaningless — a single extra rejection out of 10,000 can produce \(|z| > 5\) purely as an artifact. Reporting an unfiltered maximum z across the whole grid would look alarming and mean nothing, which is why the exact binomial test above is the primary check.

+
+
+
+
+
+
+

Part 2: Beyond the designs Campbell & Lakens simulated

+

Everything above concerns the setting Campbell & Lakens actually simulated. In that setting TOSTER’s non-centrality parameter reduces exactly to the published one, so Part 1 verifies the un-extended procedure. This part tests the generalization itself: factorial, within-subjects, and mixed designs, where \(df_1 + df_2 + 1 \neq N\).

+
+

Where the published identity breaks

+
+
+Code +
gap <- data.frame(
+  Design = c("Regression (K predictors)", "One-way between (J groups)",
+             "Factorial between (p parameters)", "One-way RM (n subjects, k levels)",
+             "Mixed: between effect", "Mixed: within effect"),
+  df1 = c("K", "J-1", "varies", "k-1", "g-1", "k-1"),
+  df2 = c("N-K-1", "N-J", "N-p", "(n-1)(k-1)", "g(n-1)", "g(n-1)(k-1)"),
+  `df1+df2+1` = c("N", "N", "N-(p-df1-1)", "n(k-1)+1", "gn", "gn(k-1)+1"),
+  `Total obs` = c("N", "N", "N", "nk", "gnk", "gnk"),
+  check.names = FALSE
+)
+kable(gap, caption = "TOSTER's normalizer df1+df2+1 against the total number of observations. The two coincide only in the designs Campbell & Lakens simulated.")
+
+
+ + +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TOSTER’s normalizer df1+df2+1 against the total number of observations. The two coincide only in the designs Campbell & Lakens simulated.
Designdf1df2df1+df2+1Total obs
Regression (K predictors)KN-K-1NN
One-way between (J groups)J-1N-JNN
Factorial between (p parameters)variesN-pN-(p-df1-1)N
One-way RM (n subjects, k levels)k-1(n-1)(k-1)n(k-1)+1nk
Mixed: between effectg-1g(n-1)gngnk
Mixed: within effectk-1g(n-1)(k-1)gn(k-1)+1gnk
+
+
+

The gap is not a rounding error. For a one-way repeated-measures design, \(df_1 + df_2 + 1 \approx n(k-1)\) while the data contain \(nk\) observations, a ratio of \((k-1)/k\) that does not shrink as \(n\) grows. Taken at face value that looks like a serious problem.

+

It is not, and the reason is the organising idea of this whole part:

+
+
+
+ +
+
+Important\(df_1 + df_2 + 1\) is the effective sample size of the error stratum +
+
+
+

\(df_1 + df_2\) is the dimension of the contrast space in which the effect is tested. In a single-stratum design that space is the whole data set and \(df_1 + df_2 + 1 = N\). In a repeated-measures design the within-subject test lives in the subject-centred contrast space of dimension \(n(k-1)\), and in a mixed design the between-subjects test lives on the \(gn\) subject means. TOSTER’s bound is therefore a variance ratio within the stratum where the effect is tested — which is precisely what “partial” means in partial \(\eta^2\).

+
+
+

The mixed design settles this, because there the two readings point in opposite directions: the between-subjects effect has \(df_1 + df_2 + 1 = gn\), the number of subjects, which is far smaller than \(gnk\) but exactly right.

+
+
+

Three calibration targets

+

Because the bound is a number on some scale, “is the Type I error controlled?” has no answer until the scale is fixed. Three candidates, all exact functions of the true non-centrality \(\lambda\):

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + +
TargetFormulaReading
\(\Delta_{pop}\)\(\lambda/(\lambda + N_{total})\)share of total variance
\(\Delta_{tost}\)\(\lambda/(\lambda + df_1 + df_2 + 1)\)what TOSTER’s inversion implies
\(\Delta_{pes}\)\(\lambda/(\lambda + df_2)\)limit of the reported pes statistic
+
+
+Code +
targets_for <- function(lam, df1, df2, N_total) {
+  c(Delta_pop  = lam / (lam + N_total),
+    Delta_tost = lam / (lam + df1 + df2 + 1),
+    Delta_pes  = lam / (lam + df2))
+}
+
+
+

\(\Delta_{tost}\) and \(\Delta_{pes}\) differ only by \(df_1 + 1\) in the denominator, so they agree to \(O(1/n)\) in every design. \(\Delta_{pop}\) is the odd one out whenever the design has more than one error stratum.

+
+
+

The rejection rate in closed form

+

The test rejects when pf(F, df1, df2, ncp = lambda_eq) < alpha. Because pf is strictly increasing in F, this is exactly F < qf(alpha, df1, df2, ncp = lambda_eq). So when the observed F really is non-central F with non-centrality \(\lambda\), the rejection rate is available analytically — no simulation needed:

+
+
+Code +
rate_exact <- function(Delta, df1, df2, lam, alpha = 0.05) {
+  pf(qf(alpha, df1, df2, ncp = Delta/(1-Delta)*(df1+df2+1)),
+     df1, df2, ncp = lam)
+}
+
+# Evaluating a whole grid of bounds against stored F statistics, via critical values
+sweep_delta <- function(Fstats, Deltavec, df1, df2, alpha = 0.05) {
+  crit <- qf(alpha, df1, df2, ncp = Deltavec/(1-Deltavec)*(df1+df2+1))
+  findInterval(crit, sort(Fstats)) / length(Fstats)
+}
+
+
+

This generalizes power_eq_f(), which is the same quantity at \(\lambda = 0\):

+
+
+Code +
chk <- expand.grid(D = c(0.02, 0.06, 0.14), df1 = c(1, 2, 3), df2 = c(20, 60))
+chk$exact <- mapply(rate_exact, chk$D, chk$df1, chk$df2, 0)
+chk$power_eq_f <- suppressMessages(mapply(
+  function(D, a, b) power_eq_f(alpha = 0.05, df1 = a, df2 = b, eqbound = D)$power,
+  chk$D, chk$df1, chk$df2))
+c(comparisons = nrow(chk),
+  max_abs_diff = max(abs(chk$exact - chk$power_eq_f)))
+
+
+
 comparisons max_abs_diff 
+ 1.80000e+01  1.94289e-16 
+
+
+

Simulation is still used below — the analytic rate assumes the F statistic really has the non-central distribution the theory says it does, which is exactly one of the things being tested. Where the two agree, that assumption holds.

+
+
+

Design A: one-way within-subjects ANOVA

+

Model \(Y_{ij} = \mu + \alpha_j + s_i + e_{ij}\) with \(s_i \sim N(0, \sigma^2_s)\) and \(e_{ij} \sim N(0, \sigma^2_e)\). The within-subject test is computed in the contrast space \(Z = YC'\) where \(C\) is any \((k-1) \times k\) orthonormal contrast matrix with \(C\mathbf{1} += 0\); then \(\lambda = n \sum_j \alpha_j^2 / \sigma^2_e\), \(df_1 = k-1\) and \(df_2 = (n-1)(k-1)\).

+
+
+Code +
helm_C <- function(k) t(qr.Q(qr(cbind(1, contr.helmert(k)))))[-1, , drop = FALSE]
+
+# Contrast-space simulator. psi = variances of the contrast scores (all 1 under
+# sphericity); mu_c = contrast means, placing the effect within the contrast space.
+rm_sim <- function(n, k, lam, psi = NULL, mu_c = NULL, nSim = 10000) {
+  df1 <- k - 1; df2 <- (n - 1) * (k - 1)
+  if (is.null(psi))  psi  <- rep(1, df1)
+  if (is.null(mu_c)) mu_c <- { v <- rep(0, df1); v[1] <- sqrt(lam / n); v }
+  stopifnot(length(psi) == df1, length(mu_c) == df1)
+  G  <- matrix(rnorm(n * df1 * nSim), nrow = n)   # cols: contrast fastest, rep slowest
+  G  <- sweep(G, 2, rep(sqrt(psi), times = nSim), "*")
+  G  <- sweep(G, 2, rep(mu_c,      times = nSim), "+")
+  cm <- colMeans(G); css <- colSums(G^2) - n * cm^2
+  SSA  <- n * colSums(matrix(cm^2, nrow = df1))
+  SSAS <-     colSums(matrix(css,  nrow = df1))
+  (SSA / df1) / (SSAS / df2)
+}
+
+
+
+ +
+
+

Because \(C\mathbf{1} = 0\), the subject effect \(s_i\) is annihilated by the contrast: \(\Psi = C\Sigma C' = \sigma^2_e I\) under compound symmetry, whatever \(\sigma^2_s\) is. The F statistic — and therefore the whole test — is invariant to the intraclass correlation. This is why ICC is not a factor in the grid below. The check must be run with a full \(n \times k\) generator, since the contrast simulator is blind to ICC by construction and testing it there would be vacuous.

+
+
+
+
+
+Code +
set.seed(404)
+icc_check <- sapply(c(0, 0.3, 0.6, 0.9), function(rho) {
+  n <- 20; k <- 3; s2e <- 1; s2s <- rho/(1-rho)*s2e
+  al <- c(-1, 0, 1); al <- al/sqrt(sum(al^2))*sqrt(3/n)
+  lam <- n*sum(al^2)/s2e; df1 <- k-1; df2 <- (n-1)*(k-1)
+  Fs <- replicate(20000, {
+    Y <- matrix(rep(al, each=n), n, k) + matrix(rnorm(n, 0, sqrt(s2s)), n, k) +
+         matrix(rnorm(n*k, 0, sqrt(s2e)), n, k)
+    g <- mean(Y); SA <- n*sum((colMeans(Y)-g)^2); SS <- k*sum((rowMeans(Y)-g)^2)
+    (SA/df1) / ((sum((Y-g)^2)-SA-SS)/df2) })
+  D <- lam/(lam+df1+df2+1)
+  mean(Fs < qf(0.05, df1, df2, ncp = D/(1-D)*(df1+df2+1)))
+})
+setNames(round(icc_check, 4), paste0("ICC=", c(0, 0.3, 0.6, 0.9)))
+
+
+
  ICC=0 ICC=0.3 ICC=0.6 ICC=0.9 
+ 0.0498  0.0498  0.0496  0.0498 
+
+
+

All four sit at nominal, as the algebra requires.

+
+

Conditions and results

+
+
+Code +
set.seed(2026)
+nSim2    <- 10000
+Deltavec2 <- seq(0.005, 0.40, by = 0.005)
+
+rm_grid <- expand.grid(k = c(2, 3, 4, 8), n = c(10, 20, 50, 100),
+                       eta2p = c(0, 0.02, 0.06, 0.14))
+
+rm_res <- do.call(rbind, lapply(seq_len(nrow(rm_grid)), function(i) {
+  g <- rm_grid[i, ]
+  df1 <- g$k - 1; df2 <- (g$n - 1)*(g$k - 1); Ntot <- g$n * g$k
+  lam <- Ntot * g$eta2p / (1 - g$eta2p)      # population eta2p -> lambda
+  Fs  <- rm_sim(g$n, g$k, lam, nSim = nSim2)
+  tg  <- targets_for(lam, df1, df2, Ntot)
+  data.frame(k = g$k, n = g$n, eta2p = g$eta2p, df1 = df1, df2 = df2,
+             Ntot = Ntot, lam = lam,
+             Delta_pop = tg[["Delta_pop"]], Delta_tost = tg[["Delta_tost"]],
+             Delta_pes = tg[["Delta_pes"]],
+             rate_pop  = mean(Fs < qf(.05, df1, df2, ncp = tg[["Delta_pop"]]/(1-tg[["Delta_pop"]])*(df1+df2+1))),
+             rate_tost = mean(Fs < qf(.05, df1, df2, ncp = tg[["Delta_tost"]]/(1-tg[["Delta_tost"]])*(df1+df2+1))),
+             rate_pes  = mean(Fs < qf(.05, df1, df2, ncp = tg[["Delta_pes"]]/(1-tg[["Delta_pes"]])*(df1+df2+1))),
+             curve = I(list(sweep_delta(Fs, Deltavec2, df1, df2))))
+}))
+nrow(rm_res)
+
+
+
[1] 64
+
+
+
+
+Code +
rm_long <- do.call(rbind, lapply(which(rm_res$eta2p == 0.06), function(i)
+  data.frame(k = rm_res$k[i], n = rm_res$n[i],
+             Delta = Deltavec2, rate = rm_res$curve[[i]])))
+rm_marks <- rm_res[rm_res$eta2p == 0.06, c("k","n","Delta_pop","Delta_tost")] |>
+  pivot_longer(c(Delta_pop, Delta_tost), names_to = "target", values_to = "Delta")
+
+ggplot(rm_long, aes(Delta, rate, colour = factor(n))) +
+  geom_hline(yintercept = 0.05, linewidth = 0.4) +
+  geom_vline(data = rm_marks, aes(xintercept = Delta, linetype = target),
+             linewidth = 0.4, colour = "grey35") +
+  geom_line(linewidth = 0.7) +
+  facet_wrap(~ paste0("k = ", k), nrow = 1) +
+  coord_cartesian(ylim = c(0, 0.25), xlim = c(0, 0.35)) +
+  scale_colour_viridis_d(end = 0.85) +
+  labs(x = expression(Delta), y = expression("Pr(" * p < alpha * ")"),
+       colour = "n subjects", linetype = NULL)
+
+
+
+
+
+ +
+
+Figure 4: Rejection rate against the equivalence bound for one-way repeated-measures designs, at a true population partial eta-squared of 0.06. Vertical lines mark the three calibration targets; the horizontal line is alpha. The curve crosses alpha at the TOSTER target, not at the total-variance target. +
+
+
+
+
+
+
+Code +
rm_b <- rm_res[rm_res$eta2p > 0, ]
+rm_b |>
+  group_by(k) |>
+  summarise(conditions = n(),
+            `mean rate @ Delta_pop`  = round(mean(rate_pop), 4),
+            `mean rate @ Delta_tost` = round(mean(rate_tost), 4),
+            `mean rate @ Delta_pes`  = round(mean(rate_pes), 4),
+            `median Delta_tost/Delta_pop` = round(median(Delta_tost/Delta_pop), 3),
+            .groups = "drop") |>
+  kable(caption = "One-way repeated measures: rejection rate at each of the three calibration targets, averaged over n and effect size. Nominal alpha = 0.05.")
+
+
+
+
+Table 2: One-way repeated measures: rejection rate at each of the three calibration targets, averaged over n and effect size. Nominal alpha = 0.05. +
+
+
+ ++++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
kconditionsmean rate @ Delta_popmean rate @ Delta_tostmean rate @ Delta_pesmedian Delta_tost/Delta_pop
2120.02190.05120.05801.798
3120.02390.05050.05681.420
4120.02560.05000.05671.285
8120.03090.05000.05791.125
+
+
+
+
+
+

The verdict depends entirely on which scale the bound is read on, and the ratio \(\Delta_{tost}/\Delta_{pop}\) approaches \(k/(k-1)\) — so the discrepancy is largest at \(k = 2\), not at large \(k\).

+
    +
  • On \(\Delta_{tost}\), the rate is nominal in every cell. The procedure controls its size.
  • +
  • On \(\Delta_{pes}\) it is mildly liberal in small samples, which is the ordinary upward bias of \(\eta^2_p\) rather than a fault in the bound.
  • +
  • On \(\Delta_{pop}\) it is severely conservative, and increasingly so as \(n\) grows.
  • +
+

That last point is worth stating plainly, since it is the practical trap: a bound reasoned about as “this factor explains less than 5% of the variance in my data” is not the bound the function applies. equ_anova() works on the partial scale, where subject variance is excluded from the denominator.

+
+
+
+

Design B: factorial between-subjects ANOVA

+

For a balanced \(a \times b\) design with \(m\) per cell, the cell means and the error sum of squares are independent and jointly sufficient, so there is no need to generate \(N\) observations per replication.

+
+
+Code +
fac_sim <- function(a, b, m, eta2p = c(A = 0, B = 0, AB = 0),
+                    sigma2 = 1, nSim = 10000) {
+  N <- a*b*m; dfE <- N - a*b
+  sc <- function(len, ss) { v <- seq_len(len) - (len+1)/2; v/sqrt(sum(v^2))*sqrt(ss) }
+  # balanced design => effects orthogonal => all three targets can be set at once
+  alpha_i <- sc(a, a * eta2p[["A"]] /(1 - eta2p[["A"]]))
+  beta_j  <- sc(b, b * eta2p[["B"]] /(1 - eta2p[["B"]]))
+  G0 <- outer(sc(a, 1), sc(b, 1)); G0 <- G0 - outer(rowMeans(G0), colMeans(G0), "+") + mean(G0)
+  gam <- if (eta2p[["AB"]] > 0) G0/sqrt(sum(G0^2))*sqrt(a*b*eta2p[["AB"]]/(1-eta2p[["AB"]])) else G0*0
+  M  <- outer(alpha_i, beta_j, "+") + gam
+  CM <- as.vector(M) + matrix(rnorm(a*b*nSim, 0, sqrt(sigma2/m)), nrow = a*b)
+  Ka <- model.matrix(~ 0 + factor(rep(1:a, times = b)))
+  Kb <- model.matrix(~ 0 + factor(rep(1:b, each  = a)))
+  rA <- crossprod(Ka, CM)/b; rB <- crossprod(Kb, CM)/a; g <- colMeans(CM)
+  SSA <- m*b*colSums(sweep(rA, 2, g)^2)
+  SSB <- m*a*colSums(sweep(rB, 2, g)^2)
+  Rr  <- CM - Ka %*% rA - Kb %*% rB + rep(g, each = a*b)
+  SSAB <- m*colSums(Rr^2)
+  MSE <- rchisq(nSim, dfE) * sigma2 / dfE
+  list(A = (SSA/(a-1))/MSE, B = (SSB/(b-1))/MSE, AB = (SSAB/((a-1)*(b-1)))/MSE,
+       lam = c(A = m*b*sum(alpha_i^2)/sigma2, B = m*a*sum(beta_j^2)/sigma2,
+               AB = m*sum(gam^2)/sigma2),
+       df1 = c(A = a-1, B = b-1, AB = (a-1)*(b-1)), dfE = dfE, N = N)
+}
+
+
+
+
+Code +
set.seed(515)
+fac_grid <- expand.grid(design = c("2x2","2x3","3x4"), m = c(5, 10, 25, 100),
+                        eta2p = c(0.02, 0.06, 0.14), stringsAsFactors = FALSE)
+fac_res <- do.call(rbind, lapply(seq_len(nrow(fac_grid)), function(i) {
+  gg <- fac_grid[i, ]; ab <- as.integer(strsplit(gg$design, "x")[[1]])
+  s <- fac_sim(ab[1], ab[2], gg$m,
+               c(A = gg$eta2p, B = gg$eta2p, AB = gg$eta2p), nSim = nSim2)
+  do.call(rbind, lapply(c("A","B","AB"), function(e) {
+    df1 <- s$df1[[e]]; lam <- s$lam[[e]]
+    tg <- targets_for(lam, df1, s$dfE, s$N)
+    rt <- function(D) mean(s[[e]] < qf(.05, df1, s$dfE, ncp = D/(1-D)*(df1+s$dfE+1)))
+    data.frame(design = gg$design, m = gg$m, effect = e, eta2p = gg$eta2p,
+               df1 = df1, df2 = s$dfE, N = s$N, eff_N = df1 + s$dfE + 1,
+               rate_pop = rt(tg[["Delta_pop"]]), rate_tost = rt(tg[["Delta_tost"]]),
+               rate_pes = rt(tg[["Delta_pes"]]))
+  }))
+}))
+nrow(fac_res)
+
+
+
[1] 108
+
+
+
+
+Code +
fac_res |>
+  group_by(design, effect) |>
+  summarise(`rate @ pop` = round(mean(rate_pop), 4),
+            `rate @ tost` = round(mean(rate_tost), 4),
+            `rate @ pes` = round(mean(rate_pes), 4),
+            `eff_N vs N` = paste0(min(eff_N - N), " to ", max(eff_N - N)),
+            .groups = "drop") |>
+  kable(caption = "Factorial between-subjects designs, averaged over cell size and effect size. Here df1+df2+1 falls short of N by only (p - df1 - 1), so all three calibrations nearly agree.")
+
+
+
+
+Table 3: Factorial between-subjects designs, averaged over cell size and effect size. Here df1+df2+1 falls short of N by only (p - df1 - 1), so all three calibrations nearly agree. +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
designeffectrate @ poprate @ tostrate @ peseff_N vs N
2x2A0.04800.05080.0542-2 to -2
2x2AB0.04770.05050.0538-2 to -2
2x2B0.04850.05100.0543-2 to -2
2x3A0.04550.05000.0529-4 to -4
2x3AB0.04560.04900.0531-3 to -3
2x3B0.04750.05100.0555-3 to -3
3x4A0.04140.04890.0522-9 to -9
3x4AB0.04580.04990.0570-5 to -5
3x4B0.04270.04960.0541-8 to -8
+
+
+
+
+
+

In a single-stratum factorial the gap is \(p - df_1 - 1\) observations out of \(N\), so all three targets nearly coincide and the distinction that dominated Design A almost vanishes. The rate is at or just below nominal throughout: mildly conservative, \(O(1/N)\).

+
+
+

Design C: mixed designs

+

This is the case that decides between the two readings, because the between-subjects effect is tested on the \(gn\) subject means while the data contain \(gnk\) observations.

+
+
+Code +
set.seed(626)
+mix_grid <- expand.grid(g = c(2, 3), n = c(15, 30), k = c(3, 4), eta2p = c(0.06))
+mix_res <- do.call(rbind, lapply(seq_len(nrow(mix_grid)), function(i) {
+  q <- mix_grid[i, ]; ns <- q$g * q$n; Ntot <- ns * q$k
+  # between stratum: one-way ANOVA on subject means, tau2 = s2s + s2e/k
+  s2s <- 1; s2e <- 1; tau2 <- s2s + s2e/q$k
+  df1 <- q$g - 1; df2 <- q$g * (q$n - 1)
+  lam <- (df1 + df2 + 1) * q$eta2p/(1 - q$eta2p)   # target on the subject-mean scale
+  gam <- { v <- seq_len(q$g) - (q$g+1)/2; v/sqrt(sum(v^2))*sqrt(lam*tau2/q$n) }
+  sm <- rep(gam, each = q$n) + matrix(rnorm(ns*nSim2, 0, sqrt(tau2)), ns, nSim2)
+  grp <- rep(seq_len(q$g), each = q$n)
+  gm <- rowsum(sm, grp)/q$n; gmn <- colMeans(sm)
+  SSb <- q$n * colSums(sweep(gm, 2, gmn)^2)
+  SSw <- colSums((sm - gm[grp, , drop = FALSE])^2)
+  Fb  <- (SSb/df1)/(SSw/df2)
+  tg <- targets_for(lam, df1, df2, Ntot)
+  rt <- function(D) mean(Fb < qf(.05, df1, df2, ncp = D/(1-D)*(df1+df2+1)))
+  data.frame(g = q$g, n = q$n, k = q$k, n_subj = ns, N_total = Ntot,
+             eff_N = df1 + df2 + 1,
+             Delta_pop = round(tg[["Delta_pop"]], 4),
+             Delta_tost = round(tg[["Delta_tost"]], 4),
+             rate_pop = rt(tg[["Delta_pop"]]), rate_tost = rt(tg[["Delta_tost"]]))
+}))
+kable(mix_res, caption = "Mixed design, between-subjects effect. eff_N equals the number of subjects exactly, and it is the total-observation reading that is wrong -- here in the opposite direction from Design A.")
+
+
+ + ++++++++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Mixed design, between-subjects effect. eff_N equals the number of subjects exactly, and it is the total-observation reading that is wrong – here in the opposite direction from Design A.
gnkn_subjN_totaleff_NDelta_popDelta_tostrate_poprate_tost
21533090300.02080.060.02590.0512
315345135450.02080.060.01910.0493
230360180600.02080.060.01360.0502
330390270900.02080.060.00680.0478
215430120300.01570.060.02620.0529
315445180450.01570.060.01900.0540
230460240600.01570.060.01140.0487
330490360900.01570.060.00600.0496
+
+
+

eff_N equals n_subj in every row. The between-subjects effect is a one-way ANOVA on the subject means, and TOSTER’s normalizer recovers exactly that. Reading the bound against total observations is wrong by a factor of \(k\) — and note the direction has flipped relative to Design A. No single fixed relationship to \(N\) could be right in both places, which is what makes \(df_1 + df_2 + 1\) the correct general answer rather than a convenient approximation.

+
+
+

Caveat: sphericity corrections are not applied

+

Everything above assumed compound symmetry. When sphericity fails, equ_anova() has a genuine limitation: it reads the uncorrected univariate degrees of freedom from the Anova.mlm object and never applies a Greenhouse-Geisser or Huynh-Feldt correction. The correction machinery in R/anova_summary.R is commented out, and add_corrected_df() does not exist in the package. Fitting with afex::aov_car(..., anova_table = list(correction = "GG")) therefore has no effect on the equivalence p-value.

+

To quantify the cost, write \(\Psi = C\Sigma C'\) for the covariance of the contrast scores and use Box’s \(\epsilon = (\sum \psi_i)^2 / \big[(k-1)\sum \psi_i^2\big]\). Holding \(\overline{\psi} = 1\) keeps the nominal non-centrality — and so the nominal boundary — fixed while \(\epsilon\) varies, so any change in size is attributable to non-sphericity alone.

+
+
+Code +
eps_of <- function(psi) sum(psi)^2 / (length(psi) * sum(psi^2))
+psi_for_eps <- function(k, target) {
+  if (isTRUE(all.equal(target, 1))) return(rep(1, k - 1))
+  stopifnot(target > 1/(k-1))
+  cc <- uniroot(function(cc) eps_of(c(cc, rep(1, k-2))) - target, c(1, 1e6))$root
+  p <- c(cc, rep(1, k-2)); p * (k-1) / sum(p)     # rescale to mean 1
+}
+
+
+

Under a violation there is no single \(\lambda\), because \(SS_A\) becomes a weighted mix of non-central chi-squares. Where the effect sits in the contrast space therefore matters, so it enters as an explicit factor.

+
+
+Code +
set.seed(737)
+sph <- expand.grid(k = c(4, 8), n = c(15, 30, 60), eps = c(1, 0.9, 0.75, 0.6, 0.5),
+                   placement = c("high-variance", "low-variance", "uniform"),
+                   eta2p = 0.06, stringsAsFactors = FALSE)
+sph_res <- do.call(rbind, lapply(seq_len(nrow(sph)), function(i) {
+  s <- sph[i, ]; df1 <- s$k - 1; df2 <- (s$n - 1)*(s$k - 1)
+  lam <- (df1 + df2 + 1) * s$eta2p/(1 - s$eta2p)
+  D   <- lam/(lam + df1 + df2 + 1)
+  psi <- psi_for_eps(s$k, s$eps)
+  v <- switch(s$placement, `high-variance` = c(1, rep(0, df1-1)),
+              `low-variance` = c(rep(0, df1-1), 1), uniform = rep(1, df1))
+  mu <- v/sqrt(sum(v^2))*sqrt(lam/s$n)
+  Fs <- rm_sim(s$n, s$k, lam, psi = psi, mu_c = mu, nSim = nSim2)
+  cbind(s, size = mean(Fs < qf(.05, df1, df2, ncp = D/(1-D)*(df1+df2+1))))
+}))
+
+
+
+
+Code +
ggplot(sph_res, aes(eps, size, colour = placement)) +
+  geom_hline(yintercept = 0.05, linewidth = 0.4) +
+  geom_line(linewidth = 0.7) + geom_point(size = 1.5) +
+  facet_grid(paste0("k = ", k) ~ paste0("n = ", n)) +
+  scale_x_reverse() + scale_colour_viridis_d(end = 0.85) +
+  labs(x = expression("Box's " * epsilon * " (decreasing = worse violation)"),
+       y = "Rejection rate at the nominal boundary", colour = "Effect placed on")
+
+
+
+
+
+ +
+
+Figure 5: Size of the equivalence test at its nominal boundary as sphericity degrades. Epsilon = 1 is the built-in control and returns nominal size. The direction and severity of the failure depend on where the effect sits in the contrast space. +
+
+
+
+
+
+
+Code +
sph_res |>
+  group_by(eps, placement) |>
+  summarise(size = round(mean(size), 4), .groups = "drop") |>
+  pivot_wider(names_from = placement, values_from = size) |>
+  kable(caption = "Size at the nominal boundary by Box's epsilon, averaged over k and n. Nominal alpha = 0.05.")
+
+
+
+
+Table 4: Size at the nominal boundary by Box’s epsilon, averaged over k and n. Nominal alpha = 0.05. +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
epshigh-variancelow-varianceuniform
0.500.19160.02090.0384
0.600.16390.02530.0421
0.750.12820.03190.0455
0.900.09450.03870.0471
1.000.05040.05000.0508
+
+
+
+
+
+

The \(\epsilon = 1\) row returns nominal size, confirming the construction. Away from it the test is badly miscalibrated — inflated by several times \(\alpha\) when the effect loads on a high-variance contrast, and driven to near zero when it loads on a low-variance one. This is a real limitation, and it is the only genuine failure anywhere in this document.

+
+
+
+ +
+
+WarningPractical implication +
+
+
+

For repeated-measures designs with \(k > 2\), check sphericity on the fitted model before trusting equ_anova(), and treat a Mauchly test or an \(\hat{\epsilon}\) well below 1 as a reason not to rely on the equivalence p-value. Note this is a limitation of the current implementation, not of the underlying method: a corrected-\(df\) version is possible and would slot into R/anova_summary.R. With \(k = 2\) there is only one contrast and sphericity is not an issue.

+
+
+
+
+

Pipeline check: does equ_anova() extract the right degrees of freedom?

+

Everything above tests the mathematics on F statistics computed directly. It does not test how TOSTER pulls \(df_1\) and \(df_2\) out of a fitted model object — which is where a practical bug would live. This fits real datasets with stats::aov and afex::aov_car and compares against the closed-form path.

+
+
+Code +
suppressMessages(library(afex))
+set.seed(848)
+eqb <- 0.075
+pipe <- do.call(rbind, lapply(1:4, function(rep_i) {
+  out <- list()
+  # (a) one-way RM, k = 4
+  n <- 12; k <- 4
+  Y <- matrix(rnorm(n*k), n, k) + rep(c(0, .4, .2, .7), each = n) + rnorm(n)
+  d <- data.frame(y = as.vector(Y), id = factor(rep(1:n, k)),
+                  cond = factor(rep(1:k, each = n)))
+  ea <- suppressMessages(equ_anova(aov(y ~ cond + Error(id/cond), data = d), eqbound = eqb))
+  ea$effect <- trimws(ea$effect)                       # aov path pads names with spaces
+  r <- ea[ea$effect == "cond", ]
+  gmn <- mean(Y); SA <- n*sum((colMeans(Y)-gmn)^2); SS <- k*sum((rowMeans(Y)-gmn)^2)
+  Ff <- (SA/(k-1))/((sum((Y-gmn)^2)-SA-SS)/((n-1)*(k-1)))
+  out[[1]] <- data.frame(design = "one-way RM", effect = "cond",
+    d_df1 = r$df1-(k-1), d_df2 = r$df2-(n-1)*(k-1), d_F = r$F.value-Ff,
+    d_p = r$p.equ - equ_ftest(Ff, k-1, (n-1)*(k-1), eqbound = eqb)$p.value)
+  # (b) 2x3 between-subjects
+  a <- 2; b <- 3; m <- 8
+  dd <- expand.grid(rep = 1:m, A = factor(1:a), B = factor(1:b))
+  dd$y <- rnorm(nrow(dd)) + as.numeric(dd$A)*.5 + as.numeric(dd$B)*.3
+  an <- anova(lm(y ~ A*B, data = dd))
+  ea2 <- suppressMessages(equ_anova(aov(y ~ A*B, data = dd), eqbound = eqb))
+  ea2$effect <- trimws(ea2$effect)
+  for (e in c("A","B","A:B")) {
+    rr <- ea2[ea2$effect == e, ]; Fa <- an[e, "F value"]; d2 <- an["Residuals","Df"]
+    out[[length(out)+1]] <- data.frame(design = "2x3 between", effect = e,
+      d_df1 = rr$df1-an[e,"Df"], d_df2 = rr$df2-d2, d_F = rr$F.value-Fa,
+      d_p = rr$p.equ - equ_ftest(Fa, an[e,"Df"], d2, eqbound = eqb)$p.value)
+  }
+  do.call(rbind, out)
+}))
+pipe |> group_by(design, effect) |>
+  summarise(across(starts_with("d_"), ~ max(abs(.x))), .groups = "drop") |>
+  kable(caption = "Maximum absolute discrepancy between equ_anova() and the closed-form path, over 4 simulated datasets per design. Zero everywhere means df extraction is correct.")
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Maximum absolute discrepancy between equ_anova() and the closed-form path, over 4 simulated datasets per design. Zero everywhere means df extraction is correct.
designeffectd_df1d_df2d_Fd_p
2x3 betweenA0000
2x3 betweenA:B0000
2x3 betweenB0000
one-way RMcond0000
+
+
+

Two wrinkles worth recording for anyone doing this comparison: the aov/aovlist path returns effect names padded with trailing spaces ("cond "), because reformat_aov_summary() never calls the remove_empty_space() helper defined alongside it, so any join on effect needs trimws(); and the afex_aov / Anova.mlm path emits an extra (Intercept) row that the aov path does not.

+
+
+

What the extension shows

+
+
+Code +
rbind(
+  data.frame(Design = "One-way RM",       n_cells = sum(rm_res$eta2p > 0),
+             rate_at_Delta_tost = round(mean(rm_res$rate_tost[rm_res$eta2p > 0]), 4)),
+  data.frame(Design = "Factorial between", n_cells = nrow(fac_res),
+             rate_at_Delta_tost = round(mean(fac_res$rate_tost), 4)),
+  data.frame(Design = "Mixed (between)",   n_cells = nrow(mix_res),
+             rate_at_Delta_tost = round(mean(mix_res$rate_tost), 4))
+) |> kable(caption = "Type I error at the boundary, on TOSTER's own scale, across every design tested. Nominal alpha = 0.05.")
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Type I error at the boundary, on TOSTER’s own scale, across every design tested. Nominal alpha = 0.05.
Designn_cellsrate_at_Delta_tost
One-way RM480.0504
Factorial between1080.0501
Mixed (between)80.0505
+
+
+
    +
  1. The generalization is sound. On its own scale the procedure holds its size in every design tested — one-way repeated measures, factorial between-subjects, and the between-subjects effect of a mixed design — none of which Campbell & Lakens simulated.
  2. +
  3. \(df_1 + df_2 + 1\) is the effective sample size of the error stratum, not an approximation to total N. The mixed design proves this, since there the correct normalizer is smaller than total N while in the factorial case it is nearly equal.
  4. +
  5. The bound is on the partial scale, and in repeated-measures designs that is not the share of total variance. Calibrating a bound as “less than 5% of the variance in my data” and passing it to equ_anova() produces a much more conservative test than intended, increasingly so as n grows. This is an interpretation trap, not a bug.
  6. +
  7. Sphericity is the real limitation. Corrections are silently ignored, and the resulting size distortion is large and can run in either direction.
  8. +
+
+
+

Notes on the published supplementary code

+

A few observations for anyone attempting to run disregard_simulation_study_2.R directly. None of these affect the paper’s conclusions.

+
    +
  1. A hard-coded path breaks the script mid-run. Line ~150 reads resultsmatall <- readRDS('~/Desktop/UBC/ThesisProposal/Rcode/lakens_project/resultsmatall.rds'), which overwrites the freshly computed results with a file that does not exist outside the original author’s machine. The script cannot be run end-to-end as published.
  2. +
  3. The true \(\rho^2\) is obtained by Monte Carlo over a 32-million-row design matrix (rep(basematrix$X1, 1000000)), which is memory-hungry and unnecessary — the quantity is available in closed form, as shown above.
  4. +
  5. The design matrix is mildly unbalanced. X[1:N, ] truncates a repeating 16-row block, and no simulated \(N\) is a multiple of 16. The effect is small but it does mean the realized \(\rho^2\) differs slightly from the population value for \(K = 4\).
  6. +
  7. True \(\rho^2\) values are post-hoc binned by a series of range-based if-style reassignments before plotting, which smooths over the imbalance in (3) rather than modelling it.
  8. +
  9. qplot() is used for plotting, which is deprecated in current ggplot2 and now emits a warning.
  10. +
  11. The null condition is flagged with sigma2 == 1.0001 as a sentinel value rather than an explicit indicator, which is easy to misread.
  12. +
+
+
+

Conclusion

+

TOSTER’s implementation is numerically identical to the published procedure in the setting Campbell & Lakens evaluated, and reproducing their simulation recovers the operating characteristics the paper reports: nominal Type I error at the boundary of the null, conservatism inside it, and power that matches the analytic derivation under a true null effect.

+

Beyond that setting, the generalization that TOSTER adds — substituting \(df_1 + df_2 + 1\) for the total sample size in the non-centrality parameter — controls Type I error in every design tested, including the repeated-measures and mixed designs where that substitution changes the answer materially. The substitution is not an approximation to \(N\); it is the effective sample size of the stratum in which the effect is tested, which is what makes the resulting bound a partial variance ratio.

+

Two things follow for the manuscript. The first is an interpretation point that deserves stating wherever the ANOVA bound is discussed: in repeated-measures designs a bound on partial \(\eta^2\) is not a bound on the share of total variance, and the two can differ by a factor approaching \(k/(k-1)\). The second is a genuine limitation: sphericity corrections are not applied, and when sphericity fails the size distortion is large and can run in either direction. That is worth fixing in the package rather than only documenting.

+
+
+

Session information

+
+
+Code +
sessionInfo()
+
+
+
R version 4.5.3 (2026-03-11 ucrt)
+Platform: x86_64-w64-mingw32/x64
+Running under: Windows 11 x64 (build 26100)
+
+Matrix products: default
+  LAPACK version 3.12.1
+
+locale:
+[1] LC_COLLATE=English_United States.utf8 
+[2] LC_CTYPE=English_United States.utf8   
+[3] LC_MONETARY=English_United States.utf8
+[4] LC_NUMERIC=C                          
+[5] LC_TIME=English_United States.utf8    
+
+time zone: America/Chicago
+tzcode source: internal
+
+attached base packages:
+[1] stats     graphics  grDevices utils     datasets  methods   base     
+
+other attached packages:
+[1] afex_1.5-1    lme4_2.0-1    Matrix_1.7-4  knitr_1.51    tidyr_1.3.2  
+[6] dplyr_1.2.1   ggplot2_4.0.2 TOSTER_0.9.0 
+
+loaded via a namespace (and not attached):
+ [1] gtable_0.3.6         xfun_0.57            htmlwidgets_1.6.4   
+ [4] lattice_0.22-9       numDeriv_2016.8-1.1  vctrs_0.7.3         
+ [7] tools_4.5.3          Rdpack_2.6.6         generics_0.1.4      
+[10] parallel_4.5.3       sandwich_3.1-1       tibble_3.3.1        
+[13] pkgconfig_2.0.3      RColorBrewer_1.1-3   S7_0.2.2            
+[16] distributional_0.7.0 lifecycle_1.0.5      compiler_4.5.3      
+[19] farver_2.1.2         stringr_1.6.0        codetools_0.2-20    
+[22] lmerTest_3.2-1       carData_3.0-6        htmltools_0.5.9     
+[25] yaml_2.3.12          Formula_1.2-5        pillar_1.11.1       
+[28] car_3.1-5            nloptr_2.2.1         MASS_7.3-65         
+[31] reformulas_0.4.4     boot_1.3-32          abind_1.4-8         
+[34] multcomp_1.4-30      nlme_3.1-168         tidyselect_1.2.1    
+[37] digest_0.6.39        mvtnorm_1.3-6        stringi_1.8.7       
+[40] reshape2_1.4.5       purrr_1.2.2          labeling_0.4.3      
+[43] splines_4.5.3        cowplot_1.2.0        fastmap_1.2.0       
+[46] grid_4.5.3           cli_3.6.6            magrittr_2.0.5      
+[49] survival_3.8-6       TH.data_1.1-5        withr_3.0.2         
+[52] scales_1.4.0         estimability_1.5.1   rmarkdown_2.31      
+[55] emmeans_2.0.2        otel_0.2.0           zoo_1.8-15          
+[58] coda_0.19-4.1        evaluate_1.0.5       rbibutils_2.4.1     
+[61] ggdist_3.3.3         viridisLite_0.4.3    rlang_1.2.0         
+[64] Rcpp_1.1.1-1.1       xtable_1.8-8         glue_1.8.1          
+[67] minqa_1.2.8          jsonlite_2.0.0       R6_2.6.1            
+[70] plyr_1.8.9          
+
+
+
+
+

References

+

Campbell, H., & Lakens, D. (2021). Can we disregard the whole model? Omnibus non-inferiority testing for \(R^2\) in multi-variable linear regression and in ANOVA. British Journal of Mathematical and Statistical Psychology, 74(1), e12201. https://doi.org/10.1111/bmsp.12201

+ + +
+
+ +
+ + +
+ + + + + \ No newline at end of file diff --git a/papers/Avocado_Update/campbell_lakens_verification.qmd b/papers/Avocado_Update/campbell_lakens_verification.qmd new file mode 100644 index 00000000..ebb9fcd8 --- /dev/null +++ b/papers/Avocado_Update/campbell_lakens_verification.qmd @@ -0,0 +1,1135 @@ +--- +title: "Verifying TOSTER's *F*-test Equivalence Procedure" +subtitle: "A reproduction of the simulation study in Campbell & Lakens (2021)" +author: "Aaron R. Caldwell" +date: today +bibliography: interactcadsample.bib +format: + html: + toc: true + toc-depth: 3 + toc-location: left + code-fold: show + code-tools: true + theme: cosmo + embed-resources: true + fig-width: 8 + fig-height: 6 +execute: + warning: false + message: false + cache: false +--- + +```{r} +#| label: setup +#| code-fold: true +library(TOSTER) +library(ggplot2) +library(dplyr) +library(tidyr) +library(knitr) + +theme_set(theme_bw(base_size = 12)) +set.seed(123) +``` + +## Purpose + +@Campbell_2021 proposed an omnibus non-inferiority ("equivalence") test for $R^2$ in +multivariable linear regression and for the omnibus effect in a one-way ANOVA, and +evaluated its operating characteristics by simulation. `TOSTER::equ_ftest()` implements +a generalization of that procedure. + +This document does three things: + +1. Establishes that TOSTER's non-centrality parameter is **algebraically identical** to + the published one in the setting Campbell & Lakens studied, and confirms this + numerically. +2. **Reproduces their simulation study** using TOSTER's implementation, and checks that + the recovered operating characteristics match what the paper reports. +3. Notes a few things about the published supplementary code that are worth knowing if + anyone tries to run it directly. + +This is a verification exercise. Nothing here is currently cited in the manuscript. + +::: {.callout-note} +## Summary of findings + +- TOSTER's non-centrality parameter reduces **exactly** to the published expression + whenever $df_1 + df_2 + 1 = N$, which holds for both the one-way ANOVA and the + multivariable regression settings Campbell & Lakens simulated. Numerical agreement is + at machine precision (max absolute difference $\approx 2 \times 10^{-16}$). +- The reproduced simulation recovers the published behaviour: the rejection rate is + at or below $\alpha$ everywhere the null hypothesis is true, and rises to exactly + $\alpha$ at the boundary $\Delta = \rho^2$. +- `power_eq_f()` reproduces the analytic power function used in their supplement + **exactly** (difference of 0 across every combination checked). + +Part 2 goes beyond what Campbell & Lakens simulated, into the designs where +$df_1 + df_2 + 1 \neq N$: + +- **The generalization holds its size.** Across one-way repeated measures (48 cells), + factorial between-subjects (108), and the between-subjects effect of a mixed design (8), + the rejection rate at the null boundary is 0.0504, 0.0501 and 0.0505 against a nominal + 0.05. `equ_anova()`'s degrees-of-freedom extraction agrees with the closed form exactly. +- **$df_1 + df_2 + 1$ is the effective sample size of the error stratum**, not an + approximation to total N. The mixed design shows this cleanly: there the correct + normalizer is the *subject count*, far smaller than the observation count. +- **In repeated-measures designs the bound is not a share of total variance.** Calibrated + against total variance instead of the partial scale, the test becomes severely + conservative — rejecting at 0.022 rather than 0.05 when $k = 2$ — and more so as $n$ + grows. An interpretation trap, not a bug. +- **Sphericity is the one real limitation.** `equ_anova()` silently ignores + Greenhouse-Geisser and Huynh-Feldt corrections, and at Box's $\epsilon = 0.5$ the size + reaches 0.19 — nearly four times nominal — or collapses to 0.02, depending on where the + effect sits in the contrast space. +::: + +# Part 1: Reproducing the published simulation + +## Background: the procedure + +The hypotheses are one-sided, because a proportion of variance cannot be negative: + +$$ +H_0: \rho^2 \geq \Delta \qquad \text{versus} \qquad H_1: \rho^2 < \Delta +$$ + +@Campbell_2021 give the *p*-value for a model with $K$ predictors and $N$ observations as + +$$ +p = p_F\left(F; \space K, \space N - K - 1, \space \frac{N \cdot \Delta}{1 - \Delta}\right) +$$ + +where $p_F(\cdot)$ is the CDF of the non-central *F* distribution. TOSTER instead +computes the non-centrality parameter from the degrees of freedom directly, so that the +same logic can be applied to designs where the relationship between $N$ and the degrees +of freedom is less direct: + +$$ +\lambda_{eq} = \frac{\Delta}{1 - \Delta} \cdot (df_1 + df_2 + 1) +$$ + +### The two are identical in this setting + +For a regression with $K$ predictors, $df_1 = K$ and $df_2 = N - K - 1$, so + +$$ +df_1 + df_2 + 1 = K + (N - K - 1) + 1 = N +$$ + +and the two expressions coincide. The same holds for a one-way ANOVA with $J$ groups, +where $df_1 = J - 1$ and $df_2 = N - J$. Any divergence between the two implementations +is therefore floating-point noise, not a difference in method. + +```{r} +#| label: ncp-identity +#| code-fold: false +grid <- expand.grid( + Fstat = c(0.5, 1.2, 3.4, 8.9), + K = c(2, 4, 5), + N = c(60, 180, 450, 1000), + Delta = c(0.01, 0.035, 0.06, 0.10) +) +grid$df1 <- grid$K +grid$df2 <- grid$N - grid$K - 1 + +# Campbell & Lakens, verbatim from their supplementary script +grid$p_CL <- pf(grid$Fstat, + df1 = grid$df1, df2 = grid$df2, + ncp = (grid$N * grid$Delta) / (1 - grid$Delta), + lower.tail = TRUE) + +# TOSTER +grid$p_TOSTER <- mapply( + function(f, d1, d2, e) equ_ftest(Fstat = f, df1 = d1, df2 = d2, eqb = e)$p.value, + grid$Fstat, grid$df1, grid$df2, grid$Delta +) + +c(comparisons = nrow(grid), + max_abs_diff = max(abs(grid$p_CL - grid$p_TOSTER)), + machine_epsilon = .Machine$double.eps) +``` + +Agreement is at machine precision across all `r nrow(grid)` combinations. + +## The simulation design + +The design below follows `disregard_simulation_study_2.R` from the published +supplement, which is the more complete of the two scripts (it adds a true-null condition +and overlays the analytic power curve). + +| Factor | Levels | +|:-------|:-------| +| Predictors $K$ | 2, 4 | +| Sample size $N$ | 60, 180, 450, 1000 | +| Residual variance $\sigma^2$ | 0.4, 0.5, 1 (effect present); 1 with $\beta = 0$ (true null) | +| Equivalence bound $\Delta$ | 0.010 to 0.100 in steps of 0.005 | +| Replications | 10,000 per cell | + +Predictors are balanced binary variables from a $2^4$ factorial grid. Coefficients are +$\beta = (0.2,\ 0.3)$ for $K = 2$ and $\beta = (0.2,\ 0.2,\ -0.1,\ -0.2)$ for $K = 4$. +Both give $\sum \beta_j^2 = 0.13$, so the two values of $K$ produce the same true +$\rho^2$ at a given $\sigma^2$ — an elegant feature of their design that makes the two +facets directly comparable. + +### The true $\rho^2$ + +Campbell & Lakens estimate the true $\rho^2$ by Monte Carlo over a 32-million-row design +matrix. It is available in closed form. Because the predictors are independent +Bernoulli(0.5), $\mathrm{Var}(X\beta) = 0.25 \sum \beta_j^2 = 0.0325$, giving +$\rho^2 = 0.0325 / (0.0325 + \sigma^2)$. + +One wrinkle is worth handling carefully. Their code builds the design with +`X[1:N, ]`, taking the first $N$ rows of a repeating 16-row block. Since none of +$N \in \{60, 180, 450, 1000\}$ is a multiple of 16, the final block is truncated and the +four predictors are not perfectly balanced. The quantity that actually determines +whether $H_0$ holds is therefore the **design-specific** $\rho^2$, computed from the +non-centrality the fixed design implies: + +$$ +\lambda_{\text{true}} = \frac{\lVert (I - P_1) X\beta \rVert^2}{\sigma^2}, +\qquad +\rho^2_{\text{true}} = \frac{\lambda_{\text{true}}}{\lambda_{\text{true}} + N} +$$ + +```{r} +#| label: design-fns +build_X <- function(K, N) { + base <- as.matrix(expand.grid(X1 = c(0, 1), X2 = c(0, 1), + X3 = c(0, 1), X4 = c(0, 1))) + reps <- ceiling(N / nrow(base)) + Xf <- cbind(1, base[rep(seq_len(nrow(base)), reps), , drop = FALSE]) + Xf[seq_len(N), c(1, seq_len(K) + 1), drop = FALSE] +} + +beta_for <- function(K, null = FALSE) { + if (null) return(rep(0, K + 1)) + if (K == 2) c(0, 0.2, 0.3) else c(0, 0.2, 0.2, -0.1, -0.2) +} + +rho2_design <- function(K, N, sigma2, betavec) { + mu <- as.vector(build_X(K, N) %*% betavec) + lambda <- sum((mu - mean(mu))^2) / sigma2 + lambda / (lambda + N) +} +``` + +```{r} +#| label: rho2-table +#| code-fold: true +expand.grid(K = c(2, 4), N = c(60, 180, 450, 1000), sigma2 = c(0.4, 0.5, 1)) |> + rowwise() |> + mutate( + rho2_population = 0.0325 / (0.0325 + sigma2), + rho2_design = rho2_design(K, N, sigma2, beta_for(K)) + ) |> + ungroup() |> + mutate(across(starts_with("rho2"), ~ round(.x, 5))) |> + pivot_wider(names_from = N, values_from = rho2_design, + names_prefix = "N = ") |> + kable(caption = "Population vs. design-specific true rho-squared. The K = 2 design stays balanced under truncation; K = 4 drifts slightly.") +``` + +The $K = 2$ design happens to remain balanced under truncation (the first two columns of +the factorial grid cycle with periods 2 and 4). The $K = 4$ design drifts by up to about +0.002 in $\rho^2$. This is minor, but it is the reason the boundary check below uses the +design-specific value rather than the population value. + +## Reproducing the simulation + +The implementation below is a vectorized rewrite rather than a transcription. For a +fixed design matrix the QR decomposition can be reused across all replications, so the +whole study runs in well under a minute instead of fitting 320,000 separate models with +`lm()`. The statistic computed is identical. + +```{r} +#| label: sim-fn +sim_condition <- function(K, N, sigma2, betavec, Deltavec, + nSim = 10000, alpha = 0.05, block = 2500) { + X <- build_X(K, N) + mu <- as.vector(X %*% betavec) + qrX <- qr(X) + df2 <- N - K - 1 + + Fstats <- numeric(nSim) + done <- 0L + while (done < nSim) { + b <- min(block, nSim - done) + Y <- mu + matrix(rnorm(N * b, 0, sqrt(sigma2)), nrow = N) + RSS <- colSums(qr.resid(qrX, Y)^2) + TSS <- colSums(sweep(Y, 2, colMeans(Y))^2) + R2 <- 1 - RSS / TSS + Fstats[(done + 1):(done + b)] <- (R2 / K) / ((1 - R2) / df2) + done <- done + b + } + + data.frame( + Delta = Deltavec, + pr_reject = vapply(Deltavec, function(D) { + mean(pf(Fstats, K, df2, ncp = N * D / (1 - D), lower.tail = TRUE) < alpha) + }, numeric(1)) + ) +} +``` + +```{r} +#| label: run-sim +Deltavec <- seq(0.01, 0.10, 0.005) +nSim <- 10000 + +conditions <- expand.grid( + K = c(2, 4), + N = c(60, 180, 450, 1000), + sigma2 = c(0.4, 0.5, 1), + is_null = c(FALSE, TRUE), + stringsAsFactors = FALSE +) |> + # the true-null condition is defined only once, at sigma2 = 1 + filter(!(is_null & sigma2 != 1)) + +set.seed(123) +results <- conditions |> + rowwise() |> + group_split() |> + lapply(function(cond) { + b <- beta_for(cond$K, null = cond$is_null) + out <- sim_condition(cond$K, cond$N, cond$sigma2, b, Deltavec, nSim = nSim) + out$K <- cond$K + out$N <- cond$N + out$sigma2 <- cond$sigma2 + out$is_null <- cond$is_null + out$rho2 <- if (cond$is_null) 0 else rho2_design(cond$K, cond$N, cond$sigma2, b) + out + }) |> + bind_rows() + +results <- results |> + mutate( + rho2_lab = factor(round(rho2, 3)), + N_lab = factor(N, levels = c(60, 180, 450, 1000)), + K_lab = factor(K, levels = c(2, 4), labels = c("K = 2", "K = 4")), + grp = interaction(rho2_lab, N_lab, drop = TRUE) + ) + +dim(results) +``` + +### Figure 1: rejection rate, truncated axis + +This is their main figure. The horizontal line is $\alpha = 0.05$; the vertical dashed +lines mark each true $\rho^2$. **To the left of a vertical line, $H_0$ is true**, and the +curve of the matching colour must sit at or below 0.05. + +```{r} +#| label: fig-truncated +#| fig-cap: "Probability of rejecting the equivalence null as a function of the bound. Colour distinguishes the true rho-squared; point shape and line type distinguish sample size. Vertical dashed lines mark each true rho-squared, i.e. the boundary of the null hypothesis." +bounds <- results |> distinct(K_lab, rho2, rho2_lab) |> filter(rho2 > 0) + +ggplot(results, aes(x = Delta, y = pr_reject, + group = grp, colour = rho2_lab)) + + geom_vline(data = bounds, aes(xintercept = rho2, colour = rho2_lab), + linetype = "dashed", linewidth = 0.4, alpha = 0.7) + + geom_hline(yintercept = 0.05, linewidth = 0.4) + + geom_line(aes(linetype = N_lab)) + + geom_point(aes(shape = N_lab), size = 1.6) + + facet_grid(K_lab ~ .) + + scale_x_continuous(breaks = seq(0, 0.10, by = 0.01)) + + scale_y_continuous(breaks = seq(0, 0.20, by = 0.05)) + + coord_cartesian(ylim = c(0, 0.20)) + + scale_colour_viridis_d(end = 0.85) + + labs(x = expression(Delta), + y = expression("Pr(" * p < alpha * ")"), + colour = expression("true " * rho^2), + shape = "N", linetype = "N") +``` + +### Figure 2: rejection rate, full axis + +```{r} +#| label: fig-full +#| fig-cap: "The same simulation on the full vertical scale, showing how power accumulates once the bound exceeds the true rho-squared." +ggplot(results, aes(x = Delta, y = pr_reject, + group = grp, colour = rho2_lab)) + + geom_vline(data = bounds, aes(xintercept = rho2, colour = rho2_lab), + linetype = "dashed", linewidth = 0.4, alpha = 0.7) + + geom_hline(yintercept = 0.05, linewidth = 0.4) + + geom_line(aes(linetype = N_lab)) + + geom_point(aes(shape = N_lab), size = 1.6) + + facet_grid(K_lab ~ .) + + scale_x_continuous(breaks = seq(0, 0.10, by = 0.01)) + + scale_y_continuous(breaks = seq(0, 1, by = 0.1)) + + coord_cartesian(ylim = c(0, 1)) + + scale_colour_viridis_d(end = 0.85) + + labs(x = expression(Delta), + y = expression("Pr(" * p < alpha * ")"), + colour = expression("true " * rho^2), + shape = "N", linetype = "N") +``` + +### Type I error control + +The strongest single check is behaviour at the boundary. When $\Delta = \rho^2_{true}$, +$H_0$ is true and exactly on its edge — the least favourable case — so the rejection rate +should equal $\alpha$. Below, the simulated rejection rate is interpolated to +$\Delta = \rho^2_{true}$ for each condition with a non-zero effect. + +```{r} +#| label: tbl-boundary +#| code-fold: true +boundary <- results |> + filter(!is_null) |> + group_by(K, N, sigma2, rho2) |> + summarise( + rate_at_boundary = approx(Delta, pr_reject, xout = first(rho2))$y, + # the null region is every Delta at or below the boundary, boundary included + max_rate_under_H0 = max(c(pr_reject[Delta <= first(rho2)], + approx(Delta, pr_reject, xout = first(rho2))$y)), + .groups = "drop" + ) |> + mutate(z = (rate_at_boundary - 0.05) / sqrt(0.05 * 0.95 / nSim)) + +boundary |> + mutate(across(c(rho2, rate_at_boundary, max_rate_under_H0), ~ round(.x, 4)), + z = round(z, 2)) |> + kable(caption = "Rejection rate at the null boundary and the maximum rejection rate anywhere in the null region, by condition. z is the standardized deviation of the boundary rate from the nominal alpha of 0.05.") +``` + +```{r} +#| label: boundary-summary +#| code-fold: true +mcse <- sqrt(0.05 * 0.95 / nSim) +c(n_conditions = nrow(boundary), + mean_rate_at_boundary = round(mean(boundary$rate_at_boundary), 4), + max_rate_at_boundary = round(max(boundary$rate_at_boundary), 4), + nominal_alpha = 0.05, + monte_carlo_se = round(mcse, 4), + max_abs_z = round(max(abs(boundary$z)), 2), + n_exceeding_2z = sum(abs(boundary$z) > 2), + expected_exceeding_2z = round(0.0455 * nrow(boundary), 2)) +``` + +Averaged across conditions the boundary rejection rate is essentially exactly nominal. +Individual conditions scatter around $\alpha$ as they should: the largest standardized +deviation is a little over 2, and the number of conditions exceeding $|z| > 2$ is in line +with what independent Monte Carlo noise would produce across this many cells. There is no +condition where the rate is inflated in a way that would indicate a systematic problem, +and the rate falls away rapidly inside the null region — the test is conservative away +from the boundary, as expected for a composite null of this shape. + +::: {.callout-tip collapse="true"} +## Why the boundary rate is the right check + +$H_0: \rho^2 \geq \Delta$ is a composite null. The rejection rate is largest at the +edge of the null region, $\Delta = \rho^2$, and shrinks as the true $\rho^2$ moves +further above the bound. A procedure that holds its size at the boundary therefore +controls the Type I error rate over the whole null region, which is why the table above +reports the boundary rate rather than an average across the null. +::: + +## The analytic power function + +Their supplement also defines an analytic power function, used to overlay a dotted +reference curve for the true-null condition. TOSTER exposes the same calculation through +`power_eq_f()`. + +```{r} +#| label: power-check +#| code-fold: false +power_CL <- function(Delta, K, N) { + Fstar <- qf(0.05, df1 = K, df2 = N - K - 1, + ncp = (N * Delta) / (1 - Delta), lower.tail = TRUE) + pf(Fstar, df1 = K, df2 = N - K - 1, lower.tail = TRUE) +} + +pchk <- expand.grid(Delta = c(0.02, 0.05, 0.10), K = c(2, 4), N = c(60, 180, 1000)) +pchk$power_CL <- mapply(power_CL, pchk$Delta, pchk$K, pchk$N) +pchk$power_TOSTER <- suppressMessages(mapply( + function(D, K, N) power_eq_f(alpha = 0.05, df1 = K, df2 = N - K - 1, + eqbound = D)$power, + pchk$Delta, pchk$K, pchk$N +)) + +max(abs(pchk$power_CL - pchk$power_TOSTER)) +``` + +The two agree to zero difference. As a final check, the simulated true-null curves should +lie on this analytic function: + +```{r} +#| label: fig-power +#| fig-cap: "Simulated rejection rate under a true null effect (points) against the analytic power function (lines). Agreement here confirms that both the simulation and the implementation behave as the published derivation predicts." +null_res <- results |> + filter(is_null) |> + rowwise() |> + mutate(analytic = power_CL(Delta, K, N)) |> + ungroup() + +ggplot(null_res, aes(x = Delta, colour = N_lab)) + + geom_line(aes(y = analytic)) + + geom_point(aes(y = pr_reject), size = 1.6) + + facet_grid(K_lab ~ .) + + scale_colour_viridis_d(end = 0.85) + + labs(x = expression(Delta), y = "Pr(reject) when true rho-squared = 0", + colour = "N") +``` + +```{r} +#| label: power-residual +#| code-fold: true +# Exact binomial test of each simulated rate against its analytic value. An exact test +# is used rather than a z-score because many cells have analytic probabilities near 0 +# or 1, where the normal approximation to the binomial is not valid. +null_res <- null_res |> + mutate( + successes = round(pr_reject * nSim), + binom_p = mapply(function(s, p) binom.test(s, nSim, p)$p.value, + successes, analytic), + expected_count = nSim * analytic + ) + +bonf <- 0.05 / nrow(null_res) + +c(n_points = nrow(null_res), + max_abs_deviation = round(max(abs(null_res$pr_reject - null_res$analytic)), 4), + min_binom_p = signif(min(null_res$binom_p), 3), + bonferroni_alpha = signif(bonf, 3), + n_below_bonf = sum(null_res$binom_p < bonf)) +``` + +No point deviates from the analytic value by more than exact-binomial sampling error +would explain, after correcting for the number of comparisons. (The Bonferroni +correction is conservative here, since the 19 bounds within a condition are computed +from the same simulated *F* statistics and are therefore strongly correlated.) + +As a secondary view, restricting to the cells where a normal approximation is actually +valid — at least 10 expected successes and 10 expected failures — gives the usual +standardized check: + +```{r} +#| label: power-residual-z +#| code-fold: true +valid <- null_res |> + filter(expected_count >= 10, expected_count <= nSim - 10) |> + mutate(z = (pr_reject - analytic) / sqrt(analytic * (1 - analytic) / nSim)) + +c(n_valid_cells = nrow(valid), + max_abs_z = round(max(abs(valid$z)), 2), + n_exceeding_2z = sum(abs(valid$z) > 2), + expected_exceeding_2z = round(0.0455 * nrow(valid), 1)) +``` + +The count of cells with $|z| > 2$ runs somewhat above the naive expectation. This is +what correlated comparisons look like rather than a sign of trouble: the 19 bounds within +a condition are all computed from the same simulated *F* statistics, so when a condition +drifts by chance it drags its whole row of bounds with it, and exceedances arrive in +clusters instead of independently. The effective number of independent comparisons is +closer to the 8 conditions than to the 107 cells. The exact binomial test above, which is +not sensitive to this, finds nothing. + +::: {.callout-warning collapse="true"} +## A note on the cells excluded above + +Roughly a third of the grid has an analytic rejection probability below 0.001 or above +0.999. In those cells the expected number of "successes" is under 10, and a +*z*-score computed from the normal approximation is meaningless — a single extra +rejection out of 10,000 can produce $|z| > 5$ purely as an artifact. Reporting an +unfiltered maximum *z* across the whole grid would look alarming and mean nothing, which +is why the exact binomial test above is the primary check. +::: + +# Part 2: Beyond the designs Campbell & Lakens simulated + +Everything above concerns the setting Campbell & Lakens actually simulated. In that +setting TOSTER's non-centrality parameter reduces exactly to the published one, so +Part 1 verifies the *un*-extended procedure. This part tests the generalization itself: +factorial, within-subjects, and mixed designs, where $df_1 + df_2 + 1 \neq N$. + +## Where the published identity breaks + +```{r} +#| label: df-gap-table +#| code-fold: true +gap <- data.frame( + Design = c("Regression (K predictors)", "One-way between (J groups)", + "Factorial between (p parameters)", "One-way RM (n subjects, k levels)", + "Mixed: between effect", "Mixed: within effect"), + df1 = c("K", "J-1", "varies", "k-1", "g-1", "k-1"), + df2 = c("N-K-1", "N-J", "N-p", "(n-1)(k-1)", "g(n-1)", "g(n-1)(k-1)"), + `df1+df2+1` = c("N", "N", "N-(p-df1-1)", "n(k-1)+1", "gn", "gn(k-1)+1"), + `Total obs` = c("N", "N", "N", "nk", "gnk", "gnk"), + check.names = FALSE +) +kable(gap, caption = "TOSTER's normalizer df1+df2+1 against the total number of observations. The two coincide only in the designs Campbell & Lakens simulated.") +``` + +The gap is not a rounding error. For a one-way repeated-measures design, +$df_1 + df_2 + 1 \approx n(k-1)$ while the data contain $nk$ observations, a ratio of +$(k-1)/k$ that does **not** shrink as $n$ grows. Taken at face value that looks like a +serious problem. + +It is not, and the reason is the organising idea of this whole part: + +::: {.callout-important} +## $df_1 + df_2 + 1$ is the effective sample size of the *error stratum* + +$df_1 + df_2$ is the dimension of the contrast space in which the effect is tested. In a +single-stratum design that space is the whole data set and $df_1 + df_2 + 1 = N$. In a +repeated-measures design the within-subject test lives in the subject-centred contrast +space of dimension $n(k-1)$, and in a mixed design the between-subjects test lives on the +$gn$ subject means. TOSTER's bound is therefore a variance ratio *within the stratum where +the effect is tested* — which is precisely what "partial" means in partial $\eta^2$. +::: + +The mixed design settles this, because there the two readings point in opposite +directions: the between-subjects effect has $df_1 + df_2 + 1 = gn$, the number of +subjects, which is far **smaller** than $gnk$ but exactly right. + +## Three calibration targets + +Because the bound is a number on some scale, "is the Type I error controlled?" has no +answer until the scale is fixed. Three candidates, all exact functions of the true +non-centrality $\lambda$: + +| Target | Formula | Reading | +|:--|:--|:--| +| $\Delta_{pop}$ | $\lambda/(\lambda + N_{total})$ | share of *total* variance | +| $\Delta_{tost}$ | $\lambda/(\lambda + df_1 + df_2 + 1)$ | what TOSTER's inversion implies | +| $\Delta_{pes}$ | $\lambda/(\lambda + df_2)$ | limit of the reported `pes` statistic | + +```{r} +#| label: calib-fns +targets_for <- function(lam, df1, df2, N_total) { + c(Delta_pop = lam / (lam + N_total), + Delta_tost = lam / (lam + df1 + df2 + 1), + Delta_pes = lam / (lam + df2)) +} +``` + +$\Delta_{tost}$ and $\Delta_{pes}$ differ only by $df_1 + 1$ in the denominator, so they +agree to $O(1/n)$ in every design. $\Delta_{pop}$ is the odd one out whenever the design +has more than one error stratum. + +## The rejection rate in closed form + +The test rejects when `pf(F, df1, df2, ncp = lambda_eq) < alpha`. Because `pf` is strictly +increasing in `F`, this is exactly `F < qf(alpha, df1, df2, ncp = lambda_eq)`. So when the +observed *F* really is non-central *F* with non-centrality $\lambda$, the rejection rate +is available analytically — no simulation needed: + +```{r} +#| label: rate-exact +rate_exact <- function(Delta, df1, df2, lam, alpha = 0.05) { + pf(qf(alpha, df1, df2, ncp = Delta/(1-Delta)*(df1+df2+1)), + df1, df2, ncp = lam) +} + +# Evaluating a whole grid of bounds against stored F statistics, via critical values +sweep_delta <- function(Fstats, Deltavec, df1, df2, alpha = 0.05) { + crit <- qf(alpha, df1, df2, ncp = Deltavec/(1-Deltavec)*(df1+df2+1)) + findInterval(crit, sort(Fstats)) / length(Fstats) +} +``` + +This generalizes `power_eq_f()`, which is the same quantity at $\lambda = 0$: + +```{r} +#| label: rate-exact-check +#| code-fold: true +chk <- expand.grid(D = c(0.02, 0.06, 0.14), df1 = c(1, 2, 3), df2 = c(20, 60)) +chk$exact <- mapply(rate_exact, chk$D, chk$df1, chk$df2, 0) +chk$power_eq_f <- suppressMessages(mapply( + function(D, a, b) power_eq_f(alpha = 0.05, df1 = a, df2 = b, eqbound = D)$power, + chk$D, chk$df1, chk$df2)) +c(comparisons = nrow(chk), + max_abs_diff = max(abs(chk$exact - chk$power_eq_f))) +``` + +Simulation is still used below — the analytic rate assumes the *F* statistic really has +the non-central distribution the theory says it does, which is exactly one of the things +being tested. Where the two agree, that assumption holds. + +## Design A: one-way within-subjects ANOVA + +Model $Y_{ij} = \mu + \alpha_j + s_i + e_{ij}$ with $s_i \sim N(0, \sigma^2_s)$ and +$e_{ij} \sim N(0, \sigma^2_e)$. The within-subject test is computed in the contrast space +$Z = YC'$ where $C$ is any $(k-1) \times k$ orthonormal contrast matrix with $C\mathbf{1} += 0$; then $\lambda = n \sum_j \alpha_j^2 / \sigma^2_e$, $df_1 = k-1$ and +$df_2 = (n-1)(k-1)$. + +```{r} +#| label: rm-sim-fn +helm_C <- function(k) t(qr.Q(qr(cbind(1, contr.helmert(k)))))[-1, , drop = FALSE] + +# Contrast-space simulator. psi = variances of the contrast scores (all 1 under +# sphericity); mu_c = contrast means, placing the effect within the contrast space. +rm_sim <- function(n, k, lam, psi = NULL, mu_c = NULL, nSim = 10000) { + df1 <- k - 1; df2 <- (n - 1) * (k - 1) + if (is.null(psi)) psi <- rep(1, df1) + if (is.null(mu_c)) mu_c <- { v <- rep(0, df1); v[1] <- sqrt(lam / n); v } + stopifnot(length(psi) == df1, length(mu_c) == df1) + G <- matrix(rnorm(n * df1 * nSim), nrow = n) # cols: contrast fastest, rep slowest + G <- sweep(G, 2, rep(sqrt(psi), times = nSim), "*") + G <- sweep(G, 2, rep(mu_c, times = nSim), "+") + cm <- colMeans(G); css <- colSums(G^2) - n * cm^2 + SSA <- n * colSums(matrix(cm^2, nrow = df1)) + SSAS <- colSums(matrix(css, nrow = df1)) + (SSA / df1) / (SSAS / df2) +} +``` + +::: {.callout-note collapse="true"} +## The intraclass correlation cannot matter here + +Because $C\mathbf{1} = 0$, the subject effect $s_i$ is annihilated by the contrast: +$\Psi = C\Sigma C' = \sigma^2_e I$ under compound symmetry, whatever $\sigma^2_s$ is. The +*F* statistic — and therefore the whole test — is invariant to the intraclass +correlation. This is why ICC is not a factor in the grid below. The check must be run +with a full $n \times k$ generator, since the contrast simulator is blind to ICC by +construction and testing it there would be vacuous. +::: + +```{r} +#| label: rm-icc-invariance +#| code-fold: true +set.seed(404) +icc_check <- sapply(c(0, 0.3, 0.6, 0.9), function(rho) { + n <- 20; k <- 3; s2e <- 1; s2s <- rho/(1-rho)*s2e + al <- c(-1, 0, 1); al <- al/sqrt(sum(al^2))*sqrt(3/n) + lam <- n*sum(al^2)/s2e; df1 <- k-1; df2 <- (n-1)*(k-1) + Fs <- replicate(20000, { + Y <- matrix(rep(al, each=n), n, k) + matrix(rnorm(n, 0, sqrt(s2s)), n, k) + + matrix(rnorm(n*k, 0, sqrt(s2e)), n, k) + g <- mean(Y); SA <- n*sum((colMeans(Y)-g)^2); SS <- k*sum((rowMeans(Y)-g)^2) + (SA/df1) / ((sum((Y-g)^2)-SA-SS)/df2) }) + D <- lam/(lam+df1+df2+1) + mean(Fs < qf(0.05, df1, df2, ncp = D/(1-D)*(df1+df2+1))) +}) +setNames(round(icc_check, 4), paste0("ICC=", c(0, 0.3, 0.6, 0.9))) +``` + +All four sit at nominal, as the algebra requires. + +### Conditions and results + +```{r} +#| label: rm-run +set.seed(2026) +nSim2 <- 10000 +Deltavec2 <- seq(0.005, 0.40, by = 0.005) + +rm_grid <- expand.grid(k = c(2, 3, 4, 8), n = c(10, 20, 50, 100), + eta2p = c(0, 0.02, 0.06, 0.14)) + +rm_res <- do.call(rbind, lapply(seq_len(nrow(rm_grid)), function(i) { + g <- rm_grid[i, ] + df1 <- g$k - 1; df2 <- (g$n - 1)*(g$k - 1); Ntot <- g$n * g$k + lam <- Ntot * g$eta2p / (1 - g$eta2p) # population eta2p -> lambda + Fs <- rm_sim(g$n, g$k, lam, nSim = nSim2) + tg <- targets_for(lam, df1, df2, Ntot) + data.frame(k = g$k, n = g$n, eta2p = g$eta2p, df1 = df1, df2 = df2, + Ntot = Ntot, lam = lam, + Delta_pop = tg[["Delta_pop"]], Delta_tost = tg[["Delta_tost"]], + Delta_pes = tg[["Delta_pes"]], + rate_pop = mean(Fs < qf(.05, df1, df2, ncp = tg[["Delta_pop"]]/(1-tg[["Delta_pop"]])*(df1+df2+1))), + rate_tost = mean(Fs < qf(.05, df1, df2, ncp = tg[["Delta_tost"]]/(1-tg[["Delta_tost"]])*(df1+df2+1))), + rate_pes = mean(Fs < qf(.05, df1, df2, ncp = tg[["Delta_pes"]]/(1-tg[["Delta_pes"]])*(df1+df2+1))), + curve = I(list(sweep_delta(Fs, Deltavec2, df1, df2)))) +})) +nrow(rm_res) +``` + +```{r} +#| label: fig-rm-curves +#| fig-cap: "Rejection rate against the equivalence bound for one-way repeated-measures designs, at a true population partial eta-squared of 0.06. Vertical lines mark the three calibration targets; the horizontal line is alpha. The curve crosses alpha at the TOSTER target, not at the total-variance target." +rm_long <- do.call(rbind, lapply(which(rm_res$eta2p == 0.06), function(i) + data.frame(k = rm_res$k[i], n = rm_res$n[i], + Delta = Deltavec2, rate = rm_res$curve[[i]]))) +rm_marks <- rm_res[rm_res$eta2p == 0.06, c("k","n","Delta_pop","Delta_tost")] |> + pivot_longer(c(Delta_pop, Delta_tost), names_to = "target", values_to = "Delta") + +ggplot(rm_long, aes(Delta, rate, colour = factor(n))) + + geom_hline(yintercept = 0.05, linewidth = 0.4) + + geom_vline(data = rm_marks, aes(xintercept = Delta, linetype = target), + linewidth = 0.4, colour = "grey35") + + geom_line(linewidth = 0.7) + + facet_wrap(~ paste0("k = ", k), nrow = 1) + + coord_cartesian(ylim = c(0, 0.25), xlim = c(0, 0.35)) + + scale_colour_viridis_d(end = 0.85) + + labs(x = expression(Delta), y = expression("Pr(" * p < alpha * ")"), + colour = "n subjects", linetype = NULL) +``` + +```{r} +#| label: tbl-rm-boundary +#| code-fold: true +rm_b <- rm_res[rm_res$eta2p > 0, ] +rm_b |> + group_by(k) |> + summarise(conditions = n(), + `mean rate @ Delta_pop` = round(mean(rate_pop), 4), + `mean rate @ Delta_tost` = round(mean(rate_tost), 4), + `mean rate @ Delta_pes` = round(mean(rate_pes), 4), + `median Delta_tost/Delta_pop` = round(median(Delta_tost/Delta_pop), 3), + .groups = "drop") |> + kable(caption = "One-way repeated measures: rejection rate at each of the three calibration targets, averaged over n and effect size. Nominal alpha = 0.05.") +``` + +The verdict depends entirely on which scale the bound is read on, and the ratio +$\Delta_{tost}/\Delta_{pop}$ approaches $k/(k-1)$ — so the discrepancy is **largest at +$k = 2$**, not at large $k$. + +- On $\Delta_{tost}$, the rate is nominal in every cell. The procedure controls its size. +- On $\Delta_{pes}$ it is mildly liberal in small samples, which is the ordinary upward + bias of $\eta^2_p$ rather than a fault in the bound. +- On $\Delta_{pop}$ it is severely conservative, and *increasingly* so as $n$ grows. + +That last point is worth stating plainly, since it is the practical trap: a bound reasoned +about as "this factor explains less than 5% of the variance in my data" is not the bound +the function applies. `equ_anova()` works on the partial scale, where subject variance is +excluded from the denominator. + +## Design B: factorial between-subjects ANOVA + +For a balanced $a \times b$ design with $m$ per cell, the cell means and the error sum of +squares are independent and jointly sufficient, so there is no need to generate $N$ +observations per replication. + +```{r} +#| label: fac-sim-fn +fac_sim <- function(a, b, m, eta2p = c(A = 0, B = 0, AB = 0), + sigma2 = 1, nSim = 10000) { + N <- a*b*m; dfE <- N - a*b + sc <- function(len, ss) { v <- seq_len(len) - (len+1)/2; v/sqrt(sum(v^2))*sqrt(ss) } + # balanced design => effects orthogonal => all three targets can be set at once + alpha_i <- sc(a, a * eta2p[["A"]] /(1 - eta2p[["A"]])) + beta_j <- sc(b, b * eta2p[["B"]] /(1 - eta2p[["B"]])) + G0 <- outer(sc(a, 1), sc(b, 1)); G0 <- G0 - outer(rowMeans(G0), colMeans(G0), "+") + mean(G0) + gam <- if (eta2p[["AB"]] > 0) G0/sqrt(sum(G0^2))*sqrt(a*b*eta2p[["AB"]]/(1-eta2p[["AB"]])) else G0*0 + M <- outer(alpha_i, beta_j, "+") + gam + CM <- as.vector(M) + matrix(rnorm(a*b*nSim, 0, sqrt(sigma2/m)), nrow = a*b) + Ka <- model.matrix(~ 0 + factor(rep(1:a, times = b))) + Kb <- model.matrix(~ 0 + factor(rep(1:b, each = a))) + rA <- crossprod(Ka, CM)/b; rB <- crossprod(Kb, CM)/a; g <- colMeans(CM) + SSA <- m*b*colSums(sweep(rA, 2, g)^2) + SSB <- m*a*colSums(sweep(rB, 2, g)^2) + Rr <- CM - Ka %*% rA - Kb %*% rB + rep(g, each = a*b) + SSAB <- m*colSums(Rr^2) + MSE <- rchisq(nSim, dfE) * sigma2 / dfE + list(A = (SSA/(a-1))/MSE, B = (SSB/(b-1))/MSE, AB = (SSAB/((a-1)*(b-1)))/MSE, + lam = c(A = m*b*sum(alpha_i^2)/sigma2, B = m*a*sum(beta_j^2)/sigma2, + AB = m*sum(gam^2)/sigma2), + df1 = c(A = a-1, B = b-1, AB = (a-1)*(b-1)), dfE = dfE, N = N) +} +``` + +```{r} +#| label: fac-run +set.seed(515) +fac_grid <- expand.grid(design = c("2x2","2x3","3x4"), m = c(5, 10, 25, 100), + eta2p = c(0.02, 0.06, 0.14), stringsAsFactors = FALSE) +fac_res <- do.call(rbind, lapply(seq_len(nrow(fac_grid)), function(i) { + gg <- fac_grid[i, ]; ab <- as.integer(strsplit(gg$design, "x")[[1]]) + s <- fac_sim(ab[1], ab[2], gg$m, + c(A = gg$eta2p, B = gg$eta2p, AB = gg$eta2p), nSim = nSim2) + do.call(rbind, lapply(c("A","B","AB"), function(e) { + df1 <- s$df1[[e]]; lam <- s$lam[[e]] + tg <- targets_for(lam, df1, s$dfE, s$N) + rt <- function(D) mean(s[[e]] < qf(.05, df1, s$dfE, ncp = D/(1-D)*(df1+s$dfE+1))) + data.frame(design = gg$design, m = gg$m, effect = e, eta2p = gg$eta2p, + df1 = df1, df2 = s$dfE, N = s$N, eff_N = df1 + s$dfE + 1, + rate_pop = rt(tg[["Delta_pop"]]), rate_tost = rt(tg[["Delta_tost"]]), + rate_pes = rt(tg[["Delta_pes"]])) + })) +})) +nrow(fac_res) +``` + +```{r} +#| label: tbl-fac-boundary +#| code-fold: true +fac_res |> + group_by(design, effect) |> + summarise(`rate @ pop` = round(mean(rate_pop), 4), + `rate @ tost` = round(mean(rate_tost), 4), + `rate @ pes` = round(mean(rate_pes), 4), + `eff_N vs N` = paste0(min(eff_N - N), " to ", max(eff_N - N)), + .groups = "drop") |> + kable(caption = "Factorial between-subjects designs, averaged over cell size and effect size. Here df1+df2+1 falls short of N by only (p - df1 - 1), so all three calibrations nearly agree.") +``` + +In a single-stratum factorial the gap is $p - df_1 - 1$ observations out of $N$, so all +three targets nearly coincide and the distinction that dominated Design A almost vanishes. +The rate is at or just below nominal throughout: mildly conservative, $O(1/N)$. + +## Design C: mixed designs + +This is the case that decides between the two readings, because the between-subjects +effect is tested on the $gn$ subject means while the data contain $gnk$ observations. + +```{r} +#| label: mix-run +#| code-fold: true +set.seed(626) +mix_grid <- expand.grid(g = c(2, 3), n = c(15, 30), k = c(3, 4), eta2p = c(0.06)) +mix_res <- do.call(rbind, lapply(seq_len(nrow(mix_grid)), function(i) { + q <- mix_grid[i, ]; ns <- q$g * q$n; Ntot <- ns * q$k + # between stratum: one-way ANOVA on subject means, tau2 = s2s + s2e/k + s2s <- 1; s2e <- 1; tau2 <- s2s + s2e/q$k + df1 <- q$g - 1; df2 <- q$g * (q$n - 1) + lam <- (df1 + df2 + 1) * q$eta2p/(1 - q$eta2p) # target on the subject-mean scale + gam <- { v <- seq_len(q$g) - (q$g+1)/2; v/sqrt(sum(v^2))*sqrt(lam*tau2/q$n) } + sm <- rep(gam, each = q$n) + matrix(rnorm(ns*nSim2, 0, sqrt(tau2)), ns, nSim2) + grp <- rep(seq_len(q$g), each = q$n) + gm <- rowsum(sm, grp)/q$n; gmn <- colMeans(sm) + SSb <- q$n * colSums(sweep(gm, 2, gmn)^2) + SSw <- colSums((sm - gm[grp, , drop = FALSE])^2) + Fb <- (SSb/df1)/(SSw/df2) + tg <- targets_for(lam, df1, df2, Ntot) + rt <- function(D) mean(Fb < qf(.05, df1, df2, ncp = D/(1-D)*(df1+df2+1))) + data.frame(g = q$g, n = q$n, k = q$k, n_subj = ns, N_total = Ntot, + eff_N = df1 + df2 + 1, + Delta_pop = round(tg[["Delta_pop"]], 4), + Delta_tost = round(tg[["Delta_tost"]], 4), + rate_pop = rt(tg[["Delta_pop"]]), rate_tost = rt(tg[["Delta_tost"]])) +})) +kable(mix_res, caption = "Mixed design, between-subjects effect. eff_N equals the number of subjects exactly, and it is the total-observation reading that is wrong -- here in the opposite direction from Design A.") +``` + +`eff_N` equals `n_subj` in every row. The between-subjects effect *is* a one-way ANOVA on +the subject means, and TOSTER's normalizer recovers exactly that. Reading the bound +against total observations is wrong by a factor of $k$ — and note the direction has +flipped relative to Design A. No single fixed relationship to $N$ could be right in both +places, which is what makes $df_1 + df_2 + 1$ the correct general answer rather than a +convenient approximation. + +## Caveat: sphericity corrections are not applied + +Everything above assumed compound symmetry. When sphericity fails, `equ_anova()` has a +genuine limitation: it reads the uncorrected univariate degrees of freedom from the +`Anova.mlm` object and never applies a Greenhouse-Geisser or Huynh-Feldt correction. The +correction machinery in `R/anova_summary.R` is commented out, and `add_corrected_df()` +does not exist in the package. Fitting with `afex::aov_car(..., anova_table = +list(correction = "GG"))` therefore has **no effect** on the equivalence *p*-value. + +To quantify the cost, write $\Psi = C\Sigma C'$ for the covariance of the contrast scores +and use Box's $\epsilon = (\sum \psi_i)^2 / \big[(k-1)\sum \psi_i^2\big]$. Holding +$\overline{\psi} = 1$ keeps the nominal non-centrality — and so the nominal boundary — +fixed while $\epsilon$ varies, so any change in size is attributable to non-sphericity +alone. + +```{r} +#| label: sph-theory +eps_of <- function(psi) sum(psi)^2 / (length(psi) * sum(psi^2)) +psi_for_eps <- function(k, target) { + if (isTRUE(all.equal(target, 1))) return(rep(1, k - 1)) + stopifnot(target > 1/(k-1)) + cc <- uniroot(function(cc) eps_of(c(cc, rep(1, k-2))) - target, c(1, 1e6))$root + p <- c(cc, rep(1, k-2)); p * (k-1) / sum(p) # rescale to mean 1 +} +``` + +Under a violation there is no single $\lambda$, because $SS_A$ becomes a weighted mix of +non-central chi-squares. Where the effect sits in the contrast space therefore matters, so +it enters as an explicit factor. + +```{r} +#| label: sph-run +set.seed(737) +sph <- expand.grid(k = c(4, 8), n = c(15, 30, 60), eps = c(1, 0.9, 0.75, 0.6, 0.5), + placement = c("high-variance", "low-variance", "uniform"), + eta2p = 0.06, stringsAsFactors = FALSE) +sph_res <- do.call(rbind, lapply(seq_len(nrow(sph)), function(i) { + s <- sph[i, ]; df1 <- s$k - 1; df2 <- (s$n - 1)*(s$k - 1) + lam <- (df1 + df2 + 1) * s$eta2p/(1 - s$eta2p) + D <- lam/(lam + df1 + df2 + 1) + psi <- psi_for_eps(s$k, s$eps) + v <- switch(s$placement, `high-variance` = c(1, rep(0, df1-1)), + `low-variance` = c(rep(0, df1-1), 1), uniform = rep(1, df1)) + mu <- v/sqrt(sum(v^2))*sqrt(lam/s$n) + Fs <- rm_sim(s$n, s$k, lam, psi = psi, mu_c = mu, nSim = nSim2) + cbind(s, size = mean(Fs < qf(.05, df1, df2, ncp = D/(1-D)*(df1+df2+1)))) +})) +``` + +```{r} +#| label: fig-sph +#| fig-cap: "Size of the equivalence test at its nominal boundary as sphericity degrades. Epsilon = 1 is the built-in control and returns nominal size. The direction and severity of the failure depend on where the effect sits in the contrast space." +ggplot(sph_res, aes(eps, size, colour = placement)) + + geom_hline(yintercept = 0.05, linewidth = 0.4) + + geom_line(linewidth = 0.7) + geom_point(size = 1.5) + + facet_grid(paste0("k = ", k) ~ paste0("n = ", n)) + + scale_x_reverse() + scale_colour_viridis_d(end = 0.85) + + labs(x = expression("Box's " * epsilon * " (decreasing = worse violation)"), + y = "Rejection rate at the nominal boundary", colour = "Effect placed on") +``` + +```{r} +#| label: tbl-sph +#| code-fold: true +sph_res |> + group_by(eps, placement) |> + summarise(size = round(mean(size), 4), .groups = "drop") |> + pivot_wider(names_from = placement, values_from = size) |> + kable(caption = "Size at the nominal boundary by Box's epsilon, averaged over k and n. Nominal alpha = 0.05.") +``` + +The $\epsilon = 1$ row returns nominal size, confirming the construction. Away from it the +test is badly miscalibrated — inflated by several times $\alpha$ when the effect loads on +a high-variance contrast, and driven to near zero when it loads on a low-variance one. +This is a real limitation, and it is the only genuine failure anywhere in this document. + +::: {.callout-warning} +## Practical implication + +For repeated-measures designs with $k > 2$, check sphericity on the fitted model before +trusting `equ_anova()`, and treat a Mauchly test or an $\hat{\epsilon}$ well below 1 as a +reason not to rely on the equivalence *p*-value. Note this is a limitation of the current +implementation, not of the underlying method: a corrected-$df$ version is possible and +would slot into `R/anova_summary.R`. With $k = 2$ there is only one contrast and +sphericity is not an issue. +::: + +## Pipeline check: does `equ_anova()` extract the right degrees of freedom? + +Everything above tests the mathematics on *F* statistics computed directly. It does not +test how TOSTER pulls $df_1$ and $df_2$ out of a fitted model object — which is where a +practical bug would live. This fits real datasets with `stats::aov` and `afex::aov_car` +and compares against the closed-form path. + +```{r} +#| label: pipeline-check +#| code-fold: true +suppressMessages(library(afex)) +set.seed(848) +eqb <- 0.075 +pipe <- do.call(rbind, lapply(1:4, function(rep_i) { + out <- list() + # (a) one-way RM, k = 4 + n <- 12; k <- 4 + Y <- matrix(rnorm(n*k), n, k) + rep(c(0, .4, .2, .7), each = n) + rnorm(n) + d <- data.frame(y = as.vector(Y), id = factor(rep(1:n, k)), + cond = factor(rep(1:k, each = n))) + ea <- suppressMessages(equ_anova(aov(y ~ cond + Error(id/cond), data = d), eqbound = eqb)) + ea$effect <- trimws(ea$effect) # aov path pads names with spaces + r <- ea[ea$effect == "cond", ] + gmn <- mean(Y); SA <- n*sum((colMeans(Y)-gmn)^2); SS <- k*sum((rowMeans(Y)-gmn)^2) + Ff <- (SA/(k-1))/((sum((Y-gmn)^2)-SA-SS)/((n-1)*(k-1))) + out[[1]] <- data.frame(design = "one-way RM", effect = "cond", + d_df1 = r$df1-(k-1), d_df2 = r$df2-(n-1)*(k-1), d_F = r$F.value-Ff, + d_p = r$p.equ - equ_ftest(Ff, k-1, (n-1)*(k-1), eqbound = eqb)$p.value) + # (b) 2x3 between-subjects + a <- 2; b <- 3; m <- 8 + dd <- expand.grid(rep = 1:m, A = factor(1:a), B = factor(1:b)) + dd$y <- rnorm(nrow(dd)) + as.numeric(dd$A)*.5 + as.numeric(dd$B)*.3 + an <- anova(lm(y ~ A*B, data = dd)) + ea2 <- suppressMessages(equ_anova(aov(y ~ A*B, data = dd), eqbound = eqb)) + ea2$effect <- trimws(ea2$effect) + for (e in c("A","B","A:B")) { + rr <- ea2[ea2$effect == e, ]; Fa <- an[e, "F value"]; d2 <- an["Residuals","Df"] + out[[length(out)+1]] <- data.frame(design = "2x3 between", effect = e, + d_df1 = rr$df1-an[e,"Df"], d_df2 = rr$df2-d2, d_F = rr$F.value-Fa, + d_p = rr$p.equ - equ_ftest(Fa, an[e,"Df"], d2, eqbound = eqb)$p.value) + } + do.call(rbind, out) +})) +pipe |> group_by(design, effect) |> + summarise(across(starts_with("d_"), ~ max(abs(.x))), .groups = "drop") |> + kable(caption = "Maximum absolute discrepancy between equ_anova() and the closed-form path, over 4 simulated datasets per design. Zero everywhere means df extraction is correct.") +``` + +Two wrinkles worth recording for anyone doing this comparison: the `aov`/`aovlist` path +returns effect names **padded with trailing spaces** (`"cond "`), because +`reformat_aov_summary()` never calls the `remove_empty_space()` helper defined alongside +it, so any join on `effect` needs `trimws()`; and the `afex_aov` / `Anova.mlm` path emits +an extra `(Intercept)` row that the `aov` path does not. + +## What the extension shows + +```{r} +#| label: xdesign-summary +#| code-fold: true +rbind( + data.frame(Design = "One-way RM", n_cells = sum(rm_res$eta2p > 0), + rate_at_Delta_tost = round(mean(rm_res$rate_tost[rm_res$eta2p > 0]), 4)), + data.frame(Design = "Factorial between", n_cells = nrow(fac_res), + rate_at_Delta_tost = round(mean(fac_res$rate_tost), 4)), + data.frame(Design = "Mixed (between)", n_cells = nrow(mix_res), + rate_at_Delta_tost = round(mean(mix_res$rate_tost), 4)) +) |> kable(caption = "Type I error at the boundary, on TOSTER's own scale, across every design tested. Nominal alpha = 0.05.") +``` + +1. **The generalization is sound.** On its own scale the procedure holds its size in + every design tested — one-way repeated measures, factorial between-subjects, and the + between-subjects effect of a mixed design — none of which Campbell & Lakens simulated. +2. **$df_1 + df_2 + 1$ is the effective sample size of the error stratum**, not an + approximation to total N. The mixed design proves this, since there the correct + normalizer is *smaller* than total N while in the factorial case it is nearly equal. +3. **The bound is on the partial scale, and in repeated-measures designs that is not the + share of total variance.** Calibrating a bound as "less than 5% of the variance in my + data" and passing it to `equ_anova()` produces a much more conservative test than + intended, increasingly so as n grows. This is an interpretation trap, not a bug. +4. **Sphericity is the real limitation.** Corrections are silently ignored, and the + resulting size distortion is large and can run in either direction. + + +## Notes on the published supplementary code + +A few observations for anyone attempting to run `disregard_simulation_study_2.R` +directly. None of these affect the paper's conclusions. + +1. **A hard-coded path breaks the script mid-run.** Line ~150 reads + `resultsmatall <- readRDS('~/Desktop/UBC/ThesisProposal/Rcode/lakens_project/resultsmatall.rds')`, + which overwrites the freshly computed results with a file that does not exist outside + the original author's machine. The script cannot be run end-to-end as published. +2. **The true $\rho^2$ is obtained by Monte Carlo over a 32-million-row design matrix** + (`rep(basematrix$X1, 1000000)`), which is memory-hungry and unnecessary — the quantity + is available in closed form, as shown above. +3. **The design matrix is mildly unbalanced.** `X[1:N, ]` truncates a repeating 16-row + block, and no simulated $N$ is a multiple of 16. The effect is small but it does mean + the realized $\rho^2$ differs slightly from the population value for $K = 4$. +4. **True $\rho^2$ values are post-hoc binned** by a series of range-based `if`-style + reassignments before plotting, which smooths over the imbalance in (3) rather than + modelling it. +5. **`qplot()` is used for plotting**, which is deprecated in current ggplot2 and now + emits a warning. +6. **The null condition is flagged with `sigma2 == 1.0001`** as a sentinel value rather + than an explicit indicator, which is easy to misread. + +## Conclusion + +TOSTER's implementation is numerically identical to the published procedure in the +setting Campbell & Lakens evaluated, and reproducing their simulation recovers the +operating characteristics the paper reports: nominal Type I error at the boundary of the +null, conservatism inside it, and power that matches the analytic derivation under a +true null effect. + +Beyond that setting, the generalization that TOSTER adds — substituting +$df_1 + df_2 + 1$ for the total sample size in the non-centrality parameter — controls +Type I error in every design tested, including the repeated-measures and mixed designs +where that substitution changes the answer materially. The substitution is not an +approximation to $N$; it is the effective sample size of the stratum in which the effect +is tested, which is what makes the resulting bound a *partial* variance ratio. + +Two things follow for the manuscript. The first is an interpretation point that deserves +stating wherever the ANOVA bound is discussed: in repeated-measures designs a bound on +partial $\eta^2$ is not a bound on the share of total variance, and the two can differ by +a factor approaching $k/(k-1)$. The second is a genuine limitation: sphericity corrections +are not applied, and when sphericity fails the size distortion is large and can run in +either direction. That is worth fixing in the package rather than only documenting. + +## Session information + +```{r} +#| label: sessioninfo +#| code-fold: true +sessionInfo() +``` + +## References + +Campbell, H., & Lakens, D. (2021). Can we disregard the whole model? Omnibus +non-inferiority testing for $R^2$ in multi-variable linear regression and in ANOVA. +*British Journal of Mathematical and Statistical Psychology*, 74(1), e12201. + diff --git a/papers/Avocado_Update/interactcadsample.bib b/papers/Avocado_Update/interactcadsample.bib index aa8293bc..c6df39aa 100644 --- a/papers/Avocado_Update/interactcadsample.bib +++ b/papers/Avocado_Update/interactcadsample.bib @@ -194,6 +194,8 @@ @article{lakens2018equivalence doi = {10.1177/251524591877096} } +@article{scheel_hypothesis, title={Why Hypothesis Testers Should Spend Less Time Testing Hypotheses}, volume={16}, url={http://dx.doi.org/10.1177/1745691620966795}, DOI={10.1177/1745691620966795}, abstractNote={For almost half a century, Paul Meehl educated psychologists about how the mindless use of null-hypothesis significance tests made research on theories in the social sciences basically uninterpretable. In response to the replication crisis, reforms in psychology have focused on formalizing procedures for testing hypotheses. These reforms were necessary and influential. However, as an unexpected consequence, psychological scientists have begun to realize that they may not be ready to test hypotheses. Forcing researchers to prematurely test hypotheses before they have established a sound “derivation chain” between test and theory is counterproductive. Instead, various nonconfirmatory research activities should be used to obtain the inputs necessary to make hypothesis tests informative. Before testing hypotheses, researchers should spend more time forming concepts, developing valid measures, establishing the causal relationships between concepts and the functional form of those relationships, and identifying boundary conditions and auxiliary assumptions. Providing these inputs should be recognized and incentivized as a crucial goal in itself. In this article, we discuss how shifting the focus to nonconfirmatory research can tie together many loose ends of psychology’s reform movement and help us to develop strong, testable theories, as Paul Meehl urged.}, number={4}, journal={Perspectives on Psychological Science}, publisher={SAGE Publications}, author={Scheel, Anne M. and Tiokhin, Leonid and Isager, Peder M. and Lakens, Daniël}, year={2020}, month=dec, pages={744–755}, language={en} } + @article{lakens2020improving, title={Improving inferences about null effects with Bayes factors and equivalence tests}, author={Lakens, Dani{\"e}l and McLatchie, Neil and Isager, Peder M and Scheel, Anne M and Dienes, Zoltan}, @@ -220,6 +222,12 @@ @article{mazzolari2022myths url= {https://doi.org/10.1113/EP090171} } +@article{Burkner_Vuorre_2019, title={Ordinal Regression Models in Psychology: A Tutorial}, volume={2}, url={http://dx.doi.org/10.1177/2515245918823199}, DOI={10.1177/2515245918823199}, abstractNote={Ordinal variables, although extremely common in psychology, are almost exclusively analyzed with statistical models that falsely assume them to be metric. This practice can lead to distorted effect-size estimates, inflated error rates, and other problems. We argue for the application of ordinal models that make appropriate assumptions about the variables under study. In this Tutorial, we first explain the three major classes of ordinal models: the cumulative, sequential, and adjacent-category models. We then show how to fit ordinal models in a fully Bayesian framework with the R package brms, using data sets on opinions about stem-cell research and time courses of marriage. The appendices provide detailed mathematical derivations of the models and a discussion of censored ordinal models. Compared with metric models, ordinal models provide better theoretical interpretation and numerical inference from ordinal data, and we recommend their widespread adoption in psychology.}, number={1}, journal={Advances in Methods and Practices in Psychological Science}, publisher={SAGE Publications}, author={Bürkner, Paul-Christian and Vuorre, Matti}, year={2019}, month=feb, pages={77–101}, language={en} } + +@article{Liddell_Kruschke_2018, title={Analyzing ordinal data with metric models: What could possibly go wrong?}, volume={79}, url={http://dx.doi.org/10.1016/j.jesp.2018.08.009}, DOI={10.1016/j.jesp.2018.08.009}, journal={Journal of Experimental Social Psychology}, publisher={Elsevier BV}, author={Liddell, Torrin M. and Kruschke, John K.}, year={2018}, month=nov, pages={328–348}, language={en} } + +@article{Fay_Malinovsky_2018, title={Confidence intervals of the Mann‐Whitney parameter that are compatible with the Wilcoxon‐Mann‐Whitney test}, volume={37}, url={http://dx.doi.org/10.1002/sim.7890}, DOI={10.1002/sim.7890}, abstractNote={For the two‐sample problem, the Wilcoxon‐Mann‐Whitney (WMW) test is used frequently: it is simple to explain (a permutation test on the difference in mean ranks), it handles continuous or ordinal responses, it can be implemented for large or small samples, it is robust to outliers, it requires few assumptions, and it is efficient in many cases. Unfortunately, the WMW test is rarely presented with an effect estimate and confidence interval. A natural effect parameter associated with this test is the Mann‐Whitney parameter,φ = Pr[ X<Y ] + 0.5 Pr[X = Y ]. Ideally, we desire confidence intervals onφthat are compatible with the WMW test, meaning the test rejects at levelαif and only if the 100(1 − α)% confidence interval on the Mann‐Whitney parameter excludes 1/2. Existing confidence interval procedures onφare not compatible with the usual asymptotic implementation of the WMW test that uses a continuity correction nor are they compatible with exact WMW tests. We develop compatible confidence interval procedures for the asymptotic WMW tests and confidence interval procedures for some exact WMW tests that appear to be compatible. We discuss assumptions and interpretation of the resulting tests and confidence intervals. We provide thewmwTestfunction of theashtR package to calculate all of the developed confidence intervals.}, number={27}, journal={Statistics in Medicine}, publisher={Wiley}, author={Fay, Michael P. and Malinovsky, Yaakov}, year={2018}, month=july, pages={3991–4006}, language={en} } + @article{hedges_bias, title={Distribution theory for Glass's estimator of effect size and related estimators}, author={Hedges, Larry V}, @@ -243,6 +251,10 @@ @article{repSES doi = {10.1007/s40279-022-01749-1} } +@misc{Thulin_2024, title={Modern Statistics with R}, url={http://dx.doi.org/10.1201/9781003401339}, +DOI={10.1201/9781003401339}, publisher={Chapman and Hall/CRC}, +author={Thulin, Måns}, year={2024}, month=june, language={en} } + @article{median_test, title={The Wilcoxon--Mann--Whitney procedure fails as a test of medians}, author={Divine, George W and Norton, H James and Bar{\'o}n, Anna E and Juarez-Colunga, Elizabeth}, @@ -267,6 +279,16 @@ @article{ doi = {10.1177/09622802221093721} } +@article{Arboretti_Pesarin_Salmaso_2020, title={A unified approach to permutation testing for equivalence}, volume={30}, +url={http://dx.doi.org/10.1007/s10260-020-00548-0}, DOI={10.1007/s10260-020-00548-0}, +abstractNote={AbstractThe notion of testing for equivalence of two treatments is widely used in clinical trials, pharmaceutical experiments, bioequivalence and quality control. It is traditionally operated within the intersection–union principle (IU). According to this principle the null hypothesis is stated as the set of effects the differences $$delta$$ δ of which lie outside a suitable equivalence interval and the alternative as the set of $$delta$$ δ that lie inside it. In the literature related solutions are essentially based on likelihood techniques, which in turn are rather difficult to deal with. A recently published paper goes beyond most of likelihood limitations by using the IU approach within the permutation theory. One more paper, based on Roy’s union–intersection principle (UI) within the permutation theory, goes beyond some limitations of traditional two-sided tests. Such UI approach, effectively a mirror image of IU, assumes a null hypothesis where $$delta$$ δ lies inside the equivalence interval and an alternative where it lies outside. Since testing for equivalence can rationally be analyzed by both principles but, as the two differ in terms of the mirror-like roles assigned to the hypotheses under study, they are not strictly comparable. The present paper’s main goal is to look into these problems and provide a sort of comparative analysis of both by highlighting the related requirements, properties, limitations, difficulties, and pitfalls so as to get practitioners properly acquainted with their correct use in practical contexts.}, number={3}, journal={Statistical Methods \& Applications}, publisher={Springer Science and Business Media LLC}, +author={Arboretti, Rosa and Pesarin, Fortunato and Salmaso, Luigi}, +year={2020}, month=nov, pages={1033–1052}, language={en} } + +@article{Jacobson_Truax_1991, title={Clinical significance: A statistical approach to defining meaningful change in psychotherapy research.}, volume={59}, url={http://dx.doi.org/10.1037/0022-006X.59.1.12}, DOI={10.1037/0022-006x.59.1.12}, number={1}, journal={Journal of Consulting and Clinical Psychology}, publisher={American Psychological Association (APA)}, author={Jacobson, Neil S. and Truax, Paula}, year={1991}, pages={12–19}, language={en} } + +@article{delta2, title={DELTA2 guidance on choosing the target difference and undertaking and reporting the sample size calculation for a randomised controlled trial}, url={http://dx.doi.org/10.1136/bmj.k3750}, DOI={10.1136/bmj.k3750}, journal={BMJ}, publisher={BMJ}, author={Cook, Jonathan A and Julious, Steven A and Sones, William and Hampson, Lisa V and Hewitt, Catherine and Berlin, Jesse A and Ashby, Deborah and Emsley, Richard and Fergusson, Dean A and Walters, Stephen J and Wilson, Edward C F and MacLennan, Graeme and Stallard, Nigel and Rothwell, Joanne C and Bland, Martin and Brown, Louise and Ramsay, Craig R and Cook, Andrew and Armstrong, David and Altman, Doug and Vale, Luke D}, year={2018}, month=nov, pages={k3750}, language={en} } + @article{wmwodds, title={Exploiting the link between the Wilcoxon-Mann-Whitney test and a simple odds statistic}, author={O’Brien, Ralph G and Castelloe, John}, @@ -277,6 +299,13 @@ @article{wmwodds organization={Citeseer} } +@article{Bauer_1972, title={Constructing Confidence Sets Using Rank Statistics}, volume={67}, +url={http://dx.doi.org/10.1080/01621459.1972.10481279}, +DOI={10.1080/01621459.1972.10481279}, number={339}, +journal={Journal of the American Statistical Association}, +publisher={Informa UK Limited}, author={Bauer, David F.}, year={1972}, +month=sept, pages={687-690}, language={en} } + @article{logtest, title={Statistics notes: the use of transformation when comparing two means}, author={Bland, J Martin and Altman, Douglas G}, @@ -366,6 +395,9 @@ @Manual{afex url = {https://CRAN.R-project.org/package=afex}, } + +@article{Lakens_Caldwell_2021, title={Simulation-Based Power Analysis for Factorial Analysis of Variance Designs}, volume={4}, url={http://dx.doi.org/10.1177/2515245920951503}, DOI={10.1177/2515245920951503}, abstractNote={Researchers often rely on analysis of variance (ANOVA) when they report results of experiments. To ensure that a study is adequately powered to yield informative results with an ANOVA, researchers can perform an a priori power analysis. However, power analysis for factorial ANOVA designs is often a challenge. Current software solutions do not allow power analyses for complex designs with several within-participants factors. Moreover, power analyses often need [Formula: see text] or Cohen’s f as input, but these effect sizes are not intuitive and do not generalize to different experimental designs. We have created the R package Superpower and online Shiny apps to enable researchers without extensive programming experience to perform simulation-based power analysis for ANOVA designs of up to three within- or between-participants factors. Predicted effects are entered by specifying means, standard deviations, and, for within-participants factors, the correlations. The simulation provides the statistical power for all ANOVA main effects, interactions, and individual comparisons. The software can plot power across a range of sample sizes, can control for multiple comparisons, and can compute power when the homogeneity or sphericity assumption is violated. This Tutorial demonstrates how to perform a priori power analysis to design informative studies for main effects, interactions, and individual comparisons and highlights important factors that determine the statistical power for factorial ANOVA designs.}, number={1}, journal={Advances in Methods and Practices in Psychological Science}, publisher={SAGE Publications}, author={Lakens, Daniël and Caldwell, Aaron R.}, year={2021}, month=jan, language={en} } + @article{sesoi, title={Using anchor-based methods to determine the smallest effect size of interest}, author={Anvari, Farid and Lakens, Dani{\"e}l}, @@ -376,6 +408,10 @@ @article{sesoi publisher={Elsevier} } +@article{Viechtbauer_2007, title={Approximate Confidence Intervals for Standardized Effect Sizes in the Two-Independent and Two-Dependent Samples Design}, volume={32}, url={http://dx.doi.org/10.3102/1076998606298034}, DOI={10.3102/1076998606298034}, abstractNote={Standardized effect sizes and confidence intervals thereof are extremely useful devices for comparing results across different studies using scales with incommensurable units. However, exact confidence intervals for standardized effect sizes can usually be obtained only via iterative estimation procedures. The present article summarizes several closed-form approximations to the exact confidence interval bounds in the two-independent and two-dependent samples design. Monte Carlo simulations were conducted to determine the accuracy of the various approximations under a wide variety of conditions. All methods except one provided accurate results for moderately large sample sizes and converged to the exact confidence interval bounds as sample size increased.}, number={1}, journal={Journal of Educational and Behavioral Statistics}, publisher={American Educational Research Association (AERA)}, author={Viechtbauer, Wolfgang}, year={2007}, month=mar, pages={39–60}, language={en} } + +@article{Wilcox_1994, title={The Percentage Bend Correlation Coefficient}, volume={59}, url={http://dx.doi.org/10.1007/BF02294395}, DOI={10.1007/bf02294395}, abstractNote={A well-known result is that the usual correlation coefficient, ρ, is highly nonrobust: very slight changes in only one of the marginal distributions can alter ρ by a substantial amount. There are a variety of methods for correcting this problem. This paper identifies one particular method which is useful in psychometrics and provides a simple test for independence. It is not recommended that the new test replace the usual test of H0: ρ = 0, but the new test has important advantages over the usual test in terms of both Type I errors and power.}, number={4}, journal={Psychometrika}, publisher={Cambridge University Press (CUP)}, author={Wilcox, Rand R.}, year={1994}, month=dec, pages={601–616}, language={en} } +@article{Wilcox_1993, title={Some results on a Winsorized correlation coefficient}, volume={46}, url={http://dx.doi.org/10.1111/j.2044-8317.1993.tb01020.x}, DOI={10.1111/j.2044-8317.1993.tb01020.x}, abstractNote={Recent investigations indicate that psychometric measures often have distributions with very heavy tails, and that outliers are quite common. It has long been known that in terms of both power and Type I errors, even slight departures from normality can have serious consequences, and it is fairly evident that there are problems when using conventional measures of effect size, as is briefly illustrated in this paper. Similar problems arise when dealing with the usual correlation coefficient. Robust correlation coefficients have already been proposed that reflect the linear relationship between two random variables, but many have the unfortunate property of not always being equal to 0 under independence. One exception is the Winsorized correlation. The primary goal in this paper is to suggest a simple method for testing the hypothesis that the Winsorized correlation is equal to zero. A minor goal is to describe a formal definition of the Winsorized correlation coefficient in terms of Winsorized expected values.}, number={2}, journal={British Journal of Mathematical and Statistical Psychology}, publisher={Wiley}, author={Wilcox, Rand R.}, year={1993}, month=nov, pages={339–349}, language={en} } @article{rafi2020, title={Semantic and cognitive tools to aid statistical science: replace confidence and significance by compatibility and surprise}, @@ -390,3 +426,217 @@ @article{rafi2020 publisher={Springer} } +@article{brunner2000, + title={The nonparametric {Behrens-Fisher} problem: Asymptotic theory and a small-sample approximation}, + author={Brunner, Edgar and Munzel, Ullrich}, + journal={Biometrical Journal}, + volume={42}, + number={1}, + pages={17--25}, + year={2000}, + publisher={Wiley}, + doi={10.1002/(SICI)1521-4036(200001)42:1<17::AID-BIMJ17>3.0.CO;2-U}, + url={https://doi.org/10.1002/(SICI)1521-4036(200001)42:1<17::AID-BIMJ17>3.0.CO;2-U} +} + +@article{neubert2007, + title={A studentized permutation test for the non-parametric {Behrens-Fisher} problem}, + author={Neubert, Karin and Brunner, Edgar}, + journal={Computational Statistics \& Data Analysis}, + volume={51}, + number={10}, + pages={5192--5204}, + year={2007}, + publisher={Elsevier}, + doi={10.1016/j.csda.2006.05.024}, + url={https://doi.org/10.1016/j.csda.2006.05.024} +} + +@article{karch2021, + title={Psychologists should use {Brunner-Munzel's} instead of {Mann-Whitney's} {U} test as the default nonparametric procedure}, + author={Karch, Julian D}, + journal={Advances in Methods and Practices in Psychological Science}, + volume={4}, + number={2}, + pages={2515245921999602}, + year={2021}, + publisher={SAGE Publications}, + doi={10.1177/2515245921999602}, + url={https://doi.org/10.1177/2515245921999602} +} + +@article{munzel2003, + title={A nonparametric test for proving noninferiority in clinical trials with ordered categorical data}, + author={Munzel, Ullrich and Hauschke, Dieter}, + journal={Pharmaceutical Statistics}, + volume={2}, + number={1}, + pages={31--37}, + year={2003}, + publisher={Wiley}, + doi={10.1002/pst.59}, + url={https://doi.org/10.1002/pst.59} +} + +@article{phipson2010, + title={Permutation p-values should never be zero: Calculating exact p-values when permutations are randomly drawn}, + author={Phipson, Belinda and Smyth, Gordon K}, + journal={Statistical Applications in Genetics and Molecular Biology}, + volume={9}, + number={1}, + year={2010}, + publisher={De Gruyter}, + doi={10.2202/1544-6115.1585}, + url={https://doi.org/10.2202/1544-6115.1585} +} + +@article{chung2013, + title={Exact and asymptotically robust permutation tests}, + author={Chung, EunYi and Romano, Joseph P}, + journal={The Annals of Statistics}, + volume={41}, + number={2}, + pages={484--507}, + year={2013}, + publisher={Institute of Mathematical Statistics}, + doi={10.1214/13-AOS1090}, + url={https://doi.org/10.1214/13-AOS1090} +} + +@article{janssen1997, + title={Studentized permutation tests for non-i.i.d.\ hypotheses and the generalized {Behrens-Fisher} problem}, + author={Janssen, Arnold}, + journal={Statistics \& Probability Letters}, + volume={36}, + number={1}, + pages={9--21}, + year={1997}, + publisher={Elsevier}, + doi={10.1016/S0167-7152(97)00043-6}, + url={https://doi.org/10.1016/S0167-7152(97)00043-6} +} + +@article{cole2000, + title={Sympercents: Symmetric percentage differences on the 100 log\_e scale simplify the presentation of log transformed data}, + author={Cole, TJ}, + journal={Statistics in Medicine}, + volume={19}, + number={22}, + pages={3109--3125}, + year={2000}, + publisher={Wiley}, + doi={10.1002/1097-0258(20001130)19:22<3109::AID-SIM558>3.0.CO;2-F}, + url={https://doi.org/10.1002/1097-0258(20001130)19:22<3109::AID-SIM558>3.0.CO;2-F} +} + +@article{baguley2009, + title={Standardized or simple effect size: What should be reported?}, + author={Baguley, Thom}, + journal={British Journal of Psychology}, + volume={100}, + number={3}, + pages={603--617}, + year={2009}, + publisher={Wiley}, + doi={10.1348/000712608X377117} +} + +@article{tukey1969, + title={Analyzing data: Sanctification or detective work?}, + author={Tukey, John W.}, + journal={American Psychologist}, + volume={24}, + number={2}, + pages={83--91}, + year={1969}, + publisher={American Psychological Association}, + doi={10.1037/h0027108} +} + +@article{greenland1991, + title={Standardized regression coefficients: A further critique and review of some alternatives}, + author={Greenland, Sander and Maclure, Malcolm and Schlesselman, James J. and Poole, Charles and Morgenstern, Hal}, + journal={Epidemiology}, + volume={2}, + number={5}, + pages={387--392}, + year={1991}, + publisher={Lippincott Williams \& Wilkins} +} + + +@article{funder2019, + author = {Funder, David C. and Ozer, Daniel J.}, + title = {Evaluating Effect Size in Psychological Research: Sense and Nonsense}, + journal = {Advances in Methods and Practices in Psychological Science}, + volume = {2}, + number = {2}, + pages = {156--168}, + year = {2019}, + doi = {10.1177/2515245919847202} +} + +@article{panzarella2021, + author = {Panzarella, Emily and Beribisky, Nataly and Cribbie, Robert A.}, + title = {Denouncing the Use of Field-Specific Effect Size Distributions to Inform Magnitude}, + journal = {PeerJ}, + volume = {9}, + pages = {e11383}, + year = {2021}, + doi = {10.7717/peerj.11383} +} + + +@article{Tomek_Caldwell_Eisner_2026, +title={Beyond “non-significant” results: Why and how to test for practical equivalence}, volume={123}, +url={http://dx.doi.org/10.1073/pnas.2611548123}, +DOI={10.1073/pnas.2611548123}, +abstractNote={ Reporting comparisons with P ≥ 0.05 as showing “no effect” or “no difference” remains one of the most widespread and problematic misinterpretations in the scientific literature. A statistically nonsignificant result shows only that the data do not provide strong evidence for a difference. This distinction matters because such findings can arise for two very different reasons: Either there is no meaningful difference, or a meaningful difference is present but cannot be detected reliably because of limited sample size or high variability. We highlight equivalence testing as a practical framework for distinguishing between these possibilities. Using the two one-sided tests (TOST) approach, investigators can formally test whether effects large enough to be scientifically, clinically, or practically meaningful can be ruled out. We explain the logic of TOST, show how it distinguishes practical equivalence from inconclusive evidence, and illustrate its use in paired and unpaired comparisons. To support broader adoption, we also introduce a freely available online calculator that enables researchers to perform common equivalence tests without coding. }, number={33}, journal={Proceedings of the National Academy of Sciences}, publisher={National Academy of Sciences}, author={Tomek, Jakub and Caldwell, Aaron and Eisner, David A.}, year={2026}, +month=aug, language={en} } + +@article{Lundberg_Johnson_Stewart_2021, + title={What Is Your Estimand? Defining the Target Quantity Connects Statistical Evidence to Theory}, + author={Lundberg, Ian and Johnson, Rebecca and Stewart, Brandon M.}, + journal={American Sociological Review}, + volume={86}, + number={3}, + pages={532--565}, + year={2021}, + month=jun, + publisher={SAGE Publications}, + DOI={10.1177/00031224211004187}, + url={http://dx.doi.org/10.1177/00031224211004187} +} + +@Manual{emmeans, + title = {emmeans: Estimated Marginal Means, aka Least-Squares Means}, + author = {Russell V. Lenth and Julia Piaskowski}, + year = {2026}, + note = {R package version 2.0.2}, + url = {https://CRAN.R-project.org/package=emmeans}, + doi = {10.32614/CRAN.package.emmeans}, + } + + @Article{marginaleffects, + title = {How to Interpret Statistical Models Using marginaleffects for R and Python}, + author = {Vincent Arel-Bundock and Noah Greifer and Andrew Heiss}, + journal = {Journal of Statistical Software}, + year = {2024}, + volume = {111}, + number = {9}, + pages = {1--32}, + doi = {10.18637/jss.v111.i09}, + } + + + @Article{bayestestR, + title = {bayestestR: Describing Effects and their Uncertainty, Existence and Significance within the Bayesian Framework.}, + author = {Dominique Makowski and Mattan S. Ben-Shachar and Daniel Lüdecke}, + journal = {Journal of Open Source Software}, + doi = {10.21105/joss.01541}, + year = {2019}, + number = {40}, + volume = {4}, + pages = {1541}, + url = {https://joss.theoj.org/papers/10.21105/joss.01541}, + } diff --git a/papers/Avocado_Update/toster_assumption_checks_supplement.pdf b/papers/Avocado_Update/toster_assumption_checks_supplement.pdf new file mode 100644 index 00000000..c668f2e6 Binary files /dev/null and b/papers/Avocado_Update/toster_assumption_checks_supplement.pdf differ diff --git a/papers/Avocado_Update/toster_assumption_checks_supplement.qmd b/papers/Avocado_Update/toster_assumption_checks_supplement.qmd new file mode 100644 index 00000000..84faad96 --- /dev/null +++ b/papers/Avocado_Update/toster_assumption_checks_supplement.qmd @@ -0,0 +1,795 @@ +--- +title: "Diagnostic Checks for Equivalence Tests" +subtitle: "Supplement to the 'Updated TOSTER' Manuscript" +author: "Aaron R. Caldwell" +format: + pdf: + toc: true + toc-depth: 3 + number-sections: true + colorlinks: true + geometry: + - margin=1in +execute: + warning: false + message: false + fig-width: 6 + fig-height: 4 +--- + +# Introduction + +Equivalence testing and its companion procedures are often described as robust or assumption-light, but the tests implemented in TOSTER rely on conditions that can fail in practice. This supplement provides diagnostic workflows for checking those assumptions, covering parametric t-tests, bootstrap and permutation resamples, parametric and bootstrap correlations, rank-based tests (Wilcoxon-Mann-Whitney and Brunner-Munzel), and a brief pointer to ANOVA-style designs. + +These diagnostics are intentionally not built into TOSTER itself. Keeping the package dependency-light is a deliberate design choice, and several of the most useful diagnostics (notably the jackknife-after-bootstrap, ECDF overlays, and Brant's test of proportional odds) require specialized packages or the `boot` package's internal data structures rather than TOSTER's `htest` output. Readers who want these checks should run them separately, as demonstrated below. For ANOVA-type designs, `performance::check_model()` provides a one-call suite of diagnostic plots that we recommend rather than re-implementing here. + +The examples use several datasets: `sleep` for the paired and one-sample cases, `ToothGrowth` for the two-sample and rank-based cases, and `mtcars` (columns `mpg` and `wt`) for the correlation section. For each, we show diagnostics on the observed data and, where instructive, compare with a deliberately problematic simulated case so readers can see what failing diagnostics look like. + +```{r setup} +# setup -------- +library(TOSTER) +library(boot) +library(lawstat) +library(ggplot2) +library(dplyr) +library(MASS) +library(brant) +library(performance) +library(halfmoon) + +set.seed(42) +``` + +# Parametric t-Test Diagnostics + +The parametric t-test assumes independent observations, approximately normal residuals, and (for Student's form) equal variances across groups. The normality requirement is most critical at small `n`, where the central limit theorem offers little protection; by `n` in the mid-twenties per group the t distribution is already a reasonable approximation for moderately non-normal data. Welch's form relaxes the equal-variance assumption (for a two sample test) and is the default in most modern workflows. The diagnostics below apply regardless of whether the test is used for standard null/nil-hypothesis significance testing or for TOST equivalence testing; equivalence bounds do not alter the distributional assumptions of the test statistic. + +## Two-Sample Parametric t-Test + +We use the same `ToothGrowth` subset (dose of 1 mg, comparing `VC` with `OJ`) that later sections reuse. + +```{r} +# two sample data -------- +tg <- ToothGrowth |> filter(dose == 1) +tg_vc <- tg$len[tg$supp == "VC"] +tg_oj <- tg$len[tg$supp == "OJ"] +``` + +### Residuals from the equivalent linear model + +The two-sample t-test is equivalent to a linear model with a single dichotomous predictor, so residuals from that fit are the right target for the normality check. + +```{r} +# two sample residuals -------- +tg_fit <- lm(len ~ supp, data = tg) + +ggplot(data.frame(resid = resid(tg_fit)), aes(sample = resid)) + + stat_qq() + stat_qq_line() + + labs(title = "QQ plot of residuals (two-sample t-test)", + x = "Theoretical quantiles", y = "Residuals") + + theme_minimal() +``` + +### Shapiro-Wilk on residuals + +```{r} +# shapiro residuals -------- +shapiro.test(resid(tg_fit)) +``` + +Shapiro-Wilk is a useful supplement to the QQ plot but not a substitute. In very small samples it has low power and rarely rejects even for clearly non-normal data; in large samples it becomes over-sensitive and flags minor, inconsequential deviations. The visual check should drive the decision, with the formal test as a secondary input. + +### Variance homogeneity + +```{r} +# levene two sample -------- +lawstat::levene.test(tg$len, tg$supp, location = "median") +``` + +The median-centered Brown-Forsythe variant is preferred over the classical mean-centered Levene test because it is itself robust to non-normality. A small p-value here argues against Student's t-test and for Welch's form; it does not invalidate the test in any deeper sense. + +### Cook's distance + +```{r, fig.height=4} +# cooks d two sample -------- +cd_tg <- cooks.distance(tg_fit) +plot(cd_tg, type = "h", + main = "Cook's distance (two-sample)", + ylab = "Cook's distance", xlab = "Observation index") +abline(h = 4 / length(cd_tg), col = "red", lty = 2) +``` + +Cook's distance measures how much the fitted values change when an observation is removed, combining leverage and residual magnitude into a single number. In the balanced two-sample design used here, leverage is constant across observations, so Cook's D reduces to a monotone transformation of the standardized residual and adds little beyond a residual plot. It becomes more informative in unbalanced designs and in regression settings where leverage varies meaningfully (see the correlation section). + +The `4/n` cutoff plotted above is a common heuristic, not a formal threshold, and should be read as a flag for closer inspection rather than a test. + +A critical caveat: for `n` below roughly 10 per group, Cook's D cutoffs are essentially meaningless. With so few observations every point has substantial influence on the estimate and there is no stable reference distribution to judge unusualness against. At these sample sizes the diagnostic is best understood as a sanity check for gross data-entry errors rather than a formal outlier test. + +## Paired-Sample Parametric t-Test + +The paired t-test is equivalent to a one-sample t-test on the difference scores, so the relevant normality assumption applies to the differences themselves. With `lm(d ~ 1)`, residuals equal deviations from the mean, which is why the QQ plot is shown directly on `d_paired`. + +```{r} +# paired data -------- +d_paired <- sleep$extra[sleep$group == 2] - sleep$extra[sleep$group == 1] +``` + +```{r, fig.height=4} +# paired parametric diagnostics -------- +ggplot(data.frame(d = d_paired), aes(sample = d)) + + stat_qq() + stat_qq_line() + + labs(title = "QQ plot of paired differences", + x = "Theoretical quantiles", y = "Differences") + + theme_minimal() + +shapiro.test(d_paired) + +d_fit <- lm(d_paired ~ 1) +cd_d <- cooks.distance(d_fit) +plot(cd_d, type = "h", + main = "Cook's distance (paired differences)", + ylab = "Cook's distance", xlab = "Observation index") +abline(h = 4 / length(cd_d), col = "red", lty = 2) +``` + +The same small-`n` caveat from the two-sample case applies with extra force here: paired designs often have sample sizes well below 20, in which case the Cook's D plot is best read as a flag for extreme values rather than a formal influence test. + +## One-Sample Parametric t-Test + +Applied to `x_one`, the diagnostics mirror the paired case. + +```{r} +# one sample data -------- +x_one <- sleep$extra[sleep$group == 1] +``` + +```{r, fig.height=4} +# one sample parametric diagnostics -------- +ggplot(data.frame(x = x_one), aes(sample = x)) + + stat_qq() + stat_qq_line() + + labs(title = "QQ plot of one-sample observations", + x = "Theoretical quantiles", y = "Observations") + + theme_minimal() + +shapiro.test(x_one) + +x_fit <- lm(x_one ~ 1) +cd_x <- cooks.distance(x_fit) +plot(cd_x, type = "h", + main = "Cook's distance (one-sample)", + ylab = "Cook's distance", xlab = "Observation index") +abline(h = 4 / length(cd_x), col = "red", lty = 2) +``` + +## Note on Log Transformation + +When residual diagnostics reveal right-skewness, as is common for reaction times, concentrations, and count-like outcomes, a log transformation often resolves skewness, stabilizes variance, and reduces the leverage of the most extreme observations simultaneously. Where that combination holds, analyzing on the log scale is usually preferable to switching to a rank-based or resampling-based test, because it preserves a parametric model with familiar properties. + +The interpretive cost is that the mean of the logged data is the log of the geometric mean, not of the arithmetic mean. Back-transforming the estimate yields a geometric mean (and, for two-group comparisons, a ratio of geometric means), which is arguably (and others will disagre with me here) the appropriate summary on the original scale when the log has stabilized the distribution. For equivalence testing, bounds specified on the log scale correspond to ratio bounds on the original scale. The classical bioequivalence bounds of 80 to 125 percent correspond to $\pm \log(1.25) \approx \pm 0.223$ on the log scale; users should specify `eqb` on the log scale and interpret results as ratios of geometric means. + +Other transformations (square-root, Box-Cox) share similar motivations, but the clean geometric-mean interpretation is specific to the log. + +```{r} +# log transform example -------- +set.seed(99) +x_lognormal <- rlnorm(30, meanlog = 1, sdlog = 0.5) +y_lognormal <- rlnorm(30, meanlog = 1.1, sdlog = 0.5) + +# On log scale: bounds interpreted as log ratios +# log(1.25) ~ 0.223 corresponds to the 80-125% bioequivalence bounds +log_bound <- log(1.25) + +TOSTER::t_TOST(x = log(x_lognormal), + y = log(y_lognormal), + eqb = log_bound, + hypothesis = "EQU") +``` + +# Bootstrap t-Test Diagnostics + +The bootstrap t-test is asymptotically valid under mild conditions — primarily that the empirical distribution is a reasonable stand-in for the population distribution and that observations are independent within groups. These conditions are difficult to verify directly, but several diagnostics help identify cases where the bootstrap approximation is unreliable: influential observations that dominate resampling, extreme skewness in the bootstrap distribution, and small-sample instability. + +## Two-Sample Bootstrap + +We reuse the `ToothGrowth` subset (`tg`) introduced in the parametric section, comparing supplement types (`VC` vs `OJ`) at the 1 mg dose. + +### Check 1: Group-wise distributional inspection + +The studentized two-sample bootstrap tolerates unequal variances but still assumes shapes are comparable beyond location and scale. Dramatic shape differences (e.g., one group skewed, the other symmetric) are a warning sign. + +```{r} +# group distributions -------- +ggplot(tg, aes(x = len, fill = supp)) + + geom_density(alpha = 0.5) + + labs(title = "Distribution of tooth length by supplement type", + x = "Length", y = "Density") + + theme_minimal() + +# Sample size, mean, sd, skewness by group +tg |> + group_by(supp) |> + summarise(n = n(), + mean = mean(len), + sd = sd(len), + skewness = mean((len - mean(len))^3) / sd(len)^3) +``` + +### Check 2: Outlier identification + +Outliers are particularly problematic for the bootstrap because resampling with replacement means an extreme observation can be drawn multiple times within a single bootstrap sample, distorting the replicate distribution. + +```{r} +# outlier check -------- +boxplot(len ~ supp, data = tg, + main = "Boxplots by group (outliers flagged)", + ylab = "Length") +``` + +If outliers are present, either investigate them substantively or consider the trimmed-means option (`tr` argument in `boot_t_test`), which reduces their influence while preserving the mean-based interpretation. + +Cook's distance from the equivalent linear model (covered in the parametric section above) provides a complementary leverage-based assessment, while the jackknife-after-bootstrap described next is specifically diagnostic of bootstrap-distribution sensitivity. The two checks answer related but distinct questions: Cook's D asks how much an observation moves the point estimate under a parametric fit, whereas the jackknife-after-bootstrap asks how much removing an observation shifts the resampled sampling distribution itself. + +### Check 3: Bootstrap distribution and jackknife-after-bootstrap + +The jackknife-after-bootstrap assesses how sensitive the bootstrap distribution is to individual observations. An observation whose removal dramatically shifts the bootstrap distribution is a leverage point that undermines bootstrap inference. This diagnostic requires running the bootstrap through the `boot` package directly. + +```{r, fig.height=5} +# jackknife after bootstrap -------- +# Define the statistic: Welch t-statistic for mean difference +welch_t <- function(data, indices) { + d <- data[indices, ] + x <- d$len[d$supp == "VC"] + y <- d$len[d$supp == "OJ"] + t_num <- mean(x) - mean(y) + t_den <- sqrt(var(x)/length(x) + var(y)/length(y)) + t_num / t_den +} + +# Stratified bootstrap preserves group sizes +boot_out <- boot(data = tg, + statistic = welch_t, + R = 2000, + strata = as.factor(tg$supp)) + +# Bootstrap distribution +plot(boot_out) + +# Jackknife-after-bootstrap +jack.after.boot(boot_out, + main = "Jackknife-after-bootstrap") +``` + +In the jackknife-after-bootstrap plot, each vertical strip shows how the bootstrap distribution shifts when a particular observation is removed. Strips that visibly differ from the others flag influential points. Mild fluctuations across strips are expected; dramatic shifts are cause for concern. + +### Check 4: Replication stability + +Run the bootstrap twice with different seeds and a reasonable `R`. If intervals or p-values differ meaningfully, `R` is too small. + +```{r} +# replication stability -------- +set.seed(1) +r1 <- boot_t_test(formula = len ~ supp, data = tg, R = 2000) +set.seed(2) +r2 <- boot_t_test(formula = len ~ supp, data = tg, R = 2000) + +data.frame(run = c("seed 1", "seed 2"), + p_value = c(r1$p.value, r2$p.value), + ci_low = c(r1$conf.int[1], r2$conf.int[1]), + ci_high = c(r1$conf.int[2], r2$conf.int[2])) +``` + +For inference-grade results with tail-sensitive quantities (e.g., small p-values, narrow equivalence bounds), `R` in the range of 5,000–10,000 is often safer than the 999 used in quick demonstrations. + +## Paired-Sample Bootstrap + +For paired data, the bootstrap resamples the difference scores (`d_paired`, defined in the parametric section). The same checks apply, but on the differences rather than on the raw groups. + +### Distribution and outliers + +```{r} +# paired diagnostics -------- +par(mfrow = c(1, 2)) +hist(d_paired, breaks = 8, main = "Difference scores", + xlab = "Group 2 - Group 1") +abline(v = mean(d_paired), col = "red", lwd = 2) +boxplot(d_paired, main = "Boxplot of differences") +par(mfrow = c(1, 1)) +``` + +### Jackknife-after-bootstrap on differences + +```{r, fig.height=5} +# paired jackknife -------- +paired_t <- function(data, indices) { + d <- data[indices] + mean(d) / (sd(d) / sqrt(length(d))) +} + +boot_paired <- boot(data = d_paired, + statistic = paired_t, + R = 2000) + +plot(boot_paired) +jack.after.boot(boot_paired, + main = "Jackknife-after-bootstrap (paired differences)") +``` + +## One-Sample Bootstrap + +The one-sample case uses the same machinery as the paired case, applied to the raw observations (`x_one`, defined in the parametric section) rather than differences. + +### Distribution, outliers, and jackknife + +```{r, fig.height=5} +# one sample diagnostics -------- +par(mfrow = c(1, 2)) +hist(x_one, breaks = 6, main = "One-sample observations", xlab = "extra") +abline(v = mean(x_one), col = "red", lwd = 2) +boxplot(x_one, main = "Boxplot") +par(mfrow = c(1, 1)) + +one_t <- function(data, indices) { + d <- data[indices] + mean(d) / (sd(d) / sqrt(length(d))) +} + +boot_one <- boot(data = x_one, + statistic = one_t, + R = 2000) + +plot(boot_one) +jack.after.boot(boot_one, main = "Jackknife-after-bootstrap (one-sample)") +``` + +With `n = 10`, leave-one-out influence is expected to be visible — this is the nature of small-sample bootstrap and one of the reasons permutation-based inference is often preferred in this regime. + +# Permutation t-Test Diagnostics + +The permutation t-test has different assumptions depending on design. For two independent samples, the studentized permutation test requires exchangeability under the null and provides asymptotic validity under unequal variances. For paired and one-sample designs, the sign-flip permutation requires **symmetry** of the differences (or observations, in the one-sample case) around the hypothesized value. Symmetry is the key diagnostic target for paired and one-sample permutation tests and is often overlooked. + +## Two-Sample Permutation + +Using the same `ToothGrowth` subset: + +### Check 1: Shape comparability across groups + +```{r} +# group shapes -------- +ggplot(tg, aes(sample = len, color = supp)) + + stat_qq() + stat_qq_line() + + facet_wrap(~ supp) + + labs(title = "QQ plots by group") + + theme_minimal() +``` + +Strong departures in shape (e.g., one group skewed, the other symmetric, or markedly different tail behavior) are a concern because the studentized permutation test handles scale differences but not dramatic shape differences. + + +## Paired-Sample Permutation + +This is the case where the symmetry assumption bites hardest. The sign-flip permutation test for paired data is exact under the null **only** if the difference distribution is symmetric around zero (or around the hypothesized mean difference). Asymmetry makes the test approximate rather than exact, though studentization provides asymptotic protection. + +Paired designs frequently produce asymmetric difference distributions — floor or ceiling effects, multiplicative treatment effects, or a subset of strong responders can all induce skew. Checking symmetry is therefore essential. + +### Check 1: Histogram with reference line + +```{r} +# histogram symmetry -------- +ggplot(data.frame(d = d_paired), aes(x = d)) + + geom_histogram(bins = 8, fill = "grey70", color = "white") + + geom_vline(xintercept = mean(d_paired), color = "red", linewidth = 1) + + geom_vline(xintercept = median(d_paired), color = "blue", + linewidth = 1, linetype = "dashed") + + labs(title = "Differences with mean (red) and median (blue)", + x = "Difference", y = "Count") + + theme_minimal() +``` + +A visible gap between the mean and median, or a tail that is clearly longer on one side, flags asymmetry. + +### Check 2: Symmetry plot + +A symmetry plot pairs order statistics equidistant from the median: for each pair, plot the upper deviation against the lower deviation. Under symmetry, points fall along the 45-degree line. + +```{r} +# symmetry plot -------- +symmetry_plot <- function(x) { + m <- median(x) + sorted <- sort(x) + n <- length(sorted) + upper <- sorted[sorted > m] - m + lower <- m - sorted[sorted < m] + k <- min(length(upper), length(lower)) + upper <- sort(upper)[1:k] + lower <- sort(lower)[1:k] + data.frame(lower = lower, upper = upper) +} + +sp <- symmetry_plot(d_paired) +ggplot(sp, aes(x = lower, y = upper)) + + geom_point(size = 2) + + geom_abline(intercept = 0, slope = 1, linetype = "dashed") + + coord_equal() + + labs(title = "Symmetry plot of paired differences", + x = "Distance below median", + y = "Distance above median") + + theme_minimal() +``` + +Points clustered near the 45-degree line support symmetry; systematic departure (all points above or below the line, or strong curvature) indicates asymmetry. + +### Check 3: QQ plot against normal + +Normality is stronger than symmetry, but a normal QQ plot is a familiar tool and distinguishes symmetry failure (systematic curvature) from heavy tails (fanning at the ends with points still roughly straight in the middle). + +```{r} +# qq normal -------- +ggplot(data.frame(d = d_paired), aes(sample = d)) + + stat_qq() + stat_qq_line() + + labs(title = "Normal QQ plot of differences") + + theme_minimal() +``` + +### Check 4: Formal symmetry test via `lawstat` + +```{r} +# formal symmetry test -------- +lawstat::symmetry.test(d_paired, option = "MGG") +lawstat::symmetry.test(d_paired, option = "CM") +``` + +The Miao–Gel–Gastwirth ("MGG") and Cabilio–Masaro ("CM") tests provide formal assessment. With small samples these tests have limited power, so a non-significant result should not be taken as strong evidence of symmetry — the visual checks remain more informative. Conversely, a significant result with small `n` is worth taking very seriously. + +### Check 5: Skewness with bootstrap confidence interval + +```{r} +# skewness CI -------- +skew_stat <- function(x, i) { + xi <- x[i] + mean((xi - mean(xi))^3) / sd(xi)^3 +} +skew_boot <- boot(d_paired, skew_stat, R = 2000) +boot.ci(skew_boot, type = "perc") +``` + +A confidence interval for skewness that comfortably covers zero supports symmetry; an interval clearly on one side of zero indicates asymmetry. + +### What to do if symmetry fails + +If symmetry is implausible, options in rough order of preference are: (1) use the bootstrap instead, which does not require symmetry; (2) report the studentized permutation test with an explicit note that it is approximate rather than exact under the observed asymmetry; (3) consider whether the mean is the right estimand, and if a transformation (e.g., log) produces a symmetric difference distribution on a scientifically meaningful scale. + +## One-Sample Permutation + +The one-sample permutation test assumes the observations are symmetric around the hypothesized mean (often zero). Every diagnostic from the paired case applies, substituting the raw observations for the difference scores. + +```{r, fig.height=4} +# one sample symmetry -------- +# Histogram +ggplot(data.frame(x = x_one), aes(x = x)) + + geom_histogram(bins = 6, fill = "grey70", color = "white") + + geom_vline(xintercept = mean(x_one), color = "red", linewidth = 1) + + geom_vline(xintercept = median(x_one), color = "blue", + linewidth = 1, linetype = "dashed") + + labs(title = "One-sample observations", + x = "Value", y = "Count") + + theme_minimal() + +# Symmetry plot +sp_one <- symmetry_plot(x_one) +ggplot(sp_one, aes(x = lower, y = upper)) + + geom_point(size = 2) + + geom_abline(intercept = 0, slope = 1, linetype = "dashed") + + coord_equal() + + labs(title = "Symmetry plot (one-sample)", + x = "Distance below median", + y = "Distance above median") + + theme_minimal() + +# Formal test +lawstat::symmetry.test(x_one, option = "MGG") +``` + +# Correlation Diagnostics + +The three common correlation coefficients make different assumptions about the underlying data. Pearson assumes bivariate normality and a linear relationship between the two variables. Spearman assumes a monotonic relationship and is checkable by applying linear-regression diagnostics to the ranked data: once ranks are in place, the rank-rank scatter should look linear for Spearman to be interpretable as a measure of monotonic association. Kendall's tau shares Spearman's monotonicity requirement but counts concordant and discordant pairs rather than using rank differences, which makes it somewhat more robust to ties and outliers; it generally does not require additional diagnostics beyond those used for Spearman. The bootstrap correlation relaxes distributional assumptions but adds its own: the empirical joint distribution must be a reasonable stand-in for the population joint distribution, and no single observation should dominate the bootstrap variability. + +```{r} +# correlation data -------- +cor_data <- mtcars[, c("mpg", "wt")] +``` + +## Pearson Correlation + +### Linearity and marginal distributions + +```{r, fig.height=3.5} +# pearson scatter -------- +ggplot(cor_data, aes(x = wt, y = mpg)) + + geom_point() + + geom_smooth(method = "loess", se = FALSE) + + labs(title = "mpg vs wt with loess smoother", + x = "Weight (1000 lbs)", y = "Miles per gallon") + + theme_minimal() +``` + +The loess curve should look roughly linear for Pearson to be appropriate. Pronounced curvature suggests either a monotonic-but-nonlinear relationship (in which case Spearman or Kendall is preferable) or a genuinely nonmonotonic pattern (in which case no summary correlation is meaningful). + +```{r, fig.height=3.5} +# pearson marginals -------- +par(mfrow = c(1, 2)) +qqnorm(cor_data$mpg, main = "QQ plot: mpg"); qqline(cor_data$mpg) +qqnorm(cor_data$wt, main = "QQ plot: wt"); qqline(cor_data$wt) +par(mfrow = c(1, 1)) +``` + +Symmetric marginals are a reasonable proxy for bivariate normality in most applied settings. Marginal normality does not guarantee bivariate normality, but marked skew in either marginal is sufficient to reject it. + +### Influence via Cook's distance + +```{r, fig.height=4} +# pearson cooks d -------- +pearson_fit <- lm(mpg ~ wt, data = cor_data) +cd_pearson <- cooks.distance(pearson_fit) +plot(cd_pearson, type = "h", + main = "Cook's distance (Pearson regression)", + ylab = "Cook's distance", xlab = "Observation index") +abline(h = 4 / length(cd_pearson), col = "red", lty = 2) +``` + +Unlike the balanced two-sample t-test case, leverage varies meaningfully in regression, so observations with extreme `wt` values (high leverage) combined with large residuals will show up as candidates for driving the estimated correlation. A Pearson correlation that rests on one or two high-leverage points is fragile, and the bootstrap jackknife in the next subsection provides a complementary check. + +Fisher's z-transformation, $z = \tfrac{1}{2}\log\left((1+r)/(1-r)\right)$, is the standard route to parametric confidence intervals on Pearson `r`. It is sometimes treated as assumption-free but in fact still relies on bivariate normality; its coverage can degrade substantially when the bivariate distribution has heavy tails or strong skew. + +## Spearman Correlation + +Spearman's correlation applies Pearson's formula to ranks, so the relevant diagnostics operate on the ranked data. + +```{r, fig.height=3.5} +# spearman ranks -------- +cor_data$mpg_rank <- rank(cor_data$mpg) +cor_data$wt_rank <- rank(cor_data$wt) + +ggplot(cor_data, aes(x = wt_rank, y = mpg_rank)) + + geom_point() + + geom_smooth(method = "loess", se = FALSE) + + labs(title = "Ranked scatter: mpg_rank vs wt_rank", + x = "Rank of wt", y = "Rank of mpg") + + theme_minimal() +``` + +If the original relationship is monotonic, the rank-rank loess curve should look roughly linear. Ranks are uniform by construction, so marginal normality is not a concern; the diagnostic target is linearity of the rank-rank relationship. + +```{r, fig.height=3.5} +# spearman residuals -------- +spearman_fit <- lm(mpg_rank ~ wt_rank, data = cor_data) + +ggplot(data.frame(resid = resid(spearman_fit)), aes(sample = resid)) + + stat_qq() + stat_qq_line() + + labs(title = "QQ plot of residuals (ranked regression)", + x = "Theoretical quantiles", y = "Residuals") + + theme_minimal() +``` + +```{r, fig.height=4} +# spearman cooks d -------- +cd_spearman <- cooks.distance(spearman_fit) +plot(cd_spearman, type = "h", + main = "Cook's distance (Spearman ranked regression)", + ylab = "Cook's distance", xlab = "Observation index") +abline(h = 4 / length(cd_spearman), col = "red", lty = 2) +``` + +The interpretation mirrors the Pearson case: observations with high Cook's D in the ranked regression are candidates for driving the Spearman estimate. Because the regression is on ranks, extreme original-scale values are pulled toward the centre, so Cook's D in this context flags observations whose rank combination is unusual rather than whose raw value is extreme. + +## Kendall's Tau + +Kendall's tau uses the same monotonicity assumption as Spearman but is less sensitive to the magnitude of rank differences because it counts concordant and discordant pairs rather than computing correlation on ranks. This makes it generally more robust to outliers and better-behaved in the presence of ties. The ranked scatterplot from the Spearman subsection serves as the primary visual check for Kendall as well, and additional diagnostics are rarely needed. + +## Bootstrap Correlation Diagnostics + +The bootstrap correlation provides confidence intervals without appealing to bivariate normality or Fisher's z. Its own assumptions can be checked with the same toolkit used for the bootstrap t-test: the shape of the bootstrap distribution and the jackknife-after-bootstrap. + +```{r, fig.height=5} +# bootstrap correlation -------- +cor_stat <- function(data, indices) { + d <- data[indices, ] + cor(d$mpg, d$wt) +} + +boot_cor <- boot(data = cor_data, statistic = cor_stat, R = 2000) + +plot(boot_cor) +jack.after.boot(boot_cor, main = "Jackknife-after-bootstrap (correlation)") +``` + +The bootstrap distribution should be reasonably symmetric. Near $r = \pm 1$, boundary effects make the distribution skewed and Fisher's z helps but does not fully solve the problem; interpret the intervals cautiously in that regime. In the jackknife-after-bootstrap plot, strips that visibly differ from the others flag observations that drive the bootstrap variability of the correlation estimate. + +# Rank-Based Tests: WMW and Brunner-Munzel + +The Wilcoxon-Mann-Whitney (WMW) test is commonly presented as a nonparametric test of medians, but that interpretation requires the **location shift assumption**: the two group distributions differ only in location, not in shape. When shapes differ (for example when one group has greater variance, or the groups have different skewness), WMW tests a hypothesis about stochastic ordering, $P(X < Y)$, rather than a difference in medians. Users who report WMW as a median test when shapes are clearly different are over-interpreting the result. + +**Brunner-Munzel** drops the location-shift requirement and directly tests the stochastic-superiority hypothesis $P(X < Y) + 0.5 \cdot P(X = Y) = 0.5$. The tradeoff is analogous to Welch's correction of Student's t-test: Brunner-Munzel gives up a location-difference interpretation in exchange for validity under unequal shapes and variances. + +The **proportional odds** assumption is a stronger condition used in ordinal regression: the log odds ratio between groups is constant across all cutpoints of the outcome. WMW can be derived as the score test from a proportional odds model, so when proportional odds holds, WMW has a clean odds-ratio interpretation in Harrell's framework. When it fails, WMW still provides a valid test of $P(X < Y)$ but its interpretation as an odds ratio breaks down. + +The diagnostics below cover (a) location shift, the condition under which the median-difference interpretation is licensed; (b) proportional odds, the condition under which the odds-ratio interpretation is licensed; and (c) the symmetry requirement for the one-sample and paired signed-rank tests. + +```{r} +# rank test data -------- +rank_data <- ToothGrowth |> dplyr::filter(dose == 1) +``` + +## Location Shift Check (Two-Sample) + +The cleanest visual check for location shift is a pair of overlaid empirical CDFs (ECDFs). Under location shift, the two ECDFs are horizontal translations of each other: the horizontal distance between the curves is constant across the range of the outcome. + +```{r, fig.height=3.5} +# location shift ecdf -------- +ggplot(rank_data, aes(x = len, color = supp)) + + halfmoon::geom_ecdf() + + labs(title = "Empirical CDFs by group", + subtitle = "Parallel (horizontally shifted) curves support location shift", + x = "Length", y = "Proportion <= x") + + theme_minimal() +``` + +`halfmoon::geom_ecdf()` is preferred over `ggplot2::stat_ecdf()` because it signals the diagnostic intent and supports weighted ECDFs if the workflow is later extended to more complex designs. + +```{r, fig.height=3.5} +# density overlay -------- +ggplot(rank_data, aes(x = len, fill = supp)) + + geom_density(alpha = 0.5) + + labs(title = "Density overlay by group", + x = "Length", y = "Density") + + theme_minimal() +``` + +If the ECDFs cross, or if the horizontal gap between them varies substantially across the range, location shift is violated. In that case the difference-in-medians interpretation of WMW should not be used; report stochastic superiority or switch to Brunner-Munzel. + +## Proportional Odds Check (Two-Sample) + +Two diagnostics are useful: a visual check of the empirical logit curves and a formal test via ordinal regression. + +### Visual: parallel empirical logit curves + +For each observed value of the outcome, compute the empirical cumulative proportion in each group at or below that value, and transform to logits: $\log(F_g(x)/(1 - F_g(x)))$ for each group $g$. Plotting the two logit curves on the same axes against the outcome value, proportional odds implies that the curves are vertically parallel, with constant vertical distance equal to the log odds ratio. Crossing curves, or non-constant gaps, indicate violation. + +We use a hand-rolled helper here rather than `halfmoon::geom_ecdf()` because that function returns ECDF values on the probability scale. The proportional-odds check requires the logit transformation of those values, where parallel becomes visually meaningful; on the probability scale the sigmoid shape of the ECDF obscures whether the gap is constant or varying. + +```{r, fig.height=4} +# proportional odds visual -------- +po_logit_data <- function(data, outcome, group) { + vals <- sort(unique(data[[outcome]])) + groups <- unique(data[[group]]) + out <- expand.grid(value = vals, group = groups, stringsAsFactors = FALSE) + out$logit <- NA_real_ + for (i in seq_len(nrow(out))) { + g <- out$group[i] + v <- out$value[i] + sub <- data[data[[group]] == g, outcome, drop = TRUE] + p <- mean(sub <= v) + # Clamp to avoid infinities at the extremes + p <- pmin(pmax(p, 1 / (2 * length(sub))), 1 - 1 / (2 * length(sub))) + out$logit[i] <- log(p / (1 - p)) + } + out +} + +po_df <- po_logit_data(rank_data, "len", "supp") +ggplot(po_df, aes(x = value, y = logit, color = group)) + + geom_line(linewidth = 1) + + geom_point() + + labs(title = "Empirical logit curves by group", + subtitle = "Parallel curves support proportional odds", + x = "Outcome value", y = "Empirical logit") + + theme_minimal() +``` + +With small samples the logit curves can look jagged even when proportional odds holds in the population. The visual is most informative when `n` is at least 30 per group; below that threshold it should be read as suggestive rather than conclusive. + +### Formal: Brant test via ordinal regression + +The Brant test formalizes the proportional-odds check by fitting an ordinal regression and testing whether the log-odds slopes are equal across cutpoints. For continuous outcomes the data must first be discretized, which we do here with quartile-based cuts. + +```{r} +# brant test -------- +# Discretize the outcome into ordinal categories for polr +rank_data$len_ord <- cut(rank_data$len, + breaks = quantile(rank_data$len, probs = seq(0, 1, 0.25)), + include.lowest = TRUE, + ordered_result = TRUE) +polr_fit <- MASS::polr(len_ord ~ supp, data = rank_data, Hess = TRUE) +brant::brant(polr_fit) +``` + +The Brant test shares the usual caveats about power in small samples: a non-significant result with small `n` is weak evidence for proportional odds. The discretization of a continuous outcome is also somewhat arbitrary; different cutpoints can yield different conclusions. In practice the visual check and the formal test are complementary, and agreement between them is more informative than either alone. + +## Symmetry Check for Signed-Rank (One-Sample/Paired) + +The Wilcoxon signed-rank test assumes that the distribution of the one-sample values, or of the paired differences, is symmetric around the hypothesized value. This is the same assumption discussed in the permutation section for sign-flip tests. The full diagnostic suite from the paired permutation section (histogram with mean and median reference lines, symmetry plot, normal QQ plot, `lawstat::symmetry.test`, and the bootstrap confidence interval for skewness) applies directly to the signed-rank test. Rather than duplicate the code here, we refer readers to the "Paired-Sample Permutation" section above; the same checks, with the same interpretive thresholds, are the relevant diagnostics for the signed-rank test. + +## When to Use What + +- **Location shift plausible, proportional odds plausible, symmetric differences (for paired or one-sample):** WMW and the signed-rank test are interpretable as tests of the location parameter, with a clean odds-ratio interpretation. +- **Location shift violated but independence and exchangeability hold:** Brunner-Munzel is the more defensible two-sample test. Report stochastic superiority rather than a difference in medians. +- **Proportional odds violated:** WMW still provides a valid test of $P(X < Y)$ but the odds-ratio interpretation is not clean. Consider whether the mean, estimated via a bootstrap or permutation t-test, is a more interpretable estimand for the question at hand. Alternatively, the Brunner-Munzel test should still be a valid test and estimate as well. + +# ANOVA Diagnostics + +For ANOVA-style designs (one-way, factorial, repeated-measures, mixed), the `performance` package's `check_model()` function provides a comprehensive diagnostic suite in a single call, covering linearity, homogeneity of variance, normality of residuals, influential observations, and where applicable collinearity. The function accepts `aov`, `lm`, `lmer`, `glm`, and several other model object classes, so the same workflow scales from a simple one-way ANOVA to a mixed model with random effects. For equivalence testing of ANOVA contrasts (for example via TOSTER's ANOVA support), diagnostics should be run on the underlying model fit rather than on the contrast output, because the distributional assumptions live at the model level. + +```{r, fig.height=7} +# anova diagnostics -------- +aov_fit <- aov(len ~ supp * factor(dose), data = ToothGrowth) +performance::check_model(aov_fit) +``` + +When `check_model()` flags a violation, the remedies are the usual ones: consider a transformation (log for right-skew, square-root for count-like variance scaling), use a robust variant such as Welch ANOVA or a mixed model with heteroscedastic residuals, or switch to a resampling-based test on the contrasts of interest. + +# Illustration: What Failing Diagnostics Look Like + +To show readers what problematic data looks like, we simulate a deliberately skewed paired difference distribution (exponential) and apply the same paired diagnostic suite. + +```{r, fig.height=4} +# skewed example -------- +set.seed(2026) +d_skewed <- rexp(20, rate = 1) - 1 # shifted exponential, right-skewed + +# Histogram +ggplot(data.frame(d = d_skewed), aes(x = d)) + + geom_histogram(bins = 10, fill = "grey70", color = "white") + + geom_vline(xintercept = mean(d_skewed), color = "red", linewidth = 1) + + geom_vline(xintercept = median(d_skewed), color = "blue", + linewidth = 1, linetype = "dashed") + + labs(title = "Deliberately skewed differences", + x = "Difference", y = "Count") + + theme_minimal() + +# Symmetry plot +sp_skew <- symmetry_plot(d_skewed) +ggplot(sp_skew, aes(x = lower, y = upper)) + + geom_point(size = 2) + + geom_abline(intercept = 0, slope = 1, linetype = "dashed") + + coord_equal() + + labs(title = "Symmetry plot (skewed example)", + x = "Distance below median", + y = "Distance above median") + + theme_minimal() + +# Formal test +lawstat::symmetry.test(d_skewed, option = "MGG") +``` + +Note the visible mean–median gap, the points systematically above the 45-degree line in the symmetry plot, and (with adequate `n`) a significant symmetry test. In this situation, the sign-flip permutation test would be unreliable as an exact procedure, and the bootstrap would be the preferred resampling approach. + +# Summary + +The table below collects the diagnostics covered in this supplement. It is organized into two groups: tests of means (t-tests and their resampling variants, plus ANOVA), and tests of distributions and associations (rank-based tests and correlations). + +**Tests of means** + +| Design / Test | Key assumption(s) | Primary diagnostics | +|---------------|-------------------|---------------------| +| Two-sample parametric t-test | Independent observations, normal residuals, equal variance (Student) or not (Welch) | QQ plot of residuals, Shapiro-Wilk, Brown-Forsythe, Cook's distance | +| Paired / one-sample parametric t-test | Normality of differences (paired) or observations (one-sample) | QQ plot, Shapiro-Wilk, Cook's D from intercept-only lm | +| Two-sample studentized bootstrap | Independence, stable empirical distribution, no severe outliers | Group densities, boxplots, Cook's D (leverage), jackknife-after-bootstrap, replication stability | +| Paired / one-sample studentized bootstrap | Independence, stable empirical distribution | Histogram, boxplot, jackknife-after-bootstrap | +| Two-sample studentized permutation | Exchangeability; comparable shape (scale allowed to differ) | QQ plots by group, Brown-Forsythe test for variance | +| Paired sign-flip permutation | Symmetry of differences around null value | Histogram w/ mean-median, symmetry plot, normal QQ, `lawstat::symmetry.test`, bootstrap CI for skewness | +| One-sample sign-flip permutation | Symmetry of observations around null value | Same as paired, on raw observations | +| ANOVA (one-way, factorial, mixed) | Independence, normal residuals, homogeneous variance | `performance::check_model()` suite | + +**Tests of distributions and associations** + +| Test | Key assumption(s) | Primary diagnostics | +|------|-------------------|---------------------| +| Pearson correlation | Bivariate normality, linear relationship | Scatter with loess, marginal QQ plots, Cook's D from `lm` | +| Spearman / Kendall correlation | Monotonic relationship | Ranked scatter with loess, QQ of residuals on ranked lm, Cook's D on ranked fit | +| Bootstrap correlation | Stable empirical joint distribution, no single-observation dominance | Bootstrap distribution plot, jackknife-after-bootstrap | +| Wilcoxon-Mann-Whitney | Location shift (for median interpretation); proportional odds (for odds-ratio interpretation) | Overlaid ECDFs, empirical logit curves, Brant test via `MASS::polr()` | +| Brunner-Munzel | Independence, exchangeability (no location-shift required) | ECDF inspection as sanity check; no additional distributional assumptions | +| Wilcoxon signed-rank (paired/one-sample) | Symmetry around null value | Same diagnostics as paired sign-flip permutation | + +Across all designs, replication stability (running resampling tests twice with different seeds) and sensitivity analysis (trying `tr > 0` for trimmed means, or comparing bootstrap, permutation, and parametric results) provide additional robustness checks. When diagnostics conflict, for example when paired differences appear mildly asymmetric, reporting both bootstrap and permutation results and noting any disagreement is more informative than defending a single choice. + + diff --git a/tests/testthat/test-bootTOST.R b/tests/testthat/test-bootTOST.R index 500ab1f6..13076e4d 100644 --- a/tests/testthat/test-bootTOST.R +++ b/tests/testthat/test-bootTOST.R @@ -339,3 +339,60 @@ for (ci_method in c("perc", "basic", "bca", "stud")) { }) } + +# boot_t_TOST vs boot_t_test ----- +# With the same seed both functions draw identical resamples, so p-values +# and raw confidence intervals should match exactly for every design and +# CI method. + +test_that("boot_t_TOST matches boot_t_test for all designs and CI methods", { + skip_on_cran() + + set.seed(8421) + x1 <- rnorm(20, mean = 7.4, sd = 1.2) + x2 <- rnorm(22, mean = 5.6, sd = 1) + y2 <- rnorm(18, mean = 5, sd = 1.3) + xp <- rnorm(15, mean = 5.5, sd = 1) + yp <- xp - rnorm(15, mean = 0.4, sd = 0.6) + + designs <- list( + one = list(args = list(x = x1), bounds = c(7, 8.5), mu = 7.5), + welch = list(args = list(x = x2, y = y2), bounds = c(0, 1.5), mu = 0.5), + pooled = list(args = list(x = x2, y = y2, var.equal = TRUE), + bounds = c(0, 1.5), mu = 0.5), + paired = list(args = list(x = xp, y = yp, paired = TRUE), + bounds = c(0, 1), mu = 0.3) + ) + + for (d in names(designs)) { + des <- designs[[d]] + for (ci in c("stud", "basic", "perc", "bca")) { + lab <- paste(d, ci) + + set.seed(99) + res <- suppressMessages(do.call(boot_t_TOST, c(des$args, list( + eqb = des$bounds, mu = des$mu, R = 199, boot_ci = ci)))) + set.seed(99) + eq <- do.call(boot_t_test, c(des$args, list( + mu = des$bounds, alternative = "equivalence", R = 199, boot_ci = ci))) + set.seed(99) + nhst <- do.call(boot_t_test, c(des$args, list( + mu = des$mu, R = 199, boot_ci = ci))) + set.seed(99) + lower <- do.call(boot_t_test, c(des$args, list( + mu = des$bounds[1], alternative = "greater", R = 199, boot_ci = ci))) + set.seed(99) + upper <- do.call(boot_t_test, c(des$args, list( + mu = des$bounds[2], alternative = "less", R = 199, boot_ci = ci))) + + expect_equal(res$TOST$p.value[1], nhst$p.value, label = lab) + expect_equal(res$TOST$p.value[2], lower$p.value, label = lab) + expect_equal(res$TOST$p.value[3], upper$p.value, label = lab) + expect_equal(max(res$TOST$p.value[2:3]), eq$p.value, label = lab) + expect_equal(res$effsize$estimate[1], unname(nhst$estimate[length(nhst$estimate)]), + label = lab) + expect_equal(c(res$effsize$lower.ci[1], res$effsize$upper.ci[1]), + as.numeric(eq$conf.int), label = lab) + } + } +}) diff --git a/tests/testthat/test-htest_output_updates.R b/tests/testthat/test-htest_output_updates.R index be039633..dde514d9 100644 --- a/tests/testthat/test-htest_output_updates.R +++ b/tests/testthat/test-htest_output_updates.R @@ -63,11 +63,12 @@ test_that("simple_htest wilcox: estimate labels", { x_sleep <- sleep$extra[sleep$group == 1] y_sleep <- sleep$extra[sleep$group == 2] res_paired <- hush(simple_htest(x_sleep, y_sleep, test = "w", - paired = TRUE, mu = 0)) + paired = TRUE, mu = 0, exact = FALSE)) expect_equal(names(res_paired$estimate), "Hodges-Lehmann estimate (z = x - y)") # Two-sample - res_two <- hush(simple_htest(1:10, y = c(7:20), test = "w", mu = 0)) + res_two <- hush(simple_htest(1:10, y = c(7:20), test = "w", mu = 0, + exact = FALSE)) expect_equal(names(res_two$estimate), "Hodges-Lehmann estimate (x - y)") }) @@ -81,7 +82,8 @@ test_that("simple_htest: formula interface substitutes group names with quoting" expect_true(grepl("'1' - '2'", nms[3])) # Wilcoxon formula - res_w <- hush(simple_htest(extra ~ group, data = sleep, test = "w", mu = 0)) + res_w <- hush(simple_htest(extra ~ group, data = sleep, test = "w", mu = 0, + exact = FALSE)) expect_true(grepl("'1' - '2'", names(res_w$estimate))) }) @@ -137,7 +139,7 @@ test_that("simple_htest: equivalence/MET paths work with new estimate structure" # Equivalence wilcox two-sample res_eq_w <- hush(simple_htest(1:10, y = c(7:20), test = "w", - alternative = "e", mu = 3)) + alternative = "e", mu = 3, exact = FALSE)) expect_equal(names(res_eq_w$estimate), "Hodges-Lehmann estimate (x - y)") # MET t-test paired diff --git a/tests/testthat/test-mu_consistency.R b/tests/testthat/test-mu_consistency.R new file mode 100644 index 00000000..ab40c5c8 --- /dev/null +++ b/tests/testthat/test-mu_consistency.R @@ -0,0 +1,243 @@ +# Consistency of mu handling in t_TOST, tsum_TOST, and boot_t_TOST -------- +# Raw estimate, CI, and raw bounds are on the original scale; +# the SMD and its bounds are relative to mu. + +hush = function(code) { + sink(nullfile()) + tmp = code + sink() + return(tmp) +} + +set.seed(8421) +x_one <- rnorm(40, mean = 7.4, sd = 1.2) +x_two <- rnorm(30, mean = 5.6, sd = 1) +y_two <- rnorm(35, mean = 5, sd = 1.3) +x_pair <- rnorm(25, mean = 5.5, sd = 1) +y_pair <- x_pair - rnorm(25, mean = 0.4, sd = 0.6) + +# One-sample -------- + +test_that("one-sample t_TOST with mu reports estimate, CI, and bounds on one scale", { + m0 <- 7.5 + res <- t_TOST(x = x_one, mu = m0, eqb = c(5.5, 8.5), + bias_correction = FALSE) + + expect_equal(res$mu, m0) + expect_equal(res$effsize$estimate[1], mean(x_one)) + expect_equal(c(res$effsize$lower.ci[1], res$effsize$upper.ci[1]), + as.numeric(t.test(x_one, conf.level = 0.9)$conf.int)) + expect_true(res$effsize$lower.ci[1] <= res$effsize$estimate[1] && + res$effsize$estimate[1] <= res$effsize$upper.ci[1]) + + # tests + expect_equal(res$TOST$p.value[1], t.test(x_one, mu = m0)$p.value) + expect_equal(res$TOST$p.value[2], + t.test(x_one, mu = 5.5, alternative = "greater")$p.value) + expect_equal(res$TOST$p.value[3], + t.test(x_one, mu = 8.5, alternative = "less")$p.value) + expect_equal(res$eqb$low_eq[1], 5.5) + expect_equal(res$eqb$high_eq[1], 8.5) + + # SMD and SMD bounds are relative to mu + expect_equal(res$effsize$estimate[2], (mean(x_one) - m0) / sd(x_one)) + expect_equal(res$eqb$low_eq[2], (5.5 - m0) / sd(x_one)) + expect_equal(res$eqb$high_eq[2], (8.5 - m0) / sd(x_one)) + expect_true(res$effsize$lower.ci[2] <= res$effsize$estimate[2] && + res$effsize$estimate[2] <= res$effsize$upper.ci[2]) +}) + +test_that("smd_calc one-sample subtracts mu", { + m0 <- 7.5 + res <- smd_calc(x = x_one, mu = m0, bias_correction = FALSE) + expect_equal(unname(res$estimate), (mean(x_one) - m0) / sd(x_one)) + + res_t <- t_TOST(x = x_one, mu = m0, eqb = c(5.5, 8.5), + bias_correction = FALSE) + expect_equal(unname(res$estimate), res_t$effsize$estimate[2]) +}) + +# Two-sample and paired -------- + +test_that("two-sample t_TOST with mu uses x - y - mu for the SMD", { + m0 <- 0.5 + res <- t_TOST(x = x_two, y = y_two, mu = m0, eqb = c(-0.5, 1.5), + var.equal = TRUE, bias_correction = FALSE) + diff <- mean(x_two) - mean(y_two) + sp <- sqrt(((30 - 1) * var(x_two) + (35 - 1) * var(y_two)) / (30 + 35 - 2)) + + expect_equal(res$effsize$estimate[1], diff) + expect_equal(c(res$effsize$lower.ci[1], res$effsize$upper.ci[1]), + as.numeric(t.test(x_two, y_two, var.equal = TRUE, + conf.level = 0.9)$conf.int)) + expect_equal(res$effsize$estimate[2], (diff - m0) / sp) + expect_equal(res$eqb$low_eq[2], (-0.5 - m0) / sp) + + smd <- smd_calc(x = x_two, y = y_two, mu = m0, var.equal = TRUE, + bias_correction = FALSE) + expect_equal(unname(smd$estimate), res$effsize$estimate[2]) + + # SMD is ~0 when mu equals the observed difference + res0 <- t_TOST(x = x_two, y = y_two, mu = diff, eqb = c(-1, 2)) + expect_equal(res0$effsize$estimate[2], 0, tolerance = 1e-8) +}) + +test_that("paired t_TOST with mu uses x - y - mu for the SMD", { + m0 <- 0.3 + res <- t_TOST(x = x_pair, y = y_pair, paired = TRUE, mu = m0, + eqb = c(-0.5, 1), bias_correction = FALSE) + diff <- mean(x_pair - y_pair) + + expect_equal(res$effsize$estimate[1], diff) + expect_equal(c(res$effsize$lower.ci[1], res$effsize$upper.ci[1]), + as.numeric(t.test(x_pair, y_pair, paired = TRUE, + conf.level = 0.9)$conf.int)) + expect_true(res$effsize$lower.ci[1] <= res$effsize$estimate[1] && + res$effsize$estimate[1] <= res$effsize$upper.ci[1]) + + smd <- smd_calc(x = x_pair, y = y_pair, paired = TRUE, mu = m0, + bias_correction = FALSE) + expect_equal(unname(smd$estimate), res$effsize$estimate[2]) + + res0 <- t_TOST(x = x_pair, y = y_pair, paired = TRUE, mu = diff, + eqb = c(-1, 2)) + expect_equal(res0$effsize$estimate[2], 0, tolerance = 1e-8) +}) + +# Location-shift invariance -------- + +test_that("shifting data, mu, and bounds together only moves the raw estimate and CI", { + shift <- 3 + check_shift <- function(res, res_shift) { + expect_equal(res_shift$TOST, res$TOST) + expect_equal(res_shift$effsize[2, ], res$effsize[2, ]) + expect_equal(res_shift$eqb[2, ], res$eqb[2, ]) + expect_equal(res_shift$effsize$estimate[1], res$effsize$estimate[1] + shift) + expect_equal(res_shift$effsize$lower.ci[1], res$effsize$lower.ci[1] + shift) + expect_equal(res_shift$effsize$upper.ci[1], res$effsize$upper.ci[1] + shift) + expect_equal(res_shift$eqb$low_eq[1], res$eqb$low_eq[1] + shift) + } + + # one-sample + check_shift(t_TOST(x = x_one, eqb = c(-1, 1)), + t_TOST(x = x_one + shift, mu = shift, + eqb = c(-1, 1) + shift)) + # two-sample + check_shift(t_TOST(x = x_two, y = y_two, eqb = c(-1, 1)), + t_TOST(x = x_two + shift, y = y_two, mu = shift, + eqb = c(-1, 1) + shift)) + # paired + check_shift(t_TOST(x = x_pair, y = y_pair, paired = TRUE, eqb = c(-1, 1)), + t_TOST(x = x_pair + shift, y = y_pair, paired = TRUE, + mu = shift, eqb = c(-1, 1) + shift)) +}) + +# SMD bounds -------- + +test_that("eqbound_type = 'SMD' bounds are standardized distances from mu", { + m0 <- 7.5 + res <- suppressWarnings(suppressMessages( + t_TOST(x = x_one, mu = m0, eqb = c(-0.5, 0.5), eqbound_type = "SMD", + bias_correction = FALSE) + )) + expect_equal(res$eqb$low_eq[1], m0 - 0.5 * sd(x_one)) + expect_equal(res$eqb$high_eq[1], m0 + 0.5 * sd(x_one)) + expect_equal(res$eqb$low_eq[2], -0.5) + expect_equal(res$TOST$p.value[2], + t.test(x_one, mu = m0 - 0.5 * sd(x_one), + alternative = "greater")$p.value) +}) + +# tsum_TOST -------- + +test_that("tsum_TOST matches t_TOST when mu is not zero", { + compare_res <- function(a, b) { + expect_equal(b$TOST, a$TOST) + expect_equal(b$effsize, a$effsize) + expect_equal(b$eqb, a$eqb) + expect_equal(b$mu, a$mu) + } + + # one-sample + compare_res( + t_TOST(x = x_one, mu = 7.5, eqb = c(5.5, 8.5), smd_ci = "z"), + tsum_TOST(m1 = mean(x_one), sd1 = sd(x_one), n1 = length(x_one), + mu = 7.5, eqb = c(5.5, 8.5), smd_ci = "z") + ) + # two-sample + compare_res( + t_TOST(x = x_two, y = y_two, mu = 0.5, eqb = c(-0.5, 1.5), smd_ci = "z"), + tsum_TOST(m1 = mean(x_two), sd1 = sd(x_two), n1 = length(x_two), + m2 = mean(y_two), sd2 = sd(y_two), n2 = length(y_two), + mu = 0.5, eqb = c(-0.5, 1.5), smd_ci = "z") + ) + # paired + compare_res( + t_TOST(x = x_pair, y = y_pair, paired = TRUE, mu = 0.3, + eqb = c(-0.5, 1), smd_ci = "z"), + tsum_TOST(m1 = mean(x_pair), sd1 = sd(x_pair), n1 = length(x_pair), + m2 = mean(y_pair), sd2 = sd(y_pair), n2 = length(y_pair), + r12 = cor(x_pair, y_pair), paired = TRUE, + mu = 0.3, eqb = c(-0.5, 1), smd_ci = "z") + ) +}) + +# boot_t_TOST -------- + +test_that("boot_t_TOST results are invariant to shifting data, mu, and bounds", { + m0 <- 7.5 + for (ci in c("stud", "perc")) { + set.seed(1111) + res <- boot_t_TOST(x = x_one, mu = m0, eqb = c(5.5, 8.5), + R = 199, boot_ci = ci) + set.seed(1111) + res0 <- boot_t_TOST(x = x_one - m0, eqb = c(5.5, 8.5) - m0, + R = 199, boot_ci = ci) + + expect_equal(res$mu, m0) + expect_equal(res$TOST$p.value, res0$TOST$p.value) + expect_equal(res$effsize$estimate[1], mean(x_one)) + expect_equal(res$effsize$lower.ci[1], res0$effsize$lower.ci[1] + m0) + expect_equal(res$effsize$upper.ci[1], res0$effsize$upper.ci[1] + m0) + expect_equal(res$effsize$estimate[2], res0$effsize$estimate[2]) + expect_true(res$effsize$lower.ci[1] <= res$effsize$estimate[1] && + res$effsize$estimate[1] <= res$effsize$upper.ci[1]) + } + + set.seed(2222) + res <- boot_t_TOST(x = x_two, y = y_two, mu = 0.5, eqb = c(-0.5, 1.5), + R = 199) + set.seed(2222) + res0 <- boot_t_TOST(x = x_two - 0.5, y = y_two, eqb = c(-1, 1), R = 199) + expect_equal(res$TOST$p.value, res0$TOST$p.value) + expect_equal(res$effsize$estimate[1], mean(x_two) - mean(y_two)) +}) + +# Messages and S3 methods -------- + +test_that("bounds message checks whether the interval contains mu", { + expect_no_message(t_TOST(x = x_one, mu = 7.5, eqb = c(5.5, 8.5))) + expect_message(t_TOST(x = x_one, eqb = c(5.5, 8.5)), + "does not include zero") + expect_message(t_TOST(x = x_one, mu = 10, eqb = c(5.5, 8.5)), + "does not include mu") + expect_no_message(tsum_TOST(m1 = 7.4, sd1 = 1.2, n1 = 40, + mu = 7.5, eqb = c(5.5, 8.5))) +}) + +test_that("print and describe report mu", { + res <- t_TOST(x = x_one, mu = 7.5, eqb = c(5.5, 8.5)) + expect_output(print(res), "relative to mu = 7.5") + expect_output(print(res), "Equivalence Bounds: Raw \\[5.5, 8.5\\]") + expect_true(grepl("7.5", describe(res))) + + res_sum <- tsum_TOST(m1 = mean(x_one), sd1 = sd(x_one), n1 = length(x_one), + mu = 7.5, eqb = c(5.5, 8.5)) + expect_true(grepl("7.5", describe(res_sum))) + + # no mu note when mu is zero; older objects without mu still work + res_zero <- t_TOST(x = x_two, y = y_two, eqb = 1) + expect_false(any(grepl("relative to mu", capture.output(print(res_zero))))) + res_zero$mu <- NULL + expect_type(hush(describe(res_zero)), "character") +}) diff --git a/vignettes/references.bib b/vignettes/references.bib index 8ae8637e..fb39d36a 100644 --- a/vignettes/references.bib +++ b/vignettes/references.bib @@ -450,3 +450,9 @@ @article{arboretti2021 url={https://doi.org/10.1002/sim.9015} } +@article{Arboretti_Pesarin_Salmaso_2020, title={A unified approach to permutation testing for equivalence}, volume={30}, +url={http://dx.doi.org/10.1007/s10260-020-00548-0}, DOI={10.1007/s10260-020-00548-0}, +abstractNote={AbstractThe notion of testing for equivalence of two treatments is widely used in clinical trials, pharmaceutical experiments, bioequivalence and quality control. It is traditionally operated within the intersection–union principle (IU). According to this principle the null hypothesis is stated as the set of effects the differences $$delta$$ δ of which lie outside a suitable equivalence interval and the alternative as the set of $$delta$$ δ that lie inside it. In the literature related solutions are essentially based on likelihood techniques, which in turn are rather difficult to deal with. A recently published paper goes beyond most of likelihood limitations by using the IU approach within the permutation theory. One more paper, based on Roy’s union–intersection principle (UI) within the permutation theory, goes beyond some limitations of traditional two-sided tests. Such UI approach, effectively a mirror image of IU, assumes a null hypothesis where $$delta$$ δ lies inside the equivalence interval and an alternative where it lies outside. Since testing for equivalence can rationally be analyzed by both principles but, as the two differ in terms of the mirror-like roles assigned to the hypotheses under study, they are not strictly comparable. The present paper’s main goal is to look into these problems and provide a sort of comparative analysis of both by highlighting the related requirements, properties, limitations, difficulties, and pitfalls so as to get practitioners properly acquainted with their correct use in practical contexts.}, number={3}, journal={Statistical Methods & Applications}, publisher={Springer Science and Business Media LLC}, +author={Arboretti, Rosa and Pesarin, Fortunato and Salmaso, Luigi}, +year={2020}, month=nov, pages={1033–1052}, language={en} } +