| Title: | Utility Analysis Methods for Personnel Selection |
|---|---|
| Description: | Implements classical and contemporary utility-analysis methods for personnel selection, organised by criterion scale (classification or continuous/monetary) and selection structure (compensatory or multiple-hurdle). Methods include Taylor-Russell classification (Taylor and Russell, 1939, <doi:10.1037/h0057079>), Brogden-Cronbach-Gleser monetary utility (Brogden, 1949, <doi:10.1111/j.1744-6570.1949.tb01397.x>), Schmidt-Hunter-Pearlman intervention utility (Schmidt and others, 1979, <doi:10.1037/0021-9010.64.6.609>), Sturman comprehensive cascade (Sturman, 2001, <doi:10.1108/eb029072>), Thomas-Owen-Gunst multivariate classification (Thomas and others, 1977, <doi:10.3102/10769986002001055>), compensatory versus multiple-hurdle simulation (Ock and Oswald, 2018, <doi:10.1027/1866-5888/a000205>), AUC-to-effect-size conversions (Salgado, 2018, <doi:10.5093/ejpalc2018a5>), Pareto frontiers for validity-diversity trade-offs, and Monte Carlo uncertainty propagation. |
| Authors: | René Gempp [aut, cre, cph] (ORCID: <https://orcid.org/0000-0002-0427-6894>) |
| Maintainer: | René Gempp <[email protected]> |
| License: | MIT + file LICENSE |
| Version: | 1.0.2 |
| Built: | 2026-05-20 13:48:15 UTC |
| Source: | https://github.com/cran/personnelSelectionUtility |
Computes selection rates and adverse-impact ratios by group. If no reference group is supplied, the highest selection-rate group is used as reference.
adverse_impact_ratio(selected, group, reference = NULL)adverse_impact_ratio(selected, group, reference = NULL)
selected |
Logical or 0/1 vector indicating selection. |
group |
Group membership vector. |
reference |
Optional reference group. |
A data frame with selection rates and ratios.
De Corte, W., Lievens, F., & Sackett, P. R. (2007). Combining predictors to achieve optimal trade-offs between selection quality and adverse impact. Journal of Applied Psychology, 92, 1380-1393.
Pyburn, K. M., Ployhart, R. E., & Kravitz, D. A. (2008). The diversity- validity dilemma: Overview and legal context. Personnel Psychology, 61, 143-151.
# Literature: Pyburn, Ployhart, and Kravitz (2008); De Corte et al. (2007). adverse_impact_ratio(c(1, 0, 1, 1, 0, 0), c("A", "A", "A", "B", "B", "B"))# Literature: Pyburn, Ployhart, and Kravitz (2008); De Corte et al. (2007). adverse_impact_ratio(c(1, 0, 1, 1, 0, 0), c("A", "A", "A", "B", "B", "B"))
Returns the package's recommended argument names and the notation they map to in the utility-analysis literature. The glossary is intended to make the API explicit and to avoid mixing compact statistical notation with readable R argument names.
argument_glossary()argument_glossary()
A data frame with argument names, literature notation, and usage notes.
Sturman, M. C. (2001). Utility analysis for multiple selection devices and multiple outcomes. Journal of Human Resource Costing and Accounting, 6(2), 9-28.
Holling, H. (1998). Utility analysis of personnel selection: An overview and empirical study based on objective performance measures. Methods of Psychological Research Online, 3(1), 5-24.
# Literature: Holling (1998); Sturman (2001). argument_glossary() subset(argument_glossary(), argument %in% c("base_rate", "selection_ratio", "sdy"))# Literature: Holling (1998); Sturman (2001). argument_glossary() subset(argument_glossary(), argument %in% c("base_rate", "selection_ratio", "sdy"))
Converts AUC to Cohen's d using . This
conversion assumes two normal distributions with equal variances and should
therefore be interpreted as a model-based effect-size conversion, not as a
universal transformation from classifier accuracy to personnel-selection
validity.
auc_to_d_equal_variance(auc)auc_to_d_equal_variance(auc)
auc |
Area under the ROC curve. Must be in |
Numeric vector of Cohen's d values.
Hanley, J. A., & McNeil, B. J. (1982). The meaning and use of the area under a receiver operating characteristic (ROC) curve. Radiology, 143(1), 29-36.
Rice, M. E., & Harris, G. T. (2005). Comparing effect sizes in follow-up studies: ROC area, Cohen's d, and r. Law and Human Behavior, 29(5), 615-620.
Salgado, J. F. (2018). Transforming the area under the normal curve (AUC) into Cohen's d, Pearson's r_pb, odds-ratio, and natural log odds-ratio: Two conversion tables. The European Journal of Psychology Applied to Legal Context, 10(1), 35-47.
# Minimal example based on the equal-variance binormal conversion. auc_to_d_equal_variance(.75) # Direction is preserved: AUC below .50 implies a negative effect. auc_to_d_equal_variance(.40)# Minimal example based on the equal-variance binormal conversion. auc_to_d_equal_variance(.75) # Direction is preserved: AUC below .50 implies a negative effect. auc_to_d_equal_variance(.40)
Converts AUC to Cohen's d under the equal-variance binormal model and then converts d to a point-biserial correlation for a user-specified base rate. This is the preferred correlation-like conversion when a utility-analysis function requires a validity input but the available evidence is reported as AUC.
auc_to_point_biserial(auc, base_rate = 0.5)auc_to_point_biserial(auc, base_rate = 0.5)
auc |
Area under the ROC curve. Must be in |
base_rate |
Proportion in the focal or successful group, usually denoted
|
Numeric vector of point-biserial correlations.
Hanley, J. A., & McNeil, B. J. (1982). The meaning and use of the area under a receiver operating characteristic (ROC) curve. Radiology, 143(1), 29-36.
Rice, M. E., & Harris, G. T. (2005). Comparing effect sizes in follow-up studies: ROC area, Cohen's d, and r. Law and Human Behavior, 29(5), 615-620.
Salgado, J. F. (2018). Transforming the area under the normal curve (AUC) into Cohen's d, Pearson's r_pb, odds-ratio, and natural log odds-ratio: Two conversion tables. The European Journal of Psychology Applied to Legal Context, 10(1), 35-47.
# Minimal example: AUC to d, then to r_pb for a balanced binary criterion. auc_to_point_biserial(.75) # Substantive example: examine how base rate affects the implied r_pb. auc_to_point_biserial(.75, base_rate = c(.50, .30, .20, .10))# Minimal example: AUC to d, then to r_pb for a balanced binary criterion. auc_to_point_biserial(.75) # Substantive example: examine how base rate affects the implied r_pb. auc_to_point_biserial(.75, base_rate = c(.50, .30, .20, .10))
Converts the area under the ROC curve to the rank-biserial correlation,
. This is a distribution-free dominance summary: it
rescales the probability that a randomly chosen successful applicant is ranked
above a randomly chosen unsuccessful applicant from the [0, 1] AUC scale to
the [-1, 1] correlation-like scale.
auc_to_rank_biserial(auc)auc_to_rank_biserial(auc)
auc |
Area under the ROC curve. Must be in |
Numeric vector of rank-biserial correlations.
Hanley, J. A., & McNeil, B. J. (1982). The meaning and use of the area under a receiver operating characteristic (ROC) curve. Radiology, 143(1), 29-36.
Kerby, D. S. (2014). The simple difference formula: An approach to teaching nonparametric correlation. Comprehensive Psychology, 3, 11.IT.3.1.
Rice, M. E., & Harris, G. T. (2005). Comparing effect sizes in follow-up studies: ROC area, Cohen's d, and r. Law and Human Behavior, 29(5), 615-620.
# Minimal example: AUC = .50 implies no dominance. auc_to_rank_biserial(.50) # AUC = .75 means 75% favorable pairwise ordering; r_rb = .50. auc_to_rank_biserial(.75)# Minimal example: AUC = .50 implies no dominance. auc_to_rank_biserial(.50) # AUC = .75 means 75% favorable pairwise ordering; r_rb = .50. auc_to_rank_biserial(.75)
Computes classical Brogden-Cronbach-Gleser utility. By default the baseline is
random selection (baseline_validity = 0), but an operating baseline can be
supplied using baseline_validity and, optionally, baseline_selection_ratio.
bcg_utility( validity, selection_ratio, sdy, n_selected, tenure, cost = 0, baseline_validity = 0, baseline_selection_ratio = NULL )bcg_utility( validity, selection_ratio, sdy, n_selected, tenure, cost = 0, baseline_validity = 0, baseline_selection_ratio = NULL )
validity |
Validity of the focal selection system, usually denoted |
selection_ratio |
Selection ratio of the focal system. |
sdy |
Standard deviation of job performance in monetary units, |
n_selected |
Number of selected applicants, |
tenure |
Expected tenure or number of periods, |
cost |
Total cost of the focal system net of baseline costs, if relevant. |
baseline_validity |
Validity of the baseline system. Defaults to |
baseline_selection_ratio |
Selection ratio of the baseline system. If |
A psu_bcg object.
Cronbach, L. J., & Gleser, G. C. (1965). Psychological tests and personnel decisions (2nd ed.). University of Illinois Press.
Brogden, H. E. (1946). On the interpretation of the correlation coefficient as a measure of predictive efficiency. Journal of Educational Psychology, 37, 65-76.
Brogden, H. E. (1949). When testing pays off. Personnel Psychology, 2, 171-183.
Sturman, M. C. (2001). Utility analysis for multiple selection devices and multiple outcomes. Journal of Human Resource Costing and Accounting, 6(2), 9-28.
# Literature: Brogden (1946, 1949); Cronbach and Gleser (1965); Sturman (2001). # Use the first call as a minimal example; the longer block illustrates # how to interpret the function in the substantive setting discussed in the literature. # Minimal example (Brogden (1946, 1949); Cronbach and Gleser (1965); Sturman (2001)). bcg_utility(validity = .35, selection_ratio = .20, sdy = 50000, n_selected = 100, tenure = 3, cost = 75000) # Substantive example (Brogden, 1946, 1949; # Cronbach and Gleser, 1965; Sturman, 2001). # Use an operating baseline rather than random selection. naive <- bcg_utility(.35, .20, 50000, n_selected = 100, tenure = 3, cost = 75000) incremental <- bcg_utility(.35, .20, 50000, n_selected = 100, tenure = 3, cost = 75000, baseline_validity = .20) c(naive = naive$net_utility, incremental = incremental$net_utility)# Literature: Brogden (1946, 1949); Cronbach and Gleser (1965); Sturman (2001). # Use the first call as a minimal example; the longer block illustrates # how to interpret the function in the substantive setting discussed in the literature. # Minimal example (Brogden (1946, 1949); Cronbach and Gleser (1965); Sturman (2001)). bcg_utility(validity = .35, selection_ratio = .20, sdy = 50000, n_selected = 100, tenure = 3, cost = 75000) # Substantive example (Brogden, 1946, 1949; # Cronbach and Gleser, 1965; Sturman, 2001). # Use an operating baseline rather than random selection. naive <- bcg_utility(.35, .20, 50000, n_selected = 100, tenure = 3, cost = 75000) incremental <- bcg_utility(.35, .20, 50000, n_selected = 100, tenure = 3, cost = 75000, baseline_validity = .20) c(naive = naive$net_utility, incremental = incremental$net_utility)
Computes discounted multi-period utility with optional value, tax, and cost
adjustments. The expected standardized criterion gain can be supplied directly
as delta_z_y, or computed from validity and selection-ratio parameters.
boudreau_utility( delta_z_y = NULL, validity = NULL, selection_ratio = NULL, baseline_validity = 0, baseline_selection_ratio = NULL, sdy, n_by_period = NULL, variable_value = 0, contribution_margin = NULL, variable_value_convention = c("paper_plus", "cost_rate"), tax_rate = 0, discount_rate = 0, cost_by_period = NULL, discount_costs = TRUE, n_t = NULL, cost_t = NULL )boudreau_utility( delta_z_y = NULL, validity = NULL, selection_ratio = NULL, baseline_validity = 0, baseline_selection_ratio = NULL, sdy, n_by_period = NULL, variable_value = 0, contribution_margin = NULL, variable_value_convention = c("paper_plus", "cost_rate"), tax_rate = 0, discount_rate = 0, cost_by_period = NULL, discount_costs = TRUE, n_t = NULL, cost_t = NULL )
delta_z_y |
Expected incremental standardized criterion gain. If |
validity |
Focal validity, used when |
selection_ratio |
Focal selection ratio, used when |
baseline_validity |
Baseline validity. Defaults to zero. |
baseline_selection_ratio |
Baseline selection ratio. Defaults to |
sdy |
Standard deviation of job performance in monetary units. |
n_by_period |
Vector of selected/retained employees in each period. This is
the preferred v0.4.0 name for the literature's |
variable_value |
Boudreau-style multiplier |
contribution_margin |
Optional contribution-margin multiplier. Overrides
|
variable_value_convention |
Either |
tax_rate |
Tax rate. |
discount_rate |
Discount rate. |
cost_by_period |
Cost in each period. Scalar or vector matching |
discount_costs |
Should costs be discounted by period? Defaults to |
n_t |
Legacy alias for |
cost_t |
Legacy alias for |
A psu_boudreau object.
Boudreau, J. W. (1983). Economic considerations in estimating the utility of human resource productivity improvement programs. Personnel Psychology, 36, 551-576.
Boudreau, J. W. (1991). Utility analysis for decisions in human resource management. In M. D. Dunnette & L. M. Hough (Eds.), Handbook of industrial and organizational psychology (Vol. 2, pp. 621-745). Consulting Psychologists Press.
Sturman, M. C. (2001). Utility analysis for multiple selection devices and multiple outcomes. Journal of Human Resource Costing and Accounting, 6(2), 9-28.
Holling, H. (1998). Utility analysis of personnel selection: An overview and empirical study based on objective performance measures. Methods of Psychological Research Online, 3(1), 5-24.
# Literature: Boudreau (1983, 1991); Sturman (2001); Holling (1998). # Use the first call as a minimal example; the longer block illustrates # how to interpret the function in the substantive setting discussed in the literature. # Minimal example (Boudreau (1983, 1991); Sturman (2001); Holling (1998)). boudreau_utility(validity = .35, selection_ratio = .20, sdy = 50000, n_by_period = c(100, 90, 80), discount_rate = .08, cost_by_period = c(75000, 10000, 10000)) # Substantive example (Boudreau, 1983, 1991; # Sturman, 2001; Holling, 1998). # Use an explicit contribution margin and operating baseline. boudreau_utility( validity = .35, baseline_validity = .20, selection_ratio = .20, sdy = 50000, n_by_period = c(100, 90, 80, 70), contribution_margin = .30, tax_rate = .25, discount_rate = .08, cost_by_period = c(75000, 10000, 10000, 10000) )# Literature: Boudreau (1983, 1991); Sturman (2001); Holling (1998). # Use the first call as a minimal example; the longer block illustrates # how to interpret the function in the substantive setting discussed in the literature. # Minimal example (Boudreau (1983, 1991); Sturman (2001); Holling (1998)). boudreau_utility(validity = .35, selection_ratio = .20, sdy = 50000, n_by_period = c(100, 90, 80), discount_rate = .08, cost_by_period = c(75000, 10000, 10000)) # Substantive example (Boudreau, 1983, 1991; # Sturman, 2001; Holling, 1998). # Use an explicit contribution margin and operating baseline. boudreau_utility( validity = .35, baseline_validity = .20, selection_ratio = .20, sdy = 50000, n_by_period = c(100, 90, 80, 70), contribution_margin = .30, tax_rate = .25, discount_rate = .08, cost_by_period = c(75000, 10000, 10000, 10000) )
Solves the validity needed to obtain zero net utility under the BCG model.
break_even_validity( selection_ratio, sdy, n_selected, tenure, cost = 0, baseline_validity = 0 )break_even_validity( selection_ratio, sdy, n_selected, tenure, cost = 0, baseline_validity = 0 )
selection_ratio |
Selection ratio. |
sdy |
SDy. |
n_selected |
Number selected. |
tenure |
Expected tenure. |
cost |
Cost. |
baseline_validity |
Baseline validity. |
Required focal validity.
Boudreau, J. W. (1991). Utility analysis for decisions in human resource management. In M. D. Dunnette & L. M. Hough (Eds.), Handbook of industrial and organizational psychology (Vol. 2, pp. 621-745). Consulting Psychologists Press.
Holling, H. (1998). Utility analysis of personnel selection: An overview and empirical study based on objective performance measures. Methods of Psychological Research Online, 3(1), 5-24.
# Literature: Boudreau (1991); Holling (1998). # Use the first call as a minimal example; the longer block illustrates # how to interpret the function in the substantive setting discussed in the literature. # Minimal example (Boudreau (1991); Holling (1998)). break_even_validity(.20, 50000, 100, 3, cost = 75000) # Substantive example (Boudreau, 1991; Holling, 1998). # Required incremental validity under different costs. costs <- c(25000, 75000, 150000) setNames( break_even_validity(.20, 50000, 100, 3, cost = costs, baseline_validity = .15), paste0('cost_', costs) )# Literature: Boudreau (1991); Holling (1998). # Use the first call as a minimal example; the longer block illustrates # how to interpret the function in the substantive setting discussed in the literature. # Minimal example (Boudreau (1991); Holling (1998)). break_even_validity(.20, 50000, 100, 3, cost = 75000) # Substantive example (Boudreau, 1991; Holling, 1998). # Required incremental validity under different costs. costs <- c(25000, 75000, 150000) setNames( break_even_validity(.20, 50000, 100, 3, cost = costs, baseline_validity = .15), paste0('cost_', costs) )
Computes the squared validity coefficient.
coefficient_of_determination(validity)coefficient_of_determination(validity)
validity |
Predictor-criterion validity coefficient. |
Numeric vector with validity^2.
Taylor, H. C., & Russell, J. T. (1939). The relationship of validity coefficients to the practical effectiveness of tests in selection. Journal of Applied Psychology, 23, 565-578.
Holling, H. (1998). Utility analysis of personnel selection: An overview and empirical study based on objective performance measures. Methods of Psychological Research Online, 3(1), 5-24.
# Literature: Taylor and Russell (1939); Holling (1998). coefficient_of_determination(.30)# Literature: Taylor and Russell (1939); Holling (1998). coefficient_of_determination(.30)
Computes analytic compensatory expected performance and simulated multiple-hurdle expected performance using the same predictor/criterion correlation structure.
compare_selection_systems( predictor_cor, validities, compensatory_weights = NULL, compensatory_selection_ratio, hurdle_selection_ratios, n_sim = 1e+05, seed = NULL, n_applicants = NA_real_, compensatory_cost_per_applicant = 0, hurdle_cost_per_stage = 0, sdy = NULL, applicant_n = NULL )compare_selection_systems( predictor_cor, validities, compensatory_weights = NULL, compensatory_selection_ratio, hurdle_selection_ratios, n_sim = 1e+05, seed = NULL, n_applicants = NA_real_, compensatory_cost_per_applicant = 0, hurdle_cost_per_stage = 0, sdy = NULL, applicant_n = NULL )
predictor_cor |
Predictor intercorrelation matrix. |
validities |
Vector of predictor-criterion correlations. |
compensatory_weights |
Weights for the compensatory composite. |
compensatory_selection_ratio |
Overall compensatory selection ratio. |
hurdle_selection_ratios |
Marginal selection ratios for hurdle stages. |
n_sim |
Number of simulated applicants for the hurdle system. |
seed |
Optional random seed. |
n_applicants |
Optional number of real applicants. |
compensatory_cost_per_applicant |
Cost per applicant for the compensatory system. |
hurdle_cost_per_stage |
Cost per applicant assessed at each hurdle. |
sdy |
Optional monetary value of one criterion standard deviation. |
applicant_n |
Legacy alias for |
A list with compensatory, multiple-hurdle, and difference summaries.
Ock, J., & Oswald, F. L. (2018). The utility of personnel selection decisions: Comparing compensatory and multiple-hurdle selection models. Journal of Personnel Psychology, 17(4), 172-182.
# Literature: Ock and Oswald (2018). # Minimal example (Ock and Oswald (2018)). Rxx <- matrix(c(1, .30, .30, 1), 2, 2) compare_selection_systems(Rxx, c(.40, .30), hurdle_selection_ratios = c(.50, .50), compensatory_selection_ratio = .25, n_sim = 1000, seed = 1) # Substantive example with monetary utility. compare_selection_systems( predictor_cor = Rxx, validities = c(.40, .30), compensatory_selection_ratio = .25, hurdle_selection_ratios = c(.50, .50), n_sim = 5000, seed = 123, n_applicants = 400, compensatory_cost_per_applicant = 800, hurdle_cost_per_stage = c(100, 300), sdy = 50000 )# Literature: Ock and Oswald (2018). # Minimal example (Ock and Oswald (2018)). Rxx <- matrix(c(1, .30, .30, 1), 2, 2) compare_selection_systems(Rxx, c(.40, .30), hurdle_selection_ratios = c(.50, .50), compensatory_selection_ratio = .25, n_sim = 1000, seed = 1) # Substantive example with monetary utility. compare_selection_systems( predictor_cor = Rxx, validities = c(.40, .30), compensatory_selection_ratio = .25, hurdle_selection_ratios = c(.50, .50), n_sim = 5000, seed = 123, n_applicants = 400, compensatory_cost_per_applicant = 800, hurdle_cost_per_stage = c(100, 300), sdy = 50000 )
Compares a compensatory top-down composite against a staged multiple-hurdle system in which stages can be composites.
compare_selection_systems_staged( predictor_cor, validities, compensatory_weights = NULL, compensatory_selection_ratio, stage_predictors, stage_selection_ratios, stage_weights = NULL, n_sim = 1e+05, seed = NULL, n_applicants = NA_real_, compensatory_cost_per_applicant = 0, hurdle_cost_per_stage = 0, sdy = NULL, applicant_n = NULL )compare_selection_systems_staged( predictor_cor, validities, compensatory_weights = NULL, compensatory_selection_ratio, stage_predictors, stage_selection_ratios, stage_weights = NULL, n_sim = 1e+05, seed = NULL, n_applicants = NA_real_, compensatory_cost_per_applicant = 0, hurdle_cost_per_stage = 0, sdy = NULL, applicant_n = NULL )
predictor_cor |
Predictor intercorrelation matrix. |
validities |
Vector of predictor-criterion correlations. |
compensatory_weights |
Weights for the compensatory composite. |
compensatory_selection_ratio |
Overall compensatory selection ratio. |
stage_predictors |
List of integer vectors defining staged predictors. |
stage_selection_ratios |
Within-stage selection ratios. |
stage_weights |
Optional list of weight vectors. |
n_sim |
Number of simulated applicants for the staged system. |
seed |
Optional random seed. |
n_applicants |
Optional number of real applicants. |
compensatory_cost_per_applicant |
Cost per applicant for the compensatory system. |
hurdle_cost_per_stage |
Cost per applicant assessed at each hurdle. |
sdy |
Optional monetary value of one criterion standard deviation. |
applicant_n |
Legacy alias for |
A list with compensatory, staged multiple-hurdle, and difference summaries.
Ock, J., & Oswald, F. L. (2018). The utility of personnel selection decisions: Comparing compensatory and multiple-hurdle selection models. Journal of Personnel Psychology, 17(4), 172-182.
# Literature: Ock and Oswald (2018). # Use the first call as a minimal example; the longer block illustrates # how to interpret the function in the substantive setting discussed in the literature. # Minimal example (Ock and Oswald (2018)). Rxx <- diag(4); Rxx[lower.tri(Rxx)] <- Rxx[upper.tri(Rxx)] <- .20 compare_selection_systems_staged(Rxx, validities = c(.40, .35, .20, .30), compensatory_selection_ratio = .20, stage_predictors = list(1:3, 4), stage_selection_ratios = c(.25, .80), n_sim = 1000, seed = 1) # Substantive Ock-Oswald-style staged comparison. compare_selection_systems_staged( predictor_cor = Rxx, validities = c(.40, .35, .20, .30), compensatory_weights = rep(1, 4), compensatory_selection_ratio = .20, stage_predictors = list(c(1, 3, 4), 2), stage_selection_ratios = c(.25, .80), n_sim = 5000, seed = 123, n_applicants = 500, compensatory_cost_per_applicant = 1000, hurdle_cost_per_stage = c(100, 900), sdy = 60000 )# Literature: Ock and Oswald (2018). # Use the first call as a minimal example; the longer block illustrates # how to interpret the function in the substantive setting discussed in the literature. # Minimal example (Ock and Oswald (2018)). Rxx <- diag(4); Rxx[lower.tri(Rxx)] <- Rxx[upper.tri(Rxx)] <- .20 compare_selection_systems_staged(Rxx, validities = c(.40, .35, .20, .30), compensatory_selection_ratio = .20, stage_predictors = list(1:3, 4), stage_selection_ratios = c(.25, .80), n_sim = 1000, seed = 1) # Substantive Ock-Oswald-style staged comparison. compare_selection_systems_staged( predictor_cor = Rxx, validities = c(.40, .35, .20, .30), compensatory_weights = rep(1, 4), compensatory_selection_ratio = .20, stage_predictors = list(c(1, 3, 4), 2), stage_selection_ratios = c(.25, .80), n_sim = 5000, seed = 123, n_applicants = 500, compensatory_cost_per_applicant = 1000, hurdle_cost_per_stage = c(100, 900), sdy = 60000 )
Computes the expected standardized criterion performance of applicants selected on a weighted predictor composite. This is the compensatory cell of the package taxonomy: scores on stronger predictors can offset lower scores on weaker ones.
compensatory_selection( predictor_cor, validities, weights = NULL, selection_ratio, n_applicants = NA_real_, cost_per_applicant = 0, sdy = NULL, applicant_n = NULL )compensatory_selection( predictor_cor, validities, weights = NULL, selection_ratio, n_applicants = NA_real_, cost_per_applicant = 0, sdy = NULL, applicant_n = NULL )
predictor_cor |
Predictor intercorrelation matrix, denoted |
validities |
Vector of predictor-criterion correlations, denoted |
weights |
Composite weights. Defaults to validity weights. |
selection_ratio |
Overall selection ratio for top-down selection on the composite. |
n_applicants |
Number of applicants, used for cost calculations. Preferred name in v0.4.0. |
cost_per_applicant |
Cost per assessed applicant. |
sdy |
Optional monetary value of one criterion standard deviation. |
applicant_n |
Legacy alias for |
A psu_comparison object.
Naylor, J. C., & Shine, L. C. (1965). A table for determining the increase in mean criterion score obtained by using a selection device. Journal of Industrial Psychology, 3, 33-42.
Ock, J., & Oswald, F. L. (2018). The utility of personnel selection decisions: Comparing compensatory and multiple-hurdle selection models. Journal of Personnel Psychology, 17(4), 172-182.
# Literature: Naylor and Shine (1965); Ock and Oswald (2018). # Use the first call as a minimal example; the longer block illustrates # how to interpret the function in the substantive setting discussed in the literature. # Minimal example (Naylor and Shine (1965); Ock and Oswald (2018)). Rxx <- matrix(c(1, .30, .30, 1), 2, 2) compensatory_selection(Rxx, validities = c(.40, .30), selection_ratio = .20) # Substantive example with costs and SDy. Rxx <- matrix(c( 1.00, .30, .20, .30, 1.00, .25, .20, .25, 1.00 ), 3, 3, byrow = TRUE) compensatory_selection( predictor_cor = Rxx, validities = c(.45, .35, .25), weights = c(1, 1, 1), selection_ratio = .20, n_applicants = 500, cost_per_applicant = 250, sdy = 60000 )# Literature: Naylor and Shine (1965); Ock and Oswald (2018). # Use the first call as a minimal example; the longer block illustrates # how to interpret the function in the substantive setting discussed in the literature. # Minimal example (Naylor and Shine (1965); Ock and Oswald (2018)). Rxx <- matrix(c(1, .30, .30, 1), 2, 2) compensatory_selection(Rxx, validities = c(.40, .30), selection_ratio = .20) # Substantive example with costs and SDy. Rxx <- matrix(c( 1.00, .30, .20, .30, 1.00, .25, .20, .25, 1.00 ), 3, 3, byrow = TRUE) compensatory_selection( predictor_cor = Rxx, validities = c(.45, .35, .25), weights = c(1, 1, 1), selection_ratio = .20, n_applicants = 500, cost_per_applicant = 250, sdy = 60000 )
Computes Sackett-Ellingson-style composite d for a weighted battery.
composite_d(d, weights = NULL, predictor_cor = NULL, sd = NULL)composite_d(d, weights = NULL, predictor_cor = NULL, sd = NULL)
d |
Vector of standardized group differences or effect sizes. |
weights |
Composite weights. Defaults to equal weights. |
predictor_cor |
Predictor correlation matrix. Defaults to identity. |
sd |
Predictor standard deviations. Defaults to ones. |
Composite effect size.
Sackett, P. R., & Ellingson, J. E. (1997). The effects of forming multi- predictor composites on group differences and adverse impact. Personnel Psychology, 50, 707-721.
# Literature: Sackett and Ellingson (1997). composite_d(d = c(.80, .30), weights = c(.7, .3), predictor_cor = matrix(c(1, .30, .30, 1), 2, 2))# Literature: Sackett and Ellingson (1997). composite_d(d = c(.80, .30), weights = c(.7, .3), predictor_cor = matrix(c(1, .30, .30, 1), 2, 2))
Uses the common two-group approximation d = 2r / sqrt(1 - r^2).
cor_to_d(r)cor_to_d(r)
r |
Correlation coefficient. |
Cohen's d.
Schmidt, F. L., Hunter, J. E., & Pearlman, K. (1982). Assessing the economic impact of personnel programs on workforce productivity. Personnel Psychology, 35, 333-347.
Cohen, J. (1988). Statistical power analysis for the behavioral sciences (2nd ed.). Erlbaum.
# Literature: Cohen (1988); Schmidt, Hunter, and Pearlman (1982). cor_to_d(.30)# Literature: Cohen (1988); Schmidt, Hunter, and Pearlman (1982). cor_to_d(.30)
Corrects a restricted validity coefficient for direct range restriction on the predictor using the standard Thorndike Case II expression.
correct_r_direct_range_restriction( r_restricted, range_restriction_ratio = NULL, u = NULL )correct_r_direct_range_restriction( r_restricted, range_restriction_ratio = NULL, u = NULL )
r_restricted |
Restricted-sample validity coefficient. |
range_restriction_ratio |
Ratio of unrestricted to restricted predictor
standard deviations. This is the preferred v0.4.0 name for the literature's |
u |
Legacy alias for |
Corrected validity coefficient.
Sackett, P. R., Laczo, R. M., & Arvey, R. D. (2002). The effects of range restriction on estimates of criterion interrater reliability: Implications for validation research. Personnel Psychology, 55, 807-825.
Ree, M. J., Carretta, T. R., Earles, J. A., & Albert, W. (1994). Sign changes when correcting for range restriction: A note on Pearson's and Lawley's selection formulas. Journal of Applied Psychology, 79, 298-301.
Lawley, D. N. (1943). A note on Karl Pearson's selection formulae. Proceedings of the Royal Society of Edinburgh, Section A, 62, 28-30.
# Literature: Lawley (1943); Sackett, Laczo, and Arvey (2002); Ree et al. (1994). correct_r_direct_range_restriction(.25, range_restriction_ratio = 1.40) correct_r_direct_range_restriction(.25, u = 1.40)# Literature: Lawley (1943); Sackett, Laczo, and Arvey (2002); Ree et al. (1994). correct_r_direct_range_restriction(.25, range_restriction_ratio = 1.40) correct_r_direct_range_restriction(.25, u = 1.40)
Corrects an observed (restricted) correlation matrix for direct selection on a subset of variables and incidental selection on the remaining variables, using Lawley's (1943) multivariate formulae.
correct_r_lawley( sigma_restricted, selection_indices, sigma_ss_unrestricted, standardize = TRUE )correct_r_lawley( sigma_restricted, selection_indices, sigma_ss_unrestricted, standardize = TRUE )
sigma_restricted |
Observed (restricted) covariance or correlation matrix in the selected sample. Must be symmetric and positive semi-definite. |
selection_indices |
Integer vector indicating which rows/columns of
|
sigma_ss_unrestricted |
Unrestricted covariance submatrix for the
selection variables (the same dimension as
|
standardize |
Logical. If |
Let S index the variables on which selection was applied and U index
the remaining (incidentally restricted) variables. Given the observed
restricted covariance matrix Sigma_star and the unrestricted
covariance submatrix Sigma_SS_unrestricted for the selection variables,
Lawley's correction recovers the unrestricted covariance matrix:
for any partitioning into selection variables S and other variables U,V.
Sign changes flagged in sign_changes are not necessarily errors but
should be inspected: Ree et al. (1994) documented that legitimate Lawley
corrections can flip the sign of small predictor-criterion correlations
when the restriction matrix is large.
A list with components:
The corrected (unrestricted) covariance or
correlation matrix of the same dimension as sigma_restricted.
The input restricted matrix (echoed).
Indices treated as direct-selection variables.
Indices treated as incidentally restricted.
Vector of sd_restricted / sd_unrestricted per selection
variable, one of the standard summaries of restriction severity.
Integer count of off-diagonal entries whose sign differs between corrected and observed matrices, flagged in the spirit of Ree, Carretta, Earles & Albert (1994).
Lawley, D. N. (1943). A note on Karl Pearson's selection formulae. Proceedings of the Royal Society of Edinburgh, Section A, 62, 28-30.
Mendoza, J. L., & Mumford, M. D. (1987). Corrections for attenuation and range restriction on the predictor. Journal of Educational and Behavioral Statistics, 12, 282-293.
Ree, M. J., Carretta, T. R., Earles, J. A., & Albert, W. (1994). Sign changes when correcting for range restriction: A note on Pearson's and Lawley's selection formulas. Journal of Applied Psychology, 79, 298-301.
Sackett, P. R., Lievens, F., Berry, C. M., & Landers, R. N. (2007). A cautionary note on the effects of range restriction on predictor intercorrelations. Journal of Applied Psychology, 92, 538-544.
# Three-variable example: selection on X1 (cognitive ability), # incidental restriction on X2 (interview) and Y (criterion). sigma_star <- matrix(c( 1.00, 0.30, 0.25, 0.30, 1.00, 0.20, 0.25, 0.20, 1.00 ), 3, 3) # Unrestricted SD of X1 is larger; var increases by factor 1/u^2 = 1/.6^2 sigma_ss <- matrix(1 / 0.6^2, 1, 1) correct_r_lawley(sigma_star, selection_indices = 1, sigma_ss_unrestricted = sigma_ss)# Three-variable example: selection on X1 (cognitive ability), # incidental restriction on X2 (interview) and Y (criterion). sigma_star <- matrix(c( 1.00, 0.30, 0.25, 0.30, 1.00, 0.20, 0.25, 0.20, 1.00 ), 3, 3) # Unrestricted SD of X1 is larger; var increases by factor 1/u^2 = 1/.6^2 sigma_ss <- matrix(1 / 0.6^2, 1, 1) correct_r_lawley(sigma_star, selection_indices = 1, sigma_ss_unrestricted = sigma_ss)
Uses .
d_to_cor(d)d_to_cor(d)
d |
Cohen's d. |
Correlation coefficient.
Schmidt, F. L., Hunter, J. E., & Pearlman, K. (1982). Assessing the economic impact of personnel programs on workforce productivity. Personnel Psychology, 35, 333-347.
Cohen, J. (1988). Statistical power analysis for the behavioral sciences (2nd ed.). Erlbaum.
# Literature: Cohen (1988); Schmidt, Hunter, and Pearlman (1982). d_to_cor(.50)# Literature: Cohen (1988); Schmidt, Hunter, and Pearlman (1982). d_to_cor(.50)
Converts a standardized mean difference to the point-biserial correlation
implied by a dichotomous criterion with base rate . The implemented
formula is . When
base_rate = .50, this reduces to the common equal-group conversion
.
d_to_point_biserial(d, base_rate = 0.5)d_to_point_biserial(d, base_rate = 0.5)
d |
Cohen's d. Must be numeric and finite. |
base_rate |
Proportion in the focal or successful group, usually denoted
|
Numeric vector of point-biserial correlations.
Cohen, J. (1988). Statistical power analysis for the behavioral sciences (2nd ed.). Erlbaum.
Rice, M. E., & Harris, G. T. (2005). Comparing effect sizes in follow-up studies: ROC area, Cohen's d, and r. Law and Human Behavior, 29(5), 615-620.
Salgado, J. F. (2018). Transforming the area under the normal curve (AUC) into Cohen's d, Pearson's r_pb, odds-ratio, and natural log odds-ratio: Two conversion tables. The European Journal of Psychology Applied to Legal Context, 10(1), 35-47.
# Minimal example: equal base-rate conversion equals d_to_cor(). d_to_point_biserial(.50, base_rate = .50) d_to_cor(.50) # Unequal base rates reduce the attainable point-biserial correlation. d_to_point_biserial(.50, base_rate = c(.50, .20, .10))# Minimal example: equal base-rate conversion equals d_to_cor(). d_to_point_biserial(.50, base_rate = .50) d_to_cor(.50) # Unequal base rates reduce the attainable point-biserial correlation. d_to_point_biserial(.50, base_rate = c(.50, .20, .10))
Corrects an observed correlation for unreliability in either or both variables.
disattenuate_correlation(r_observed, reliability_x = 1, reliability_y = 1)disattenuate_correlation(r_observed, reliability_x = 1, reliability_y = 1)
r_observed |
Observed correlation. |
reliability_x |
Reliability of |
reliability_y |
Reliability of |
Disattenuated correlation. Capped at +/- 1 with a warning when the algebraic value exceeds 1 in magnitude (typically a sign of unreliable reliability inputs).
Spearman, C. (1904). The proof and measurement of association between two things. American Journal of Psychology, 15, 72-101.
disattenuate_correlation(0.30, reliability_x = 0.80, reliability_y = 0.70)disattenuate_correlation(0.30, reliability_x = 0.80, reliability_y = 0.70)
Implements Budescu's (1993) dominance analysis to decompose the coefficient of determination of a multiple regression into contributions attributable to each predictor. Three dominance summaries are returned:
dominance_analysis(predictor_cor, predictor_criterion_cor)dominance_analysis(predictor_cor, predictor_criterion_cor)
predictor_cor |
Predictor correlation matrix |
predictor_criterion_cor |
Vector of predictor-criterion correlations
|
Complete dominance: predictor i completely dominates j
if R^2(S \cup {i}) > R^2(S \cup {j}) for every subset S not
containing i or j. Reported as a pairwise dominance matrix.
Conditional dominance: average increment of predictor i to
R^2 across subsets of size k, for k = 0, ..., p-1.
General dominance: the average of conditional dominance
values; equivalent to the Shapley value of R^2.
A list with components:
The full-model R^2.
Vector of length p whose entries sum to
r_squared_full.
p x p matrix; row i gives the average
contribution of predictor i at subset sizes 0, 1, ..., p-1.
p x p logical matrix where entry [i,j]
is TRUE if i completely dominates j, FALSE if j completely
dominates i, NA otherwise.
Azen, R., & Budescu, D. V. (2003). The dominance analysis approach for comparing predictors in multiple regression. Psychological Methods, 8, 129-148.
Budescu, D. V. (1993). Dominance analysis: A new approach to the problem of relative importance of predictors in multiple regression. Psychological Bulletin, 114, 542-551.
Rxx <- matrix(c(1, .30, .20, .30, 1, .25, .20, .25, 1), 3, 3) rxy <- c(.40, .30, .25) dominance_analysis(Rxx, rxy)Rxx <- matrix(c(1, .30, .20, .30, 1, .25, .20, .25, 1), 3, 3) rxy <- c(.40, .30, .25) dominance_analysis(Rxx, rxy)
Computes retained headcount after hires and losses: N_t = initial + cumsum(hired - lost).
employee_flow(hired, lost, initial = 0)employee_flow(hired, lost, initial = 0)
hired |
Number hired in each period. |
lost |
Number lost in each period. |
initial |
Initial headcount. |
Numeric vector of headcount by period.
Boudreau, J. W., & Berger, C. J. (1985). Decision-theoretic utility analysis applied to employee separations and acquisitions. Journal of Applied Psychology, 70, 581-612.
Boudreau, J. W. (1991). Utility analysis for decisions in human resource management. In M. D. Dunnette & L. M. Hough (Eds.), Handbook of industrial and organizational psychology (Vol. 2, pp. 621-745). Consulting Psychologists Press.
# Literature: Boudreau and Berger (1985); Boudreau (1991). employee_flow(hired = c(100, 20, 20), lost = c(0, 30, 25))# Literature: Boudreau and Berger (1985); Boudreau (1991). employee_flow(hired = c(100, 20, 20), lost = c(0, 30, 25))
Computes the proportional reduction in the standard error of prediction:
1 - sqrt(1 - validity^2).
forecasting_efficiency(validity)forecasting_efficiency(validity)
validity |
Predictor-criterion validity coefficient. |
Numeric vector with forecasting efficiency values.
Holling, H. (1998). Utility analysis of personnel selection: An overview and empirical study based on objective performance measures. Methods of Psychological Research Online, 3(1), 5-24.
# Literature: Holling (1998). forecasting_efficiency(.30)# Literature: Holling (1998). forecasting_efficiency(.30)
Given a stack of items and a weight matrix W whose columns are
composite-specific weight vectors, computes the correlation matrix
between the resulting composites under the standard Lord-Novick formula.
fuse_composite_cor(weights_matrix, item_cor)fuse_composite_cor(weights_matrix, item_cor)
weights_matrix |
|
item_cor |
|
m x m correlation matrix among composites.
R <- diag(4); R[lower.tri(R)] <- R[upper.tri(R)] <- .25 W <- cbind(c(1, 1, 0, 0), c(0, 0, 1, 1)) fuse_composite_cor(W, R)R <- diag(4); R[lower.tri(R)] <- R[upper.tri(R)] <- .25 W <- cbind(c(1, 1, 0, 0), c(0, 0, 1, 1)) fuse_composite_cor(W, R)
Reliability of a weighted composite (Mosier, 1943; Lord & Novick, 1968)
fuse_reliability(weights, item_cor, item_reliabilities = NULL)fuse_reliability(weights, item_cor, item_reliabilities = NULL)
weights |
Numeric vector of composite weights. |
item_cor |
Symmetric correlation (or covariance) matrix among items. |
item_reliabilities |
Numeric vector of item reliabilities (length
equal to |
The reliability of the weighted composite.
Lord, F. M., & Novick, M. R. (1968). Statistical theories of mental test scores. Addison-Wesley.
Mosier, C. I. (1943). On the reliability of a weighted composite. Psychometrika, 8, 161-168.
R <- matrix(c(1, .3, .3, 1), 2, 2) fuse_reliability(c(.5, .5), R, item_reliabilities = c(.80, .85))R <- matrix(c(1, .3, .3, 1), 2, 2) fuse_reliability(c(.5, .5), R, item_reliabilities = c(.80, .85))
Implements the standard formula
for the correlation between a weighted composite of items and an external
criterion Y, where the items have correlations R_XX and individual
validities \rho_{XY} (Lord & Novick, 1968, Ch. 4).
fuse_validity(weights, item_cor, item_validities)fuse_validity(weights, item_cor, item_validities)
weights |
Composite weights. |
item_cor |
Predictor (item) correlation matrix. |
item_validities |
Item-level correlations with the external variable. |
Scalar correlation.
R <- matrix(c(1, .3, .3, 1), 2, 2) fuse_validity(c(.5, .5), R, item_validities = c(.30, .25))R <- matrix(c(1, .3, .3, 1), 2, 2) fuse_validity(c(.5, .5), R, item_validities = c(.30, .25))
Applies tr_multivariate() separately by group. This is useful for sensitivity
analyses in which base rates or correlation matrices differ across demographic
groups. It does not by itself establish legal compliance or fairness.
group_tr_multivariate( selection_ratios, base_rates, R_list, group_names = NULL, group_proportions = NULL )group_tr_multivariate( selection_ratios, base_rates, R_list, group_names = NULL, group_proportions = NULL )
selection_ratios |
Vector of marginal selection ratios, common to all groups, or a list of group-specific vectors. |
base_rates |
Numeric vector of group-specific base rates. |
R_list |
List of group-specific correlation matrices. |
group_names |
Optional group labels. |
group_proportions |
Optional population proportions. If supplied, they are normalized and used to compute overall weighted summaries. |
A list with group-level Taylor-Russell summaries and optional weighted overall metrics.
De Corte, W., Lievens, F., & Sackett, P. R. (2007). Combining predictors to achieve optimal trade-offs between selection quality and adverse impact. Journal of Applied Psychology, 92, 1380-1393.
Thomas, J. G., Owen, D. B., & Gunst, R. F. (1977). Improving the use of educational tests as selection tools. Journal of Educational Statistics, 2(1), 55-77.
# Literature: Thomas, Owen, and Gunst (1977); De Corte et al. (2007). R <- matrix(c(1, .30, .40, .30, 1, .35, .40, .35, 1), 3, 3) group_tr_multivariate(c(.50, .50), base_rates = c(.50, .40), R_list = list(R, R), group_names = c("A", "B"))# Literature: Thomas, Owen, and Gunst (1977); De Corte et al. (2007). R <- matrix(c(1, .30, .40, .30, 1, .35, .40, .35, 1), 3, 3) group_tr_multivariate(c(.50, .50), base_rates = c(.50, .40), R_list = list(R, R), group_names = c("A", "B"))
Computes the difference in restricted canonical validity between a baseline predictor set and an expanded predictor set.
incremental_validity( predictor_cor, predictor_criterion_cor, criterion_cor, criterion_weights, baseline_predictors, added_predictors = NULL, focal_predictors = NULL )incremental_validity( predictor_cor, predictor_criterion_cor, criterion_cor, criterion_weights, baseline_predictors, added_predictors = NULL, focal_predictors = NULL )
predictor_cor |
Predictor correlation matrix for all candidate predictors. |
predictor_criterion_cor |
Predictor-by-criterion correlation matrix. |
criterion_cor |
Criterion correlation matrix. |
criterion_weights |
Fixed criterion weights. |
baseline_predictors |
Integer indices of predictors already in the system. |
added_predictors |
Integer indices of predictors to add. Preferred name. |
focal_predictors |
Optional legacy/convenience alias for the expanded
predictor set. If supplied, |
A psu_incremental_validity object.
Sturman, M. C. (2001). Utility analysis for multiple selection devices and multiple outcomes. Journal of Human Resource Costing and Accounting, 6(2), 9-28.
# Literature: Sturman (2001). # Use the first call as a minimal example; the longer block illustrates # how to interpret the function in the substantive setting discussed in the literature. # Minimal example (Sturman (2001)). Rxx <- matrix(c(1, .30, .20, .30, 1, .25, .20, .25, 1), 3, 3) Rxy <- matrix(c(.30, .20, .25, .15, .10, .35), 3, 2, byrow = TRUE) Ryy <- matrix(c(1, .40, .40, 1), 2, 2) incremental_validity(Rxx, Rxy, Ryy, c(.6, .4), baseline_predictors = 1:2, added_predictors = 3) # Substantive example (Sturman (2001)): compare two possible additions to the same baseline. add_2 <- incremental_validity(Rxx, Rxy, Ryy, c(.6, .4), baseline_predictors = 1, added_predictors = 2) add_3 <- incremental_validity(Rxx, Rxy, Ryy, c(.6, .4), baseline_predictors = 1, added_predictors = 3) c(add_predictor_2 = add_2$incremental_validity, add_predictor_3 = add_3$incremental_validity)# Literature: Sturman (2001). # Use the first call as a minimal example; the longer block illustrates # how to interpret the function in the substantive setting discussed in the literature. # Minimal example (Sturman (2001)). Rxx <- matrix(c(1, .30, .20, .30, 1, .25, .20, .25, 1), 3, 3) Rxy <- matrix(c(.30, .20, .25, .15, .10, .35), 3, 2, byrow = TRUE) Ryy <- matrix(c(1, .40, .40, 1), 2, 2) incremental_validity(Rxx, Rxy, Ryy, c(.6, .4), baseline_predictors = 1:2, added_predictors = 3) # Substantive example (Sturman (2001)): compare two possible additions to the same baseline. add_2 <- incremental_validity(Rxx, Rxy, Ryy, c(.6, .4), baseline_predictors = 1, added_predictors = 2) add_3 <- incremental_validity(Rxx, Rxy, Ryy, c(.6, .4), baseline_predictors = 1, added_predictors = 3) c(add_predictor_2 = add_2$incremental_validity, add_predictor_3 = add_3$incremental_validity)
Computes i_a = i + f + i*f.
inflation_adjusted_rate(discount_rate, inflation_rate)inflation_adjusted_rate(discount_rate, inflation_rate)
discount_rate |
Real discount rate. |
inflation_rate |
Inflation rate. |
Inflation-adjusted discount rate.
Tziner, A., Meir, E. I., Dahan, M., & Birati, A. (1994). An investigation of the predictive validity and economic utility of the assessment center for the high- management level. Canadian Journal of Behavioural Science, 26, 228-245.
Holling, H. (1998). Utility analysis of personnel selection: An overview and empirical study based on objective performance measures. Methods of Psychological Research Online, 3(1), 5-24.
# Literature: Tziner et al. (1994); Holling (1998). inflation_adjusted_rate(.08, .025)# Literature: Tziner et al. (1994); Holling (1998). inflation_adjusted_rate(.08, .025)
Returns the package's working taxonomy: criterion scale crossed with selection structure. The taxonomy is designed to keep the Taylor-Russell, Brogden-Cronbach-Gleser, Sturman, Ock-Oswald, and Thomas-Owen-Gunst formulations distinct.
model_taxonomy()model_taxonomy()
A data frame with model families, decision structures, and package functions.
Thomas, J. G., Owen, D. B., & Gunst, R. F. (1977). Improving the use of educational tests as selection tools. Journal of Educational Statistics, 2(1), 55-77.
Ock, J., & Oswald, F. L. (2018). The utility of personnel selection decisions: Comparing compensatory and multiple-hurdle selection models. Journal of Personnel Psychology, 17(4), 172-182.
# Literature: Thomas, Owen, and Gunst (1977); Ock and Oswald (2018). model_taxonomy()# Literature: Thomas, Owen, and Gunst (1977); Ock and Oswald (2018). model_taxonomy()
Computes additive multi-attribute utility sum(weights * utilities) for one or
more alternatives.
multiattribute_utility(values, weights, utility_functions = NULL)multiattribute_utility(values, weights, utility_functions = NULL)
values |
Numeric vector or matrix of attribute values. Alternatives are rows. |
weights |
Attribute weights. They are normalized to sum to one. |
utility_functions |
Optional list of transformation functions, one per attribute. |
Numeric utility score per alternative.
Keeney, R. L., & Raiffa, H. (1976). Decisions with multiple objectives: Preferences and value tradeoffs. Wiley.
Roth, P. L., & Bobko, P. (1997). A research agenda for multi-attribute utility analysis in human resource management. Human Resource Management Review, 7, 341-368.
Roth, P. L. (1994). Multi-attribute utility analysis using the PROMES approach. Journal of Business and Psychology, 9, 69-80.
# Literature: Keeney and Raiffa (1976); Roth (1994); Roth and Bobko (1997). multiattribute_utility(matrix(c(80, .90, 70, .95), nrow = 2, byrow = TRUE), weights = c(.7, .3))# Literature: Keeney and Raiffa (1976); Roth (1994); Roth and Bobko (1997). multiattribute_utility(matrix(c(80, .90, 70, .95), nrow = 2, byrow = TRUE), weights = c(.7, .3))
Simulates expected standardized criterion performance under conjunctive
multiple-hurdle selection. Predictors are first in R; criterion is last.
Candidates pass only if they exceed all marginal cutoffs.
multiple_hurdle_selection( selection_ratios, R, n_sim = 1e+05, seed = NULL, n_applicants = NA_real_, cost_per_stage = 0, sdy = NULL, applicant_n = NULL )multiple_hurdle_selection( selection_ratios, R, n_sim = 1e+05, seed = NULL, n_applicants = NA_real_, cost_per_stage = 0, sdy = NULL, applicant_n = NULL )
selection_ratios |
Marginal selection ratios for each hurdle. |
R |
Correlation matrix for predictors and criterion, criterion last. |
n_sim |
Number of simulated applicants. |
seed |
Optional random seed. |
n_applicants |
Number of real applicants, used for cost calculations. |
cost_per_stage |
Cost per applicant at each stage. Scalar or vector. |
sdy |
Optional monetary value of one criterion standard deviation. |
applicant_n |
Legacy alias for |
A psu_comparison object.
Ock, J., & Oswald, F. L. (2018). The utility of personnel selection decisions: Comparing compensatory and multiple-hurdle selection models. Journal of Personnel Psychology, 17(4), 172-182.
# Literature: Sackett and Roth (1996); Ock and Oswald (2018). # Minimal example (Sackett and Roth (1996); Ock and Oswald (2018)). R <- matrix(c(1, .30, .40, .30, 1, .30, .40, .30, 1), 3, 3) multiple_hurdle_selection(c(.50, .50), R, n_sim = 1000, seed = 1) # Substantive example with two marginal hurdles and costs. multiple_hurdle_selection( selection_ratios = c(.40, .50), R = R, n_sim = 5000, seed = 123, n_applicants = 500, cost_per_stage = c(100, 400), sdy = 60000 )# Literature: Sackett and Roth (1996); Ock and Oswald (2018). # Minimal example (Sackett and Roth (1996); Ock and Oswald (2018)). R <- matrix(c(1, .30, .40, .30, 1, .30, .40, .30, 1), 3, 3) multiple_hurdle_selection(c(.50, .50), R, n_sim = 1000, seed = 1) # Substantive example with two marginal hurdles and costs. multiple_hurdle_selection( selection_ratios = c(.40, .50), R = R, n_sim = 5000, seed = 123, n_applicants = 500, cost_per_stage = c(100, 400), sdy = 60000 )
Simulates a sequential multiple-hurdle design in which each stage can be one predictor or a composite of predictors. This matches Ock-Oswald-style designs: an inexpensive first-stage composite can screen applicants before a later, more expensive stage such as a structured interview.
multiple_hurdle_selection_staged( stage_predictors, stage_selection_ratios, R, stage_weights = NULL, n_sim = 1e+05, seed = NULL, n_applicants = NA_real_, cost_per_stage = 0, sdy = NULL, applicant_n = NULL )multiple_hurdle_selection_staged( stage_predictors, stage_selection_ratios, R, stage_weights = NULL, n_sim = 1e+05, seed = NULL, n_applicants = NA_real_, cost_per_stage = 0, sdy = NULL, applicant_n = NULL )
stage_predictors |
List of integer vectors. Each element gives the predictor columns used at that stage. |
stage_selection_ratios |
Vector of within-stage selection ratios. |
R |
Correlation matrix for predictors and criterion, criterion last. |
stage_weights |
Optional list of weight vectors. Defaults to unit weights within each stage. |
n_sim |
Number of simulated applicants. |
seed |
Optional random seed. |
n_applicants |
Number of real applicants, used for cost calculations. |
cost_per_stage |
Cost per applicant at each stage. Scalar or vector. |
sdy |
Optional monetary value of one criterion standard deviation. |
applicant_n |
Legacy alias for |
A psu_comparison object.
Ock, J., & Oswald, F. L. (2018). The utility of personnel selection decisions: Comparing compensatory and multiple-hurdle selection models. Journal of Personnel Psychology, 17(4), 172-182.
# Literature: Sackett and Roth (1996); Ock and Oswald (2018). # Use the first call as a minimal example; the longer block illustrates # how to interpret the function in the substantive setting discussed in the literature. # Minimal example (Sackett and Roth (1996); Ock and Oswald (2018)). R <- diag(5) R[lower.tri(R)] <- R[upper.tri(R)] <- .20 diag(R) <- 1 multiple_hurdle_selection_staged(list(1:3, 4), c(.25, .80), R, n_sim = 1000, seed = 1) # Substantive example (Sackett and Roth, 1996; # Ock and Oswald, 2018). # Use an inexpensive first-stage composite, then an interview. R <- matrix(c( 1.00, .41, .04, .46, .37, .41, 1.00, .18, .22, .35, .04, .18, 1.00, .66, .16, .46, .22, .66, 1.00, .23, .37, .35, .16, .23, 1.00 ), 5, 5, byrow = TRUE) multiple_hurdle_selection_staged( stage_predictors = list(c(1, 3, 4), 2), stage_selection_ratios = c(.25, .80), R = R, n_sim = 5000, seed = 123, n_applicants = 500, cost_per_stage = c(100, 900), sdy = 60000 )# Literature: Sackett and Roth (1996); Ock and Oswald (2018). # Use the first call as a minimal example; the longer block illustrates # how to interpret the function in the substantive setting discussed in the literature. # Minimal example (Sackett and Roth (1996); Ock and Oswald (2018)). R <- diag(5) R[lower.tri(R)] <- R[upper.tri(R)] <- .20 diag(R) <- 1 multiple_hurdle_selection_staged(list(1:3, 4), c(.25, .80), R, n_sim = 1000, seed = 1) # Substantive example (Sackett and Roth, 1996; # Ock and Oswald, 2018). # Use an inexpensive first-stage composite, then an interview. R <- matrix(c( 1.00, .41, .04, .46, .37, .41, 1.00, .18, .22, .35, .04, .18, 1.00, .66, .16, .46, .22, .66, 1.00, .23, .37, .35, .16, .23, 1.00 ), 5, 5, byrow = TRUE) multiple_hurdle_selection_staged( stage_predictors = list(c(1, 3, 4), 2), stage_selection_ratios = c(.25, .80), R = R, n_sim = 5000, seed = 123, n_applicants = 500, cost_per_stage = c(100, 900), sdy = 60000 )
Computes expected standardized criterion gain among selected applicants and,
optionally, converts it to utility using sdy, n_selected, tenure, and
cost. The expected standardized criterion gain is validity * selected_mean_z(selection_ratio).
naylor_shine( validity, selection_ratio, sdy = 1, n_selected = 1, tenure = 1, cost = 0 )naylor_shine( validity, selection_ratio, sdy = 1, n_selected = 1, tenure = 1, cost = 0 )
validity |
Predictor-criterion validity, usually denoted |
selection_ratio |
Selection ratio, usually denoted |
sdy |
Standard deviation of job performance in monetary or criterion units. |
n_selected |
Number of selected applicants. |
tenure |
Expected tenure or number of periods. |
cost |
Total cost. |
A psu_ns object.
Naylor, J. C., & Shine, L. C. (1965). A table for determining the increase in mean criterion score obtained by using a selection device. Journal of Industrial Psychology, 3, 33-42.
# Literature: Naylor and Shine (1965). # Use the first call as a minimal example; the longer block illustrates # how to interpret the function in the substantive setting discussed in the literature. # Minimal example: standardized criterion gain only. naylor_shine(validity = .35, selection_ratio = .20) # Substantive example (Naylor and Shine (1965)): standardized gain translated to monetary utility. naylor_shine( validity = .35, selection_ratio = .20, sdy = 50000, n_selected = 100, tenure = 3, cost = 75000 )# Literature: Naylor and Shine (1965). # Use the first call as a minimal example; the longer block illustrates # how to interpret the function in the substantive setting discussed in the literature. # Minimal example: standardized criterion gain only. naylor_shine(validity = .35, selection_ratio = .20) # Substantive example (Naylor and Shine (1965)): standardized gain translated to monetary utility. naylor_shine( validity = .35, selection_ratio = .20, sdy = 50000, n_selected = 100, tenure = 3, cost = 75000 )
Adjusts the expected standardized criterion score of accepted hires when offer recipients can decline. When the probability of accepting an offer is negatively correlated with candidate quality (top candidates have more outside options), the realized mean criterion of accepted hires is below the mean of selected (offered) candidates.
offer_rejection_adjustment( expected_z_offered, mode = c("uniform", "selective", "correlated"), acceptance_rate = 1, rho_quality_acceptance = 0, logit_intercept = NULL, logit_slope = NULL, n_offered = NULL )offer_rejection_adjustment( expected_z_offered, mode = c("uniform", "selective", "correlated"), acceptance_rate = 1, rho_quality_acceptance = 0, logit_intercept = NULL, logit_slope = NULL, n_offered = NULL )
expected_z_offered |
Expected standardized score of offered
candidates (e.g., |
mode |
One of |
acceptance_rate |
Expected proportion of offers accepted (used in all three modes for the headcount-scaling output). |
rho_quality_acceptance |
Correlation between standardized candidate
quality and acceptance propensity (used for |
logit_intercept, logit_slope
|
Logit link coefficients for
|
n_offered |
Optional integer; if supplied, the function also returns the expected number of accepted hires. |
Three modes are supported:
mode = "uniform": a fixed acceptance probability p independent
of candidate quality. The expected criterion of accepted hires equals
the expected criterion of those offered, but the realized headcount is
scaled by p.
mode = "selective": the probability of acceptance depends on
candidate standardized quality z through a logit link
logit(p) = a + b * z with b < 0 for adverse selection. The
adjusted mean criterion is computed by integrating the standard
normal weighted by the acceptance probability.
mode = "correlated": a closed-form approximation under the
assumption that quality and acceptance are jointly normal with
correlation rho_quality_acceptance. The adjustment is
for an acceptance threshold
z_p derived from the expected acceptance rate.
A list with expected_z_accepted, acceptance_rate,
effective_validity_loss (the difference between offered and accepted
means), and optionally expected_n_accepted.
Hogarth, R. M., & Einhorn, H. J. (1976). Optimal strategies for personnel selection when candidates can reject job offers. Journal of Business, 49, 479-495.
Murphy, K. R. (1986). When your top choice turns you down: Effect of rejected offers on the utility of selection tests. Psychological Bulletin, 99, 133-138.
z_offered <- selected_mean_z(0.20) # Uniform 70% acceptance rate, no quality dependence: offer_rejection_adjustment(z_offered, mode = "uniform", acceptance_rate = 0.70, n_offered = 100) # Adverse selection: top candidates more likely to decline. offer_rejection_adjustment(z_offered, mode = "correlated", acceptance_rate = 0.70, rho_quality_acceptance = -0.20, n_offered = 100)z_offered <- selected_mean_z(0.20) # Uniform 70% acceptance rate, no quality dependence: offer_rejection_adjustment(z_offered, mode = "uniform", acceptance_rate = 0.70, n_offered = 100) # Adverse selection: top candidates more likely to decline. offer_rejection_adjustment(z_offered, mode = "correlated", acceptance_rate = 0.70, rho_quality_acceptance = -0.20, n_offered = 100)
Identifies non-dominated alternatives for objectives to be maximized or minimized.
pareto_frontier(objectives, maximize = TRUE)pareto_frontier(objectives, maximize = TRUE)
objectives |
Numeric matrix/data frame. Alternatives are rows, objectives columns. |
maximize |
Logical vector indicating whether each objective is to be maximized. Scalar values are recycled. |
Logical vector indicating Pareto-efficient rows.
De Corte, W., Lievens, F., & Sackett, P. R. (2007). Combining predictors to achieve optimal trade-offs between selection quality and adverse impact. Journal of Applied Psychology, 92, 1380-1393. De Corte, W., Sackett, P. R., & Lievens, F. (2011). Designing Pareto-optimal selection systems: Formalizing the decisions required for selection system development. Journal of Applied Psychology, 96, 907-926.
# Literature: De Corte, Lievens, and Sackett (2007); De Corte, Sackett, and Lievens (2011). pareto_frontier(data.frame(validity = c(.30, .35, .32), diversity = c(.80, .70, .85)))# Literature: De Corte, Lievens, and Sackett (2007); De Corte, Sackett, and Lievens (2011). pareto_frontier(data.frame(validity = c(.30, .35, .32), diversity = c(.80, .70, .85)))
Computes the mean of a standard normal criterion among employees surviving a
probation rule Y >= probation_cutoff_z.
probation_adjustment(probation_cutoff_z)probation_adjustment(probation_cutoff_z)
probation_cutoff_z |
Probation cutoff on the standardized criterion. |
Expected standardized criterion score among survivors.
De Corte, W. (1994). Utility analysis for the one-cohort selection-retention decision with a probationary period. Journal of Applied Psychology, 79, 402-411.
Sturman, M. C. (2001). Utility analysis for multiple selection devices and multiple outcomes. Journal of Human Resource Costing and Accounting, 6(2), 9-28.
# Literature: De Corte (1994); Sturman (2001). probation_adjustment(-1)# Literature: De Corte (1994); Sturman (2001). probation_adjustment(-1)
A compact helper for selection systems where year 1 utility follows BCG and later periods include an additional survivor-performance gain caused by a probation cutoff.
probation_utility( validity, selection_ratio, sdy, n_selected, tenure, probation_cutoff_z, cost = 0 )probation_utility( validity, selection_ratio, sdy, n_selected, tenure, probation_cutoff_z, cost = 0 )
validity |
Predictor-criterion validity. |
selection_ratio |
Selection ratio. |
sdy |
Standard deviation of job performance in monetary units. |
n_selected |
Number of selected applicants in period 1. |
tenure |
Total number of periods. |
probation_cutoff_z |
Standardized criterion cutoff used after probation. |
cost |
Total cost. |
A psu_bcg object.
De Corte, W. (1994). Utility analysis for the one-cohort selection-retention decision with a probationary period. Journal of Applied Psychology, 79, 402-411.
Sturman, M. C. (2001). Utility analysis for multiple selection devices and multiple outcomes. Journal of Human Resource Costing and Accounting, 6(2), 9-28.
# Literature: De Corte (1994); Sturman (2001). probation_utility(.35, .20, 50000, 100, tenure = 3, probation_cutoff_z = -1)# Literature: De Corte (1994); Sturman (2001). probation_utility(.35, .20, 50000, 100, tenure = 3, probation_cutoff_z = -1)
Computes approximate relative weights for correlated predictors in a multiple regression with one criterion.
relative_weights(predictor_cor, criterion_cor)relative_weights(predictor_cor, criterion_cor)
predictor_cor |
Predictor correlation matrix. |
criterion_cor |
Vector of predictor-criterion correlations. |
A data frame with raw and rescaled relative weights.
Johnson, J. W. (2000). A heuristic method for estimating the relative weight of predictor variables in multiple regression. Multivariate Behavioral Research, 35, 1-19.
# Literature: Johnson (2000). relative_weights(matrix(c(1, .30, .30, 1), 2, 2), c(.40, .30))# Literature: Johnson (2000). relative_weights(matrix(c(1, .30, .30, 1), 2, 2), c(.40, .30))
Computes Sturman-style restricted canonical validity. Predictor weights are optimized, but criterion weights are fixed by the analyst.
restricted_canonical_validity( predictor_cor, predictor_criterion_cor, criterion_cor, criterion_weights )restricted_canonical_validity( predictor_cor, predictor_criterion_cor, criterion_cor, criterion_weights )
predictor_cor |
Predictor correlation matrix, |
predictor_criterion_cor |
Matrix of predictor-criterion correlations,
|
criterion_cor |
Criterion correlation matrix, |
criterion_weights |
Fixed criterion weights, |
A psu_incremental_validity object with restricted canonical validity
and optimized standardized predictor weights.
Sturman, M. C. (2001). Utility analysis for multiple selection devices and multiple outcomes. Journal of Human Resource Costing and Accounting, 6(2), 9-28.
# Literature: Sturman (2001). # Use the first call as a minimal example; the longer block illustrates # how to interpret the function in the substantive setting discussed in the literature. # Minimal example (Sturman (2001)). S11 <- matrix(c(1, .30, .30, 1), 2, 2) S12 <- matrix(c(.30, .20, .25, .15), 2, 2) S22 <- matrix(c(1, .40, .40, 1), 2, 2) restricted_canonical_validity(S11, S12, S22, criterion_weights = c(.6, .4)) # Substantive example (Sturman (2001)): change criterion weights and compare restricted validity. task_weighted <- restricted_canonical_validity(S11, S12, S22, c(.8, .2)) balanced <- restricted_canonical_validity(S11, S12, S22, c(.5, .5)) c(task_weighted = task_weighted$validity, balanced = balanced$validity)# Literature: Sturman (2001). # Use the first call as a minimal example; the longer block illustrates # how to interpret the function in the substantive setting discussed in the literature. # Minimal example (Sturman (2001)). S11 <- matrix(c(1, .30, .30, 1), 2, 2) S12 <- matrix(c(.30, .20, .25, .15), 2, 2) S22 <- matrix(c(1, .40, .40, 1), 2, 2) restricted_canonical_validity(S11, S12, S22, criterion_weights = c(.6, .4)) # Substantive example (Sturman (2001)): change criterion weights and compare restricted validity. task_weighted <- restricted_canonical_validity(S11, S12, S22, c(.8, .2)) balanced <- restricted_canonical_validity(S11, S12, S22, c(.5, .5)) c(task_weighted = task_weighted$validity, balanced = balanced$validity)
Computes a mean-variance risk-adjusted utility score. With risk_aversion = 0,
the score equals expected utility. Larger values penalize uncertainty more
strongly.
risk_adjusted_utility(expected_utility, utility_sd, risk_aversion = 0)risk_adjusted_utility(expected_utility, utility_sd, risk_aversion = 0)
expected_utility |
Expected utility or mean posterior/simulation utility. |
utility_sd |
Standard deviation of utility. |
risk_aversion |
Non-negative risk-aversion parameter. |
Risk-adjusted utility score.
Bhattacharya, M., & Wright, P. M. (2005). Managing human assets in an uncertain world: Applying real options theory to HRM. International Journal of Human Resource Management, 16, 929-948.
Cronshaw, S. F., Alexander, R. A., Wiesner, W. H., & Barrick, M. R. (1987). Incorporating risk into selection utility. Organizational Behavior and Human Decision Processes, 40, 270-286.
# Literature: Cronshaw et al. (1987); Bhattacharya and Wright (2005). risk_adjusted_utility(expected_utility = 100000, utility_sd = 25000, risk_aversion = 1e-6)# Literature: Cronshaw et al. (1987); Bhattacharya and Wright (2005). risk_adjusted_utility(expected_utility = 100000, utility_sd = 25000, risk_aversion = 1e-6)
Computes individual criterion values from production units and unit values, then returns the standard deviation of those values.
sdy_cost_accounting(units, unit_values, na.rm = TRUE)sdy_cost_accounting(units, unit_values, na.rm = TRUE)
units |
Numeric matrix or data frame. Rows are employees; columns are production units, activities, or outputs. |
unit_values |
Numeric vector of monetary values per unit. Length one or
one value per column of |
na.rm |
Should missing values be removed in the SD calculation? |
A list with individual criterion values and sdy.
Cronbach, L. J., & Gleser, G. C. (1965). Psychological tests and personnel decisions (2nd ed.). University of Illinois Press.
Holling, H. (1998). Utility analysis of personnel selection: An overview and empirical study based on objective performance measures. Methods of Psychological Research Online, 3(1), 5-24.
Cascio, W. F. (1982). Costing human resources: The financial impact of behavior in organizations. Kent.
# Literature: Cronbach and Gleser (1965); Cascio (1982); Holling (1998). sdy_cost_accounting(matrix(c(10, 12, 8, 11), ncol = 2), unit_values = c(100, 200))# Literature: Cronbach and Gleser (1965); Cascio (1982); Holling (1998). sdy_cost_accounting(matrix(c(10, 12, 8, 11), ncol = 2), unit_values = c(100, 200))
Computes a monetary performance index by weighting activity ratings with activity time/frequency and importance weights.
sdy_crepid( activities, ratings, salary, time_col = "time_frequency", importance_col = "importance", activity_names = NULL, na.rm = TRUE )sdy_crepid( activities, ratings, salary, time_col = "time_frequency", importance_col = "importance", activity_names = NULL, na.rm = TRUE )
activities |
Data frame with activity-level metadata. |
ratings |
Numeric matrix/data frame. Rows are employees, columns are activities. |
salary |
Average salary or criterion value to distribute across activities. |
time_col |
Name of the time/frequency column in |
importance_col |
Name of the importance column in |
activity_names |
Optional activity labels. |
na.rm |
Should missing values be removed in the SD calculation? |
A list with activity weights, individual criterion values, and sdy.
Cascio, W. F., & Ramos, R. A. (1986). Development and application of a new method for assessing job performance in behavioral/economic terms. Journal of Applied Psychology, 71, 20-28.
# Literature: Cascio and Ramos (1986). activities <- data.frame(time_frequency = c(.4, .6), importance = c(2, 3)) ratings <- matrix(c(3, 4, 2, 5, 4, 4), ncol = 2, byrow = TRUE) sdy_crepid(activities, ratings, salary = 80000)# Literature: Cascio and Ramos (1986). activities <- data.frame(time_frequency = c(.4, .6), importance = c(2, 3)) ratings <- matrix(c(3, 4, 2, 5, 4, 4), ncol = 2, byrow = TRUE) sdy_crepid(activities, ratings, salary = 80000)
Computes the observed standard deviation of job performance in monetary or productivity units. This is the direct empirical counterpart to subjective SDy estimation methods.
sdy_observed(y, na.rm = TRUE)sdy_observed(y, na.rm = TRUE)
y |
Numeric vector of monetary or productivity criterion values. |
na.rm |
Should missing values be removed? |
Observed SDy.
Holling, H. (1998). Utility analysis of personnel selection: An overview and empirical study based on objective performance measures. Methods of Psychological Research Online, 3(1), 5-24.
# Literature: Holling (1998). sdy_observed(c(100, 120, 80, 150))# Literature: Holling (1998). sdy_observed(c(100, 120, 80, 150))
Implements the percentile approximation SDy = (P85 - P15) / 2.
sdy_percentile(p15, p85)sdy_percentile(p15, p85)
p15 |
Estimated monetary value of performance at the 15th percentile. |
p85 |
Estimated monetary value of performance at the 85th percentile. |
Estimated standard deviation of job performance in monetary units.
Bobko, P., Karren, R., & Parkington, J. J. (1983). Estimation of standard deviations in utility analyses: An empirical test. Journal of Applied Psychology, 68, 170-176.
Schmidt, F. L., Hunter, J. E., McKenzie, R. C., & Muldrow, T. W. (1979). Impact of valid selection procedures on work-force productivity. Journal of Applied Psychology, 64, 609-626.
# Literature: Schmidt et al. (1979); Bobko, Karren, and Parkington (1983). sdy_percentile(p15 = 60000, p85 = 140000)# Literature: Schmidt et al. (1979); Bobko, Karren, and Parkington (1983). sdy_percentile(p15 = 60000, p85 = 140000)
Computes a salary- or value-based SDy estimate using a multiplier such as .40 or .70.
sdy_proportional(mean_pay, multiplier = 0.4)sdy_proportional(mean_pay, multiplier = 0.4)
mean_pay |
Mean pay or mean output value. |
multiplier |
Proportional SDy multiplier. Defaults to |
Estimated SDy.
Schmidt, F. L., Hunter, J. E., & Pearlman, K. (1982). Assessing the economic impact of personnel programs on workforce productivity. Personnel Psychology, 35, 333-347.
Hunter, J. E., & Schmidt, F. L. (1982). Fitting people to jobs: The impact of personnel selection on national productivity. In M. D. Dunnette & E. A. Fleishman (Eds.), Human performance and productivity (Vol. 1, pp. 233-284). Erlbaum.
# Literature: Schmidt, Hunter, and Pearlman (1982); Hunter and Schmidt (1982). sdy_proportional(mean_pay = 80000, multiplier = .40) sdy_proportional(mean_pay = 80000, multiplier = .70)# Literature: Schmidt, Hunter, and Pearlman (1982); Hunter and Schmidt (1982). sdy_proportional(mean_pay = 80000, multiplier = .40) sdy_proportional(mean_pay = 80000, multiplier = .70)
A compact implementation of the Raju-Burke-Normand logic: SDy = CV * mean_pay.
Use this function when the coefficient of variation is theoretically or
empirically justified for the job family.
sdy_rbn(mean_pay, coefficient_variation)sdy_rbn(mean_pay, coefficient_variation)
mean_pay |
Mean pay or mean criterion value. |
coefficient_variation |
Coefficient of variation for job performance value. |
Estimated SDy.
Raju, N. S., Burke, M. J., & Normand, J. (1990). A new approach for utility analysis. Journal of Applied Psychology, 75, 3-12.
# Literature: Raju, Burke, and Normand (1990). sdy_rbn(mean_pay = 80000, coefficient_variation = .35)# Literature: Raju, Burke, and Normand (1990). sdy_rbn(mean_pay = 80000, coefficient_variation = .35)
Computes SDy from a judged monetary difference between a superior and a typical performer, divided by the standardized distance assumed to separate them.
sdy_superior_equivalents(superior_value, typical_value, z_difference = 1)sdy_superior_equivalents(superior_value, typical_value, z_difference = 1)
superior_value |
Monetary value of the superior performer. |
typical_value |
Monetary value of the typical performer. |
z_difference |
Standardized distance between the two performers. Defaults
to |
Estimated SDy.
Eaton, N. K., Wing, H., & Mitchell, K. J. (1985). Alternate methods of estimating the dollar value of performance. Personnel Psychology, 38, 27-40.
Burke, M. J., & Frederick, J. T. (1984). Two modified procedures for estimating standard deviations in utility analyses. Journal of Applied Psychology, 69, 482-489.
Burke, M. J., & Frederick, J. T. (1986). A comparison of economic utility estimates for alternative SDy estimation procedures. Journal of Applied Psychology, 71, 334-339.
# Literature: Eaton, Wing, and Mitchell (1985); Burke and Frederick (1984, 1986). sdy_superior_equivalents(superior_value = 140000, typical_value = 100000)# Literature: Eaton, Wing, and Mitchell (1985); Burke and Frederick (1984, 1986). sdy_superior_equivalents(superior_value = 140000, typical_value = 100000)
Computes the mean of a standard normal predictor after top-down selection at a
given selection ratio: dnorm(qnorm(1 - selection_ratio)) / selection_ratio.
selected_mean_z(selection_ratio)selected_mean_z(selection_ratio)
selection_ratio |
Proportion of applicants selected. Must be in |
Numeric vector with expected standardized predictor scores.
Naylor, J. C., & Shine, L. C. (1965). A table for determining the increase in mean criterion score obtained by using a selection device. Journal of Industrial Psychology, 3, 33-42.
# Literature: Naylor and Shine (1965). selected_mean_z(c(.10, .20, .50))# Literature: Naylor and Shine (1965). selected_mean_z(c(.10, .20, .50))
Computes a 2x2 classification table from observed selected/success outcomes.
selection_table(selected, success)selection_table(selected, success)
selected |
Logical or 0/1 vector indicating selection. |
success |
Logical or 0/1 vector indicating criterion success. |
A list with table and classification metrics.
Thomas, J. G., Owen, D. B., & Gunst, R. F. (1977). Improving the use of educational tests as selection tools. Journal of Educational Statistics, 2(1), 55-77.
Taylor, H. C., & Russell, J. T. (1939). The relationship of validity coefficients to the practical effectiveness of tests in selection. Journal of Applied Psychology, 23, 565-578.
# Literature: Taylor and Russell (1939); Thomas, Owen, and Gunst (1977). selection_table(c(1, 1, 0, 0), c(1, 0, 1, 0))# Literature: Taylor and Russell (1939); Thomas, Owen, and Gunst (1977). selection_table(c(1, 1, 0, 0), c(1, 0, 1, 0))
Computes the Ock-Oswald/BCG-style utility expression
expected_criterion_z * sdy * n_selected - n_applicants * cost_per_applicant - fixed_cost
from an expected standardized criterion score among selected applicants.
selection_utility_from_z( expected_criterion_z, sdy, n_selected, n_applicants = n_selected, cost_per_applicant = 0, fixed_cost = 0, applicant_n = NULL )selection_utility_from_z( expected_criterion_z, sdy, n_selected, n_applicants = n_selected, cost_per_applicant = 0, fixed_cost = 0, applicant_n = NULL )
expected_criterion_z |
Expected criterion performance in standard deviation units. |
sdy |
Monetary value of one criterion standard deviation. |
n_selected |
Number of selected applicants. |
n_applicants |
Number of applicants assessed. This is the preferred name in v0.4.0. |
cost_per_applicant |
Cost per applicant assessed. |
fixed_cost |
Additional fixed cost. |
applicant_n |
Legacy alias for |
A psu_comparison object.
Cronbach, L. J., & Gleser, G. C. (1965). Psychological tests and personnel decisions (2nd ed.). University of Illinois Press.
Naylor, J. C., & Shine, L. C. (1965). A table for determining the increase in mean criterion score obtained by using a selection device. Journal of Industrial Psychology, 3, 33-42.
Brogden, H. E. (1946). On the interpretation of the correlation coefficient as a measure of predictive efficiency. Journal of Educational Psychology, 37, 65-76.
# Literature: Naylor and Shine (1965); Brogden (1946); Cronbach and Gleser (1965). # Minimal example: expected performance converted to monetary utility. selection_utility_from_z(1.25, sdy = 50000, n_selected = 20, n_applicants = 100, cost_per_applicant = 200) # Substantive example: compare two systems from expected criterion gains. compensatory <- selection_utility_from_z(1.25, 50000, n_selected = 20, n_applicants = 100, cost_per_applicant = 1000) hurdle <- selection_utility_from_z(.55, 50000, n_selected = 20, n_applicants = 100, cost_per_applicant = 300) compensatory$net_utility - hurdle$net_utility# Literature: Naylor and Shine (1965); Brogden (1946); Cronbach and Gleser (1965). # Minimal example: expected performance converted to monetary utility. selection_utility_from_z(1.25, sdy = 50000, n_selected = 20, n_applicants = 100, cost_per_applicant = 200) # Substantive example: compare two systems from expected criterion gains. compensatory <- selection_utility_from_z(1.25, 50000, n_selected = 20, n_applicants = 100, cost_per_applicant = 1000) hurdle <- selection_utility_from_z(.55, 50000, n_selected = 20, n_applicants = 100, cost_per_applicant = 300) compensatory$net_utility - hurdle$net_utility
Computes BCG net utility for all combinations of selected parameter values.
sensitivity_grid(validity, selection_ratio, sdy, n_selected, tenure, cost = 0)sensitivity_grid(validity, selection_ratio, sdy, n_selected, tenure, cost = 0)
validity |
Numeric vector of validities. |
selection_ratio |
Numeric vector of selection ratios. |
sdy |
Numeric vector of SDy values. |
n_selected |
Number selected. |
tenure |
Expected tenure. |
cost |
Cost. |
A data frame with one row per scenario.
Cronshaw, S. F., Alexander, R. A., Wiesner, W. H., & Barrick, M. R. (1987). Incorporating risk into selection utility. Organizational Behavior and Human Decision Processes, 40, 270-286.
Ock, J., & Oswald, F. L. (2018). The utility of personnel selection decisions: Comparing compensatory and multiple-hurdle selection models. Journal of Personnel Psychology, 17(4), 172-182.
Boudreau, J. W. (1991). Utility analysis for decisions in human resource management. In M. D. Dunnette & L. M. Hough (Eds.), Handbook of industrial and organizational psychology (Vol. 2, pp. 621-745). Consulting Psychologists Press.
# Literature: Cronshaw et al. (1987); Boudreau (1991); Ock and Oswald (2018). # Use the first call as a minimal example; the longer block illustrates # how to interpret the function in the substantive setting discussed in the literature. # Minimal example (Cronshaw et al. (1987); Boudreau (1991); Ock and Oswald (2018)). sensitivity_grid(validity = c(.20, .30), selection_ratio = c(.10, .20), sdy = c(40000, 60000), n_selected = 100, tenure = 3) # Substantive example (Cronshaw et al., 1987; Boudreau, 1991; # Ock and Oswald, 2018). Find the best sensitivity scenario. grid <- sensitivity_grid(validity = seq(.20, .40, .10), selection_ratio = c(.10, .20, .40), sdy = c(30000, 60000), n_selected = 100, tenure = 3, cost = 75000) grid[which.max(grid$net_utility), ]# Literature: Cronshaw et al. (1987); Boudreau (1991); Ock and Oswald (2018). # Use the first call as a minimal example; the longer block illustrates # how to interpret the function in the substantive setting discussed in the literature. # Minimal example (Cronshaw et al. (1987); Boudreau (1991); Ock and Oswald (2018)). sensitivity_grid(validity = c(.20, .30), selection_ratio = c(.10, .20), sdy = c(40000, 60000), n_selected = 100, tenure = 3) # Substantive example (Cronshaw et al., 1987; Boudreau, 1991; # Ock and Oswald, 2018). Find the best sensitivity scenario. grid <- sensitivity_grid(validity = seq(.20, .40, .10), selection_ratio = c(.10, .20, .40), sdy = c(30000, 60000), n_selected = 100, tenure = 3, cost = 75000) grid[which.max(grid$net_utility), ]
Computes utility from an intervention effect size rather than from a selection validity coefficient. This is appropriate for training or intervention designs where the key input is a standardized mean difference.
shp_utility(effect_size_d, sdy, n_treated, tenure, cost = 0)shp_utility(effect_size_d, sdy, n_treated, tenure, cost = 0)
effect_size_d |
Standardized mean difference caused by the intervention. |
sdy |
Standard deviation of job performance in monetary units. |
n_treated |
Number of employees receiving the intervention. |
tenure |
Expected duration of the effect in periods. |
cost |
Total intervention cost. |
A psu_shp object.
Schmidt, F. L., Hunter, J. E., & Pearlman, K. (1982). Assessing the economic impact of personnel programs on workforce productivity. Personnel Psychology, 35, 333-347.
Cohen, J. (1988). Statistical power analysis for the behavioral sciences (2nd ed.). Erlbaum.
# Literature: Schmidt, Hunter, and Pearlman (1982); Cohen (1988). # Use the first call as a minimal example; the longer block illustrates # how to interpret the function in the substantive setting discussed in the literature. # Minimal example (Schmidt, Hunter, and Pearlman (1982); Cohen (1988)). shp_utility(effect_size_d = .30, sdy = 50000, n_treated = 100, tenure = 2, cost = 40000) # Substantive example (Schmidt, Hunter, and Pearlman, 1982; # Cohen, 1988). Compare two training designs. short_training <- shp_utility(.20, 50000, n_treated = 120, tenure = 1, cost = 30000) intensive_training <- shp_utility(.35, 50000, n_treated = 120, tenure = 1, cost = 95000) c(short = short_training$net_utility, intensive = intensive_training$net_utility)# Literature: Schmidt, Hunter, and Pearlman (1982); Cohen (1988). # Use the first call as a minimal example; the longer block illustrates # how to interpret the function in the substantive setting discussed in the literature. # Minimal example (Schmidt, Hunter, and Pearlman (1982); Cohen (1988)). shp_utility(effect_size_d = .30, sdy = 50000, n_treated = 100, tenure = 2, cost = 40000) # Substantive example (Schmidt, Hunter, and Pearlman, 1982; # Cohen, 1988). Compare two training designs. short_training <- shp_utility(.20, 50000, n_treated = 120, tenure = 1, cost = 30000) intensive_training <- shp_utility(.35, 50000, n_treated = 120, tenure = 1, cost = 95000) c(short = short_training$net_utility, intensive = intensive_training$net_utility)
Composes the six adjustments of Sturman's (2001) comprehensive model (§15 of the package's accompanying review) into a single call. The returned object includes both the integrated comprehensive estimate and a stepwise cascade that documents the contribution of each adjustment.
sturman_comprehensive( validity, baseline_validity = 0, selection_ratio, sdy, n_year_one, tenure = 5, fixed_cost = 0, hires_per_period = NULL, losses_per_period = NULL, tax_rate = 0, discount_rate = 0, variable_value = 0, maintenance_cost_per_period = NULL, predictor_cor = NULL, predictor_criterion_cor = NULL, criterion_cor = NULL, criterion_weights = NULL, probation_cutoff_z = NULL, acceptance_rate = 1, quality_acceptance_correlation = 0 )sturman_comprehensive( validity, baseline_validity = 0, selection_ratio, sdy, n_year_one, tenure = 5, fixed_cost = 0, hires_per_period = NULL, losses_per_period = NULL, tax_rate = 0, discount_rate = 0, variable_value = 0, maintenance_cost_per_period = NULL, predictor_cor = NULL, predictor_criterion_cor = NULL, criterion_cor = NULL, criterion_weights = NULL, probation_cutoff_z = NULL, acceptance_rate = 1, quality_acceptance_correlation = 0 )
validity |
Focal-system validity (used directly when |
baseline_validity |
Operating-system baseline validity. Default 0 collapses to a random-baseline analysis, which the function will warn about. |
selection_ratio |
Selection ratio. |
sdy |
Standard deviation of job performance in monetary units. |
n_year_one |
Number of hires in year 1. |
tenure |
Horizon in years (>= 1). |
fixed_cost |
Year-1 selection cost (currency). |
hires_per_period, losses_per_period
|
Optional vectors of length
|
tax_rate, discount_rate, variable_value
|
Boudreau parameters. |
maintenance_cost_per_period |
Optional cost vector of length |
predictor_cor, predictor_criterion_cor, criterion_cor, criterion_weights
|
If supplied, the function computes the restricted canonical validity
from this multidimensional criterion specification and substitutes it
for |
probation_cutoff_z |
Standardized cutoff for the probation rule
(default |
acceptance_rate, quality_acceptance_correlation
|
Murphy's (1986)
offer-rejection adjustment. If |
The six adjustments combined here are: (1) baseline correction
(Sturman, 2000, 2001), (2) restricted canonical validity for a
multidimensional criterion, (3) multi-period employee flows, (4)
Boudreau-style economic adjustments (taxes, variable costs, discount
rate), (5) De Corte (1994) probation-period truncation, and optionally
(6) Murphy's (1986) offer-rejection adjustment. See bcg_utility(),
boudreau_utility(), restricted_canonical_validity(),
probation_adjustment(), employee_flow(), and
offer_rejection_adjustment() for the underlying components.
Object of class c("psu_sturman", "psu_utility") with
components: net_utility (final comprehensive estimate), cascade
(a data frame documenting each step), effective_validity,
effective_baseline_validity, and the relevant intermediate objects.
De Corte, W. (1994). Utility analysis for the one-cohort selection-retention decision with a probationary period. Journal of Applied Psychology, 79, 402-411.
Murphy, K. R. (1986). When your top choice turns you down: Effect of rejected offers on the utility of selection tests. Psychological Bulletin, 99, 133-138.
Sturman, M. C. (2000). Implications of utility analysis adjustments for estimates of human resource intervention value. Journal of Management, 26, 281-299.
Sturman, M. C. (2001). Utility analysis for multiple selection devices and multiple outcomes. Journal of Human Resource Costing and Accounting, 6(2), 9-28.
Rxx <- matrix(c(1, .30, .30, 1), 2, 2) Rxy <- matrix(c(.30, .10, .15, .25), 2, 2, byrow = TRUE) Ryy <- matrix(c(1, .40, .40, 1), 2, 2) sturman_comprehensive( validity = .35, baseline_validity = .20, selection_ratio = .20, sdy = 50000, n_year_one = 100, tenure = 5, fixed_cost = 75000, tax_rate = .25, discount_rate = .08, predictor_cor = Rxx, predictor_criterion_cor = Rxy, criterion_cor = Ryy, criterion_weights = c(.7, .3), probation_cutoff_z = -1, acceptance_rate = 0.70, quality_acceptance_correlation = -0.20 )Rxx <- matrix(c(1, .30, .30, 1), 2, 2) Rxy <- matrix(c(.30, .10, .15, .25), 2, 2, byrow = TRUE) Ryy <- matrix(c(1, .40, .40, 1), 2, 2) sturman_comprehensive( validity = .35, baseline_validity = .20, selection_ratio = .20, sdy = 50000, n_year_one = 100, tenure = 5, fixed_cost = 75000, tax_rate = .25, discount_rate = .08, predictor_cor = Rxx, predictor_criterion_cor = Rxy, criterion_cor = Ryy, criterion_weights = c(.7, .3), probation_cutoff_z = -1, acceptance_rate = 0.70, quality_acceptance_correlation = -0.20 )
Converts a Taylor-Russell success ratio into finite-sample probabilities. This follows the finite-sampling logic discussed by Thomas, Owen, and Gunst: once a conditional probability of success is known, the number of successful selected applicants in a finite cohort can be modeled with a binomial distribution.
tr_binomial_success_probability(n_selected, ppv, at_least = NULL)tr_binomial_success_probability(n_selected, ppv, at_least = NULL)
n_selected |
Number of selected applicants. |
ppv |
Positive predictive value / success ratio among selected applicants. |
at_least |
Optional threshold for computing |
A data frame with the full binomial distribution and, if requested, the cumulative upper-tail probability.
Thomas, J. G., Owen, D. B., & Gunst, R. F. (1977). Improving the use of educational tests as selection tools. Journal of Educational Statistics, 2(1), 55-77.
# Literature: Thomas, Owen, and Gunst (1977). tr_binomial_success_probability(n_selected = 20, ppv = .91, at_least = 18)# Literature: Thomas, Owen, and Gunst (1977). tr_binomial_success_probability(n_selected = 20, ppv = .91, at_least = 18)
Computes the Taylor-Russell classification table for one normally distributed predictor and one dichotomized criterion.
tr_classic(base_rate, selection_ratio, validity, digits = 3)tr_classic(base_rate, selection_ratio, validity, digits = 3)
base_rate |
Population proportion of successful applicants, |
selection_ratio |
Proportion selected, |
validity |
Predictor-criterion correlation. |
digits |
Number of digits used for printed summaries. |
A list with thresholds, TP, FP, FN, TN, PPV, sensitivity, specificity, and incremental success over the base rate.
Taylor, H. C., & Russell, J. T. (1939). The relationship of validity coefficients to the practical effectiveness of tests in selection. Journal of Applied Psychology, 23, 565-578.
Cascio, W. F. (1980). Responding to the demand for accountability: A critical analysis of three utility models. Organizational Behavior and Human Performance, 25, 32-45.
# Literature: Taylor and Russell (1939); Cascio (1980). # Use the first call as a minimal example; the longer block illustrates # how to interpret the function in the substantive setting discussed in the literature. # Minimal example (Taylor and Russell (1939); Cascio (1980)). tr_classic(base_rate = .50, selection_ratio = .20, validity = .35) # Substantive example (Taylor and Russell, 1939; Cascio, 1980). # Examine how selectivity changes the success ratio. low_sr <- tr_classic(base_rate = .50, selection_ratio = .10, validity = .35) high_sr <- tr_classic(base_rate = .50, selection_ratio = .50, validity = .35) c(low_selection_ratio = low_sr$ppv, high_selection_ratio = high_sr$ppv)# Literature: Taylor and Russell (1939); Cascio (1980). # Use the first call as a minimal example; the longer block illustrates # how to interpret the function in the substantive setting discussed in the literature. # Minimal example (Taylor and Russell (1939); Cascio (1980)). tr_classic(base_rate = .50, selection_ratio = .20, validity = .35) # Substantive example (Taylor and Russell, 1939; Cascio, 1980). # Examine how selectivity changes the success ratio. low_sr <- tr_classic(base_rate = .50, selection_ratio = .10, validity = .35) high_sr <- tr_classic(base_rate = .50, selection_ratio = .50, validity = .35) c(low_selection_ratio = low_sr$ppv, high_selection_ratio = high_sr$ppv)
Implements the Thomas-Owen-Gunst multivariate extension of the Taylor-Russell model. Candidates are selected if and only if they exceed all predictor cutoffs. The correlation matrix must include the predictors first and the criterion last.
tr_multivariate(selection_ratios, base_rate, R, digits = 3)tr_multivariate(selection_ratios, base_rate, R, digits = 3)
selection_ratios |
Vector of marginal selection ratios, one per predictor. |
base_rate |
Population proportion of successful applicants. |
R |
Correlation matrix of dimension |
digits |
Number of digits used for printed summaries. |
A psu_tr object with TP, FP, FN, TN, joint selection ratio, PPV,
sensitivity, specificity, and cutoffs.
Thomas, J. G., Owen, D. B., & Gunst, R. F. (1977). Improving the use of educational tests as selection tools. Journal of Educational Statistics, 2(1), 55-77.
Taylor, H. C., & Russell, J. T. (1939). The relationship of validity coefficients to the practical effectiveness of tests in selection. Journal of Applied Psychology, 23, 565-578.
Genz, A., & Bretz, F. (2009). Computation of multivariate normal and t probabilities. Springer.
# Literature: Taylor and Russell (1939); Thomas, Owen, and Gunst # (1977); Genz and Bretz (2009). # Use the first call as a minimal example; the longer block illustrates # how to interpret the function in the substantive setting discussed in the literature. # Minimal example (Taylor and Russell, 1939; # Thomas, Owen, and Gunst, 1977; Genz and Bretz, 2009). R <- matrix(c(1, .30, .40, .30, 1, .35, .40, .35, 1), nrow = 3, byrow = TRUE) tr_multivariate(selection_ratios = c(.50, .50), base_rate = .50, R = R) # Substantive example (Taylor and Russell, 1939; # Thomas, Owen, and Gunst, 1977; Genz and Bretz, 2009). # Compare two validity patterns under the same marginal cutoffs. R_stronger <- matrix(c(1, .30, .60, .30, 1, .55, .60, .55, 1), nrow = 3, byrow = TRUE) weak <- tr_multivariate(c(.50, .50), base_rate = .50, R = R) strong <- tr_multivariate(c(.50, .50), base_rate = .50, R = R_stronger) c(weak_ppv = weak$ppv, strong_ppv = strong$ppv)# Literature: Taylor and Russell (1939); Thomas, Owen, and Gunst # (1977); Genz and Bretz (2009). # Use the first call as a minimal example; the longer block illustrates # how to interpret the function in the substantive setting discussed in the literature. # Minimal example (Taylor and Russell, 1939; # Thomas, Owen, and Gunst, 1977; Genz and Bretz, 2009). R <- matrix(c(1, .30, .40, .30, 1, .35, .40, .35, 1), nrow = 3, byrow = TRUE) tr_multivariate(selection_ratios = c(.50, .50), base_rate = .50, R = R) # Substantive example (Taylor and Russell, 1939; # Thomas, Owen, and Gunst, 1977; Genz and Bretz, 2009). # Compare two validity patterns under the same marginal cutoffs. R_stronger <- matrix(c(1, .30, .60, .30, 1, .55, .60, .55, 1), nrow = 3, byrow = TRUE) weak <- tr_multivariate(c(.50, .50), base_rate = .50, R = R) strong <- tr_multivariate(c(.50, .50), base_rate = .50, R = R_stronger) c(weak_ppv = weak$ppv, strong_ppv = strong$ppv)
Thomas, Owen, and Gunst's printed tables are indexed by the overall proportion
selected under two equal cutoffs. This helper solves the common marginal
selection ratio that yields a target conjunctive selection ratio for any
predictor correlation matrix, then calls tr_multivariate().
tr_multivariate_equal_cutoff( joint_selection_ratio, base_rate, R, interval = NULL, tol = 1e-08, digits = 3 )tr_multivariate_equal_cutoff( joint_selection_ratio, base_rate, R, interval = NULL, tol = 1e-08, digits = 3 )
joint_selection_ratio |
Target conjunctive selection ratio,
|
base_rate |
Population proportion of successful applicants. |
R |
Correlation matrix with predictors first and criterion last. |
interval |
Optional search interval for the common marginal selection
ratio. Defaults to |
tol |
Numerical tolerance passed to |
digits |
Number of digits used for printed summaries. |
A psu_tr object from tr_multivariate() with the solved marginal
selection ratio, the target joint selection ratio, the computed joint
selection ratio, and the numerical joint-selection error added.
Thomas, J. G., Owen, D. B., & Gunst, R. F. (1977). Improving the use of educational tests as selection tools. Journal of Educational Statistics, 2(1), 55-77.
Waller, N. G. (2024). TaylorRussell: A Taylor-Russell function for multiple predictors (R package version 1.2.1). CRAN.
# Literature: Thomas, Owen, and Gunst (1977); Waller (2024). # Use the first call as a minimal example; the longer block illustrates # how to interpret the function in the substantive setting discussed in the literature. # Minimal example (Thomas, Owen, and Gunst (1977); Waller (2024)). R <- matrix(c(1, .50, .70, .50, 1, .70, .70, .70, 1), 3, 3, byrow = TRUE) tr_multivariate_equal_cutoff(joint_selection_ratio = .20, base_rate = .60, R = R) # Substantive example (Thomas, Owen, and Gunst, 1977; # Waller, 2024). Reproduce the Example 1 pattern. tog <- tr_multivariate_equal_cutoff(.20, .60, R) c(marginal_sr = tog$solved_marginal_selection_ratio, ppv = tog$ppv)# Literature: Thomas, Owen, and Gunst (1977); Waller (2024). # Use the first call as a minimal example; the longer block illustrates # how to interpret the function in the substantive setting discussed in the literature. # Minimal example (Thomas, Owen, and Gunst (1977); Waller (2024)). R <- matrix(c(1, .50, .70, .50, 1, .70, .70, .70, 1), 3, 3, byrow = TRUE) tr_multivariate_equal_cutoff(joint_selection_ratio = .20, base_rate = .60, R = R) # Substantive example (Thomas, Owen, and Gunst, 1977; # Waller, 2024). Reproduce the Example 1 pattern. tog <- tr_multivariate_equal_cutoff(.20, .60, R) c(marginal_sr = tog$solved_marginal_selection_ratio, ppv = tog$ppv)
Solves for one missing Taylor-Russell parameter among base rate, selection
ratio, validity, and PPV. Exactly one of the four arguments must be NULL.
The default validity interval is non-negative to match the classical
Taylor-Russell table convention and the defensive behavior of the
TaylorRussell::TR() implementation.
tr_solve( base_rate = NULL, selection_ratio = NULL, validity = NULL, ppv = NULL, interval = NULL, tol = 1e-08, allow_negative_validity = FALSE )tr_solve( base_rate = NULL, selection_ratio = NULL, validity = NULL, ppv = NULL, interval = NULL, tol = 1e-08, allow_negative_validity = FALSE )
base_rate |
Population proportion of successful applicants. |
selection_ratio |
Proportion selected. |
validity |
Predictor-criterion correlation. |
ppv |
Positive predictive value / success ratio among selected applicants. |
interval |
Search interval for the missing parameter. |
tol |
Numerical tolerance passed to |
allow_negative_validity |
Logical. Should the solver allow negative
validity when |
A psu_tr object containing the solved parameter and the resulting
Taylor-Russell table.
Taylor, H. C., & Russell, J. T. (1939). The relationship of validity coefficients to the practical effectiveness of tests in selection. Journal of Applied Psychology, 23, 565-578.
Waller, N. G. (2024). TaylorRussell: A Taylor-Russell function for multiple predictors (R package version 1.2.1). CRAN.
# Literature: Taylor and Russell (1939); Waller (2024). # Use the first call as a minimal example; the longer block illustrates # how to interpret the function in the substantive setting discussed in the literature. # Minimal example: solve validity from desired PPV. tr_solve(base_rate = .50, selection_ratio = .20, validity = NULL, ppv = .70) # Substantive example (Taylor and Russell, 1939; Waller, 2024). # Solve the selection ratio needed for a desired PPV. tr_solve(base_rate = .50, selection_ratio = NULL, validity = .35, ppv = .70)# Literature: Taylor and Russell (1939); Waller (2024). # Use the first call as a minimal example; the longer block illustrates # how to interpret the function in the substantive setting discussed in the literature. # Minimal example: solve validity from desired PPV. tr_solve(base_rate = .50, selection_ratio = .20, validity = NULL, ppv = .70) # Substantive example (Taylor and Russell, 1939; Waller, 2024). # Solve the selection ratio needed for a desired PPV. tr_solve(base_rate = .50, selection_ratio = NULL, validity = .35, ppv = .70)
Convenience wrapper around pareto_frontier() for selection-system alternatives
evaluated on utility, fairness, and optionally validity.
utility_fairness_frontier(utility, fairness, validity = NULL)utility_fairness_frontier(utility, fairness, validity = NULL)
utility |
Numeric vector of utility values to maximize. |
fairness |
Numeric vector of fairness values to maximize, for example an adverse-impact ratio where larger values indicate smaller subgroup disparity. |
validity |
Optional numeric vector of validity values to maximize. |
A data frame with frontier membership.
De Corte, W., Lievens, F., & Sackett, P. R. (2007). Combining predictors to achieve optimal trade-offs between selection quality and adverse impact. Journal of Applied Psychology, 92, 1380-1393.
Tippins, N. T., Oswald, F. L., & McPhail, S. M. (2021). Scientific, legal, and ethical concerns about AI-based personnel selection tools: A call to action. Personnel Assessment and Decisions, 7(2), Article 1.
# Literature: De Corte, Lievens, and Sackett (2007); Tippins, Oswald, and McPhail (2021). utility_fairness_frontier(utility = c(100, 120, 90), fairness = c(.80, .70, .95))# Literature: De Corte, Lievens, and Sackett (2007); Tippins, Oswald, and McPhail (2021). utility_fairness_frontier(utility = c(100, 120, 90), fairness = c(.80, .70, .95))
Samples validity and SDy and propagates them through the BCG model. This is a simple decision-support approximation, not a full Bayesian model.
utility_monte_carlo( n_sim = 10000, validity_mean, validity_se, sdy_mean, sdy_sd, selection_ratio, n_selected, tenure, cost = 0, baseline_validity = 0, seed = NULL )utility_monte_carlo( n_sim = 10000, validity_mean, validity_se, sdy_mean, sdy_sd, selection_ratio, n_selected, tenure, cost = 0, baseline_validity = 0, seed = NULL )
n_sim |
Number of simulations. |
validity_mean |
Mean validity. |
validity_se |
Standard error of validity. |
sdy_mean |
Mean SDy. |
sdy_sd |
Standard deviation of SDy uncertainty. |
selection_ratio |
Selection ratio. |
n_selected |
Number selected. |
tenure |
Expected tenure. |
cost |
Cost. |
baseline_validity |
Baseline validity. |
seed |
Optional random seed. |
A psu_monte_carlo object with draws and quantiles.
Alexander, R. A., & Barrick, M. R. (1987). Estimating the standard error of projected dollar gains in utility analysis. Journal of Applied Psychology, 72, 475-479.
Rich, J. R., & Boudreau, J. W. (1987). The effects of variability and risk on selection utility analysis. Personnel Psychology, 40, 55-84.
Ock, J., & Oswald, F. L. (2018). The utility of personnel selection decisions: Comparing compensatory and multiple-hurdle selection models. Journal of Personnel Psychology, 17(4), 172-182.
# Literature: Alexander and Barrick (1987); Rich and Boudreau (1987); Ock and Oswald (2018). # Use the first call as a minimal example; the longer block illustrates # how to interpret the function in the substantive setting discussed in the literature. # Minimal example (Alexander and Barrick (1987); Rich and Boudreau (1987); Ock and Oswald (2018)). utility_monte_carlo(n_sim = 1000, validity_mean = .35, validity_se = .05, sdy_mean = 50000, sdy_sd = 10000, selection_ratio = .20, n_selected = 100, tenure = 3, cost = 75000, seed = 1) # Substantive example (Alexander and Barrick, 1987; # Rich and Boudreau, 1987; Ock and Oswald, 2018). # Quantify the probability that net utility is positive. mc <- utility_monte_carlo(n_sim = 2000, validity_mean = .30, validity_se = .06, sdy_mean = 50000, sdy_sd = 15000, selection_ratio = .20, n_selected = 100, tenure = 3, cost = 75000, baseline_validity = .15, seed = 123) mc$probability_positive# Literature: Alexander and Barrick (1987); Rich and Boudreau (1987); Ock and Oswald (2018). # Use the first call as a minimal example; the longer block illustrates # how to interpret the function in the substantive setting discussed in the literature. # Minimal example (Alexander and Barrick (1987); Rich and Boudreau (1987); Ock and Oswald (2018)). utility_monte_carlo(n_sim = 1000, validity_mean = .35, validity_se = .05, sdy_mean = 50000, sdy_sd = 10000, selection_ratio = .20, n_selected = 100, tenure = 3, cost = 75000, seed = 1) # Substantive example (Alexander and Barrick, 1987; # Rich and Boudreau, 1987; Ock and Oswald, 2018). # Quantify the probability that net utility is positive. mc <- utility_monte_carlo(n_sim = 2000, validity_mean = .30, validity_se = .06, sdy_mean = 50000, sdy_sd = 15000, selection_ratio = .20, n_selected = 100, tenure = 3, cost = 75000, baseline_validity = .15, seed = 123) mc$probability_positive
Fits a simple linear model and returns empirical inputs and normality checks relevant to linear utility analysis.
utility_regression_diagnostics(x, y)utility_regression_diagnostics(x, y)
x |
Predictor scores. |
y |
Criterion scores in raw or monetary units. |
A list with sample size, validity, SDy, regression coefficients, residual summaries, optional Shapiro-Wilk tests, and the fitted model.
Holling, H. (1998). Utility analysis of personnel selection: An overview and empirical study based on objective performance measures. Methods of Psychological Research Online, 3(1), 5-24.
# Literature: Holling (1998). utility_regression_diagnostics(1:10, c(2, 3, 3, 5, 4, 6, 7, 8, 8, 10))# Literature: Holling (1998). utility_regression_diagnostics(1:10, c(2, 3, 3, 5, 4, 6, 7, 8, 8, 10))