Package {personnelSelectionUtility}


Title: Utility Analysis Methods for Personnel Selection
Version: 1.0.2
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.
License: MIT + file LICENSE
URL: https://github.com/rgempp/personnelSelectionUtility, https://gempp.cl/personnelSelectionUtility/
BugReports: https://github.com/rgempp/personnelSelectionUtility/issues
Depends: R (≥ 4.1.0)
Imports: mvtnorm, stats
Suggests: knitr, rmarkdown, testthat (≥ 3.0.0)
VignetteBuilder: knitr
Encoding: UTF-8
Config/testthat/edition: 3
Config/roxygen2/version: 8.0.0
NeedsCompilation: no
Packaged: 2026-05-16 00:24:02 UTC; rene.gempp
Author: René Gempp ORCID iD [aut, cre, cph]
Maintainer: René Gempp <rene.gempp@udp.cl>
Repository: CRAN
Date/Publication: 2026-05-20 08:50:02 UTC

personnelSelectionUtility: Utility analysis methods for personnel selection

Description

The goal of personnelSelectionUtility is to provide a comprehensive and user-friendly way to apply utility-analysis methods for personnel selection. It was created and is maintained by René Gempp to systematize state-of-the-art methods using consistent notation across classification, continuous, monetary, incremental-validity, simulation, and fairness-oriented summaries.

Details

The package is organized around two core decisions: the scale of the criterion (classification versus continuous/monetary outcomes) and the structure of the selection rule (compensatory versus conjunctive or staged multiple-hurdle systems). Start with model_taxonomy() and argument_glossary() to choose the appropriate family of functions. Use the AUC conversion helpers only when evidence is reported as AUC and a correlation-like effect-size input is needed.

Author

René Gempp, Facultad de Administración y Economía, Universidad Diego Portales. Email: rene.gempp@udp.cl. Website: https://gempp.cl.

Author(s)

Maintainer: René Gempp rene.gempp@udp.cl (ORCID) [copyright holder]

Authors:

References

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.

Brogden, H. E. (1949). When testing pays off. Personnel Psychology, 2, 171-183.

Cronbach, L. J., & Gleser, G. C. (1965). Psychological tests and personnel decisions (2nd ed.). University of Illinois Press.

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.

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.

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.

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.

Sturman, M. C. (2001). Utility analysis for multiple selection devices and multiple outcomes. Journal of Human Resource Costing and Accounting, 6(2), 9-28.

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.

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.

See Also

model_taxonomy(), argument_glossary(), tr_classic(), tr_multivariate(), bcg_utility(), boudreau_utility(), compare_selection_systems_staged(), auc_to_point_biserial().


Adverse-impact ratio by group

Description

Computes selection rates and adverse-impact ratios by group. If no reference group is supplied, the highest selection-rate group is used as reference.

Usage

adverse_impact_ratio(selected, group, reference = NULL)

Arguments

selected

Logical or 0/1 vector indicating selection.

group

Group membership vector.

reference

Optional reference group.

Value

A data frame with selection rates and ratios.

References

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.

Examples

# 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"))

Argument naming glossary

Description

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.

Usage

argument_glossary()

Value

A data frame with argument names, literature notation, and usage notes.

References

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.

Examples

# Literature: Holling (1998); Sturman (2001).
argument_glossary()
subset(argument_glossary(), argument %in% c("base_rate", "selection_ratio", "sdy"))

Convert AUC to Cohen's d under the equal-variance binormal model

Description

Converts AUC to Cohen's d using d = \sqrt{2}\Phi^{-1}(AUC). 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.

Usage

auc_to_d_equal_variance(auc)

Arguments

auc

Area under the ROC curve. Must be in ⁠(0, 1)⁠ because AUC values of 0 or 1 imply infinite d under the equal-variance binormal model.

Value

Numeric vector of Cohen's d values.

References

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.

Examples

# 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)

Convert AUC to a point-biserial correlation

Description

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.

Usage

auc_to_point_biserial(auc, base_rate = 0.5)

Arguments

auc

Area under the ROC curve. Must be in ⁠(0, 1)⁠ because AUC values of 0 or 1 imply infinite d under the equal-variance binormal model.

base_rate

Proportion in the focal or successful group, usually denoted p. Must be in ⁠(0, 1)⁠. The default is .50.

Value

Numeric vector of point-biserial correlations.

References

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.

Examples

# 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))

Superseded AUC-to-r conversion

Description

auc_to_r() is retained as a backward-compatible alias for auc_to_point_biserial() with base_rate = .50. New code should use the more explicit conversion family: auc_to_rank_biserial(), auc_to_d_equal_variance(), d_to_point_biserial(), and auc_to_point_biserial().

Usage

auc_to_r(auc, base_rate = 0.5)

Arguments

auc

Area under the ROC curve. Must be in ⁠(0, 1)⁠ because AUC values of 0 or 1 imply infinite d under the equal-variance binormal model.

base_rate

Proportion in the focal or successful group, usually denoted p. Must be in ⁠(0, 1)⁠. The default is .50.

Value

Numeric vector of point-biserial correlations.

References

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.

Examples

# Backward-compatible alias; prefer auc_to_point_biserial().
auc_to_r(.75)

Convert AUC to a rank-biserial correlation

Description

Converts the area under the ROC curve to the rank-biserial correlation, r_{rb} = 2 AUC - 1. 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.

Usage

auc_to_rank_biserial(auc)

Arguments

auc

Area under the ROC curve. Must be in ⁠[0, 1]⁠.

Value

Numeric vector of rank-biserial correlations.

References

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.

Examples

# 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)

Brogden-Cronbach-Gleser utility

Description

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.

Usage

bcg_utility(
  validity,
  selection_ratio,
  sdy,
  n_selected,
  tenure,
  cost = 0,
  baseline_validity = 0,
  baseline_selection_ratio = NULL
)

Arguments

validity

Validity of the focal selection system, usually denoted r_xy.

selection_ratio

Selection ratio of the focal system.

sdy

Standard deviation of job performance in monetary units, SD_y.

n_selected

Number of selected applicants, N_s.

tenure

Expected tenure or number of periods, T.

cost

Total cost of the focal system net of baseline costs, if relevant.

baseline_validity

Validity of the baseline system. Defaults to 0.

baseline_selection_ratio

Selection ratio of the baseline system. If NULL, it is assumed to equal selection_ratio.

Value

A psu_bcg object.

References

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.

Examples

# 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)

Boudreau-style discounted utility

Description

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.

Usage

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
)

Arguments

delta_z_y

Expected incremental standardized criterion gain. If NULL, it is computed from validity, selection_ratio, baseline_validity, and baseline_selection_ratio.

validity

Focal validity, used when delta_z_y is NULL.

selection_ratio

Focal selection ratio, used when delta_z_y is NULL.

baseline_validity

Baseline validity. Defaults to zero.

baseline_selection_ratio

Baseline selection ratio. Defaults to selection_ratio.

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 N_t.

variable_value

Boudreau-style multiplier V. By default the multiplier is (1 + variable_value), matching the printed Boudreau-style notation. Set variable_value_convention = "cost_rate" to use (1 - variable_value), or pass contribution_margin directly when the margin is known.

contribution_margin

Optional contribution-margin multiplier. Overrides variable_value when supplied.

variable_value_convention

Either "paper_plus" for (1 + V) or "cost_rate" for (1 - V).

tax_rate

Tax rate.

discount_rate

Discount rate.

cost_by_period

Cost in each period. Scalar or vector matching n_by_period.

discount_costs

Should costs be discounted by period? Defaults to TRUE.

n_t

Legacy alias for n_by_period. Use n_by_period in new code.

cost_t

Legacy alias for cost_by_period. Use cost_by_period in new code.

Value

A psu_boudreau object.

References

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.

Examples

# 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)
)

Break-even validity for BCG utility

Description

Solves the validity needed to obtain zero net utility under the BCG model.

Usage

break_even_validity(
  selection_ratio,
  sdy,
  n_selected,
  tenure,
  cost = 0,
  baseline_validity = 0
)

Arguments

selection_ratio

Selection ratio.

sdy

SDy.

n_selected

Number selected.

tenure

Expected tenure.

cost

Cost.

baseline_validity

Baseline validity.

Value

Required focal validity.

References

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.

Examples

# 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)
)

Coefficient of determination

Description

Computes the squared validity coefficient.

Usage

coefficient_of_determination(validity)

Arguments

validity

Predictor-criterion validity coefficient.

Value

Numeric vector with validity^2.

References

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.

Examples

# Literature: Taylor and Russell (1939); Holling (1998).
coefficient_of_determination(.30)

Compare compensatory and conjunctive multiple-hurdle selection systems

Description

Computes analytic compensatory expected performance and simulated multiple-hurdle expected performance using the same predictor/criterion correlation structure.

Usage

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
)

Arguments

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 n_applicants.

Value

A list with compensatory, multiple-hurdle, and difference summaries.

References

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.

Examples

# 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
)

Compare compensatory and staged multiple-hurdle selection systems

Description

Compares a compensatory top-down composite against a staged multiple-hurdle system in which stages can be composites.

Usage

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
)

Arguments

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 n_applicants.

Value

A list with compensatory, staged multiple-hurdle, and difference summaries.

References

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.

Examples

# 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
)

Expected performance under compensatory top-down selection

Description

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.

Usage

compensatory_selection(
  predictor_cor,
  validities,
  weights = NULL,
  selection_ratio,
  n_applicants = NA_real_,
  cost_per_applicant = 0,
  sdy = NULL,
  applicant_n = NULL
)

Arguments

predictor_cor

Predictor intercorrelation matrix, denoted R_XX.

validities

Vector of predictor-criterion correlations, denoted ⁠r_xi,y⁠.

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 n_applicants.

Value

A psu_comparison object.

References

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.

Examples

# 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
)

Composite effect size for a weighted predictor battery

Description

Computes Sackett-Ellingson-style composite d for a weighted battery.

Usage

composite_d(d, weights = NULL, predictor_cor = NULL, sd = NULL)

Arguments

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.

Value

Composite effect size.

References

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.

Examples

# 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))

Convert a correlation to Cohen's d

Description

Uses the common two-group approximation ⁠d = 2r / sqrt(1 - r^2)⁠.

Usage

cor_to_d(r)

Arguments

r

Correlation coefficient.

Value

Cohen's d.

References

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.

Examples

# Literature: Cohen (1988); Schmidt, Hunter, and Pearlman (1982).
cor_to_d(.30)

Direct range-restriction correction for selection on the predictor

Description

Corrects a restricted validity coefficient for direct range restriction on the predictor using the standard Thorndike Case II expression.

Usage

correct_r_direct_range_restriction(
  r_restricted,
  range_restriction_ratio = NULL,
  u = NULL
)

Arguments

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.

u

Legacy alias for range_restriction_ratio.

Value

Corrected validity coefficient.

References

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.

Examples

# 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)

Multivariate range-restriction correction (Lawley, 1943)

Description

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.

Usage

correct_r_lawley(
  sigma_restricted,
  selection_indices,
  sigma_ss_unrestricted,
  standardize = TRUE
)

Arguments

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_restricted correspond to variables on which selection was applied.

sigma_ss_unrestricted

Unrestricted covariance submatrix for the selection variables (the same dimension as sigma_restricted[selection_indices, selection_indices]). Typically estimated from applicant-pool data.

standardize

Logical. If TRUE (default), the corrected covariance matrix is converted to a correlation matrix via stats::cov2cor().

Details

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:

\Sigma_{UV} = \Sigma_{UV}^{*} + \Sigma_{US}^{*}\, (\Sigma_{SS}^{*})^{-1}\, (\Sigma_{SS} - \Sigma_{SS}^{*})\, (\Sigma_{SS}^{*})^{-1}\, \Sigma_{SV}^{*}

\Sigma_{UU} = \Sigma_{UU}^{*} + \Sigma_{US}^{*}\, (\Sigma_{SS}^{*})^{-1}\, (\Sigma_{SS} - \Sigma_{SS}^{*})\, (\Sigma_{SS}^{*})^{-1}\, \Sigma_{SU}^{*}

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.

Value

A list with components:

sigma_corrected

The corrected (unrestricted) covariance or correlation matrix of the same dimension as sigma_restricted.

sigma_restricted

The input restricted matrix (echoed).

selection_indices

Indices treated as direct-selection variables.

incidental_indices

Indices treated as incidentally restricted.

u

Vector of sd_restricted / sd_unrestricted per selection variable, one of the standard summaries of restriction severity.

sign_changes

Integer count of off-diagonal entries whose sign differs between corrected and observed matrices, flagged in the spirit of Ree, Carretta, Earles & Albert (1994).

References

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.

Examples

# 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)

Convert Cohen's d to a correlation

Description

Uses r = d / \sqrt{d^2 + 4}.

Usage

d_to_cor(d)

Arguments

d

Cohen's d.

Value

Correlation coefficient.

References

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.

Examples

# Literature: Cohen (1988); Schmidt, Hunter, and Pearlman (1982).
d_to_cor(.50)

Convert Cohen's d to a point-biserial correlation

Description

Converts a standardized mean difference to the point-biserial correlation implied by a dichotomous criterion with base rate p. The implemented formula is r_{pb} = d\sqrt{p(1-p)} / \sqrt{1 + d^2p(1-p)}. When base_rate = .50, this reduces to the common equal-group conversion r = d / \sqrt{d^2 + 4}.

Usage

d_to_point_biserial(d, base_rate = 0.5)

Arguments

d

Cohen's d. Must be numeric and finite.

base_rate

Proportion in the focal or successful group, usually denoted p. Must be in ⁠(0, 1)⁠. The default is .50.

Value

Numeric vector of point-biserial correlations.

References

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.

Examples

# 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))

Disattenuated correlation (Spearman, 1904)

Description

Corrects an observed correlation for unreliability in either or both variables.

Usage

disattenuate_correlation(r_observed, reliability_x = 1, reliability_y = 1)

Arguments

r_observed

Observed correlation.

reliability_x

Reliability of X (default 1, i.e., no correction).

reliability_y

Reliability of Y (default 1).

Value

Disattenuated correlation. Capped at +/- 1 with a warning when the algebraic value exceeds 1 in magnitude (typically a sign of unreliable reliability inputs).

References

Spearman, C. (1904). The proof and measurement of association between two things. American Journal of Psychology, 15, 72-101.

Examples

disattenuate_correlation(0.30, reliability_x = 0.80, reliability_y = 0.70)

Dominance analysis for predictor importance

Description

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:

Usage

dominance_analysis(predictor_cor, predictor_criterion_cor)

Arguments

predictor_cor

Predictor correlation matrix R_xx.

predictor_criterion_cor

Vector of predictor-criterion correlations r_xy (length p).

Details

Value

A list with components:

r_squared_full

The full-model R^2.

general_dominance

Vector of length p whose entries sum to r_squared_full.

conditional_dominance

⁠p x p⁠ matrix; row i gives the average contribution of predictor i at subset sizes ⁠0, 1, ..., p-1⁠.

complete_dominance

⁠p x p⁠ logical matrix where entry ⁠[i,j]⁠ is TRUE if i completely dominates j, FALSE if j completely dominates i, NA otherwise.

References

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.

Examples

Rxx <- matrix(c(1, .30, .20,
                .30, 1, .25,
                .20, .25, 1), 3, 3)
rxy <- c(.40, .30, .25)
dominance_analysis(Rxx, rxy)

Compute employee flows across periods

Description

Computes retained headcount after hires and losses: N_t = initial + cumsum(hired - lost).

Usage

employee_flow(hired, lost, initial = 0)

Arguments

hired

Number hired in each period.

lost

Number lost in each period.

initial

Initial headcount.

Value

Numeric vector of headcount by period.

References

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.

Examples

# Literature: Boudreau and Berger (1985); Boudreau (1991).
employee_flow(hired = c(100, 20, 20), lost = c(0, 30, 25))

Forecasting efficiency

Description

Computes the proportional reduction in the standard error of prediction: 1 - sqrt(1 - validity^2).

Usage

forecasting_efficiency(validity)

Arguments

validity

Predictor-criterion validity coefficient.

Value

Numeric vector with forecasting efficiency values.

References

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.

Examples

# Literature: Holling (1998).
forecasting_efficiency(.30)

Correlation matrix between several weighted composites

Description

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.

Usage

fuse_composite_cor(weights_matrix, item_cor)

Arguments

weights_matrix

⁠p x m⁠ matrix; column j is the weight vector of composite j.

item_cor

⁠p x p⁠ correlation matrix among items.

Value

⁠m x m⁠ correlation matrix among composites.

Examples

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)

Description

Reliability of a weighted composite (Mosier, 1943; Lord & Novick, 1968)

Usage

fuse_reliability(weights, item_cor, item_reliabilities = NULL)

Arguments

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 weights). If NULL, the composite reliability is computed under the assumption that diagonal entries of item_cor are item reliabilities (e.g., when an empirical reliability matrix is supplied).

Value

The reliability of the weighted composite.

References

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.

Examples

R <- matrix(c(1, .3, .3, 1), 2, 2)
fuse_reliability(c(.5, .5), R, item_reliabilities = c(.80, .85))

Correlation of a weighted composite with an external variable

Description

Implements the standard formula r_{C,Y} = (w' \rho_{XY}) / \sqrt{w' R_{XX} w} 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).

Usage

fuse_validity(weights, item_cor, item_validities)

Arguments

weights

Composite weights.

item_cor

Predictor (item) correlation matrix.

item_validities

Item-level correlations with the external variable.

Value

Scalar correlation.

Examples

R <- matrix(c(1, .3, .3, 1), 2, 2)
fuse_validity(c(.5, .5), R, item_validities = c(.30, .25))

Multigroup multivariate Taylor-Russell summaries

Description

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.

Usage

group_tr_multivariate(
  selection_ratios,
  base_rates,
  R_list,
  group_names = NULL,
  group_proportions = NULL
)

Arguments

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.

Value

A list with group-level Taylor-Russell summaries and optional weighted overall metrics.

References

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.

Examples

# 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"))

Incremental validity for adding predictors to an existing system

Description

Computes the difference in restricted canonical validity between a baseline predictor set and an expanded predictor set.

Usage

incremental_validity(
  predictor_cor,
  predictor_criterion_cor,
  criterion_cor,
  criterion_weights,
  baseline_predictors,
  added_predictors = NULL,
  focal_predictors = NULL
)

Arguments

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, added_predictors is computed as setdiff(focal_predictors, baseline_predictors). New code should use added_predictors.

Value

A psu_incremental_validity object.

References

Sturman, M. C. (2001). Utility analysis for multiple selection devices and multiple outcomes. Journal of Human Resource Costing and Accounting, 6(2), 9-28.

Examples

# 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)

Combine nominal discount and inflation rates

Description

Computes i_a = i + f + i*f.

Usage

inflation_adjusted_rate(discount_rate, inflation_rate)

Arguments

discount_rate

Real discount rate.

inflation_rate

Inflation rate.

Value

Inflation-adjusted discount rate.

References

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.

Examples

# Literature: Tziner et al. (1994); Holling (1998).
inflation_adjusted_rate(.08, .025)

Utility-analysis model taxonomy

Description

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.

Usage

model_taxonomy()

Value

A data frame with model families, decision structures, and package functions.

References

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.

Examples

# Literature: Thomas, Owen, and Gunst (1977); Ock and Oswald (2018).
model_taxonomy()

Multi-attribute utility

Description

Computes additive multi-attribute utility sum(weights * utilities) for one or more alternatives.

Usage

multiattribute_utility(values, weights, utility_functions = NULL)

Arguments

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.

Value

Numeric utility score per alternative.

References

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.

Examples

# 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))

Simulate conjunctive multiple-hurdle selection

Description

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.

Usage

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
)

Arguments

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 n_applicants.

Value

A psu_comparison object.

References

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.

Examples

# 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
)

Simulate staged multiple-hurdle selection with composite stages

Description

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.

Usage

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
)

Arguments

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 n_applicants.

Value

A psu_comparison object.

References

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.

Examples

# 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
)

Naylor-Shine expected criterion gain

Description

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).

Usage

naylor_shine(
  validity,
  selection_ratio,
  sdy = 1,
  n_selected = 1,
  tenure = 1,
  cost = 0
)

Arguments

validity

Predictor-criterion validity, usually denoted r_xy.

selection_ratio

Selection ratio, usually denoted SR.

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.

Value

A psu_ns object.

References

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.

Examples

# 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
)

Offer-rejection adjustment for selection utility (Murphy, 1986)

Description

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.

Usage

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
)

Arguments

expected_z_offered

Expected standardized score of offered candidates (e.g., selected_mean_z(selection_ratio)).

mode

One of "uniform", "selective", or "correlated".

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 mode = "correlated"). Negative values reflect adverse selection (top candidates more likely to decline).

logit_intercept, logit_slope

Logit link coefficients for mode = "selective". The slope is typically negative for adverse selection.

n_offered

Optional integer; if supplied, the function also returns the expected number of accepted hires.

Details

Three modes are supported:

Value

A list with expected_z_accepted, acceptance_rate, effective_validity_loss (the difference between offered and accepted means), and optionally expected_n_accepted.

References

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.

Examples

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)

Pareto frontier indicator

Description

Identifies non-dominated alternatives for objectives to be maximized or minimized.

Usage

pareto_frontier(objectives, maximize = TRUE)

Arguments

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.

Value

Logical vector indicating Pareto-efficient rows.

References

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.

Examples

# 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)))

Print personnel-selection model comparison objects

Description

Formats and prints model-comparison result objects of class psu_comparison. Displays the top-level scalar quantities and, when present, the per-subsystem summaries (compensatory and multiple-hurdle).

Usage

## S3 method for class 'psu_comparison'
print(x, ...)

Arguments

x

An object of class psu_comparison, typically returned by compare_selection_systems() or related functions.

...

Currently ignored; reserved for compatibility with the print() generic.

Value

No return value, called for side effects (prints a formatted summary to the console). The input object x is returned invisibly.


Print personnel-selection utility objects

Description

Formats and prints utility-analysis result objects of class psu_utility and its subclasses (e.g., psu_tr, psu_bcg, psu_ns, psu_shp, psu_boudreau, psu_incremental_validity, psu_monte_carlo). Provides a concise textual summary of the computed quantities.

Usage

## S3 method for class 'psu_sturman'
print(x, ...)

## S3 method for class 'psu_utility'
print(x, ...)

## S3 method for class 'psu_tr'
print(x, ...)

## S3 method for class 'psu_bcg'
print(x, ...)

## S3 method for class 'psu_ns'
print(x, ...)

## S3 method for class 'psu_shp'
print(x, ...)

## S3 method for class 'psu_boudreau'
print(x, ...)

## S3 method for class 'psu_incremental_validity'
print(x, ...)

## S3 method for class 'psu_monte_carlo'
print(x, ...)

Arguments

x

An object returned by one of the package's main analysis functions, with class psu_utility or a subclass thereof.

...

Currently ignored; reserved for compatibility with the print() generic.

Value

No return value, called for side effects (prints a formatted summary to the console). The input object x is returned invisibly.


Expected standardized performance after a probation cutoff

Description

Computes the mean of a standard normal criterion among employees surviving a probation rule Y >= probation_cutoff_z.

Usage

probation_adjustment(probation_cutoff_z)

Arguments

probation_cutoff_z

Probation cutoff on the standardized criterion.

Value

Expected standardized criterion score among survivors.

References

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.

Examples

# Literature: De Corte (1994); Sturman (2001).
probation_adjustment(-1)

Utility with a probation-period survivor adjustment

Description

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.

Usage

probation_utility(
  validity,
  selection_ratio,
  sdy,
  n_selected,
  tenure,
  probation_cutoff_z,
  cost = 0
)

Arguments

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.

Value

A psu_bcg object.

References

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.

Examples

# Literature: De Corte (1994); Sturman (2001).
probation_utility(.35, .20, 50000, 100, tenure = 3, probation_cutoff_z = -1)

Johnson relative weights for one criterion

Description

Computes approximate relative weights for correlated predictors in a multiple regression with one criterion.

Usage

relative_weights(predictor_cor, criterion_cor)

Arguments

predictor_cor

Predictor correlation matrix.

criterion_cor

Vector of predictor-criterion correlations.

Value

A data frame with raw and rescaled relative weights.

References

Johnson, J. W. (2000). A heuristic method for estimating the relative weight of predictor variables in multiple regression. Multivariate Behavioral Research, 35, 1-19.

Examples

# Literature: Johnson (2000).
relative_weights(matrix(c(1, .30, .30, 1), 2, 2), c(.40, .30))

Restricted canonical validity for a fixed criterion composite

Description

Computes Sturman-style restricted canonical validity. Predictor weights are optimized, but criterion weights are fixed by the analyst.

Usage

restricted_canonical_validity(
  predictor_cor,
  predictor_criterion_cor,
  criterion_cor,
  criterion_weights
)

Arguments

predictor_cor

Predictor correlation matrix, Sigma_11.

predictor_criterion_cor

Matrix of predictor-criterion correlations, Sigma_12, with predictors in rows and criteria in columns.

criterion_cor

Criterion correlation matrix, Sigma_22.

criterion_weights

Fixed criterion weights, b.

Value

A psu_incremental_validity object with restricted canonical validity and optimized standardized predictor weights.

References

Sturman, M. C. (2001). Utility analysis for multiple selection devices and multiple outcomes. Journal of Human Resource Costing and Accounting, 6(2), 9-28.

Examples

# 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)

Risk-adjusted utility

Description

Computes a mean-variance risk-adjusted utility score. With risk_aversion = 0, the score equals expected utility. Larger values penalize uncertainty more strongly.

Usage

risk_adjusted_utility(expected_utility, utility_sd, risk_aversion = 0)

Arguments

expected_utility

Expected utility or mean posterior/simulation utility.

utility_sd

Standard deviation of utility.

risk_aversion

Non-negative risk-aversion parameter.

Value

Risk-adjusted utility score.

References

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.

Examples

# Literature: Cronshaw et al. (1987); Bhattacharya and Wright (2005).
risk_adjusted_utility(expected_utility = 100000, utility_sd = 25000,
                      risk_aversion = 1e-6)

SDy from cost-accounting data

Description

Computes individual criterion values from production units and unit values, then returns the standard deviation of those values.

Usage

sdy_cost_accounting(units, unit_values, na.rm = TRUE)

Arguments

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 units.

na.rm

Should missing values be removed in the SD calculation?

Value

A list with individual criterion values and sdy.

References

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.

Examples

# 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))

SDy from a simplified CREPID-style activity decomposition

Description

Computes a monetary performance index by weighting activity ratings with activity time/frequency and importance weights.

Usage

sdy_crepid(
  activities,
  ratings,
  salary,
  time_col = "time_frequency",
  importance_col = "importance",
  activity_names = NULL,
  na.rm = TRUE
)

Arguments

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 activities.

importance_col

Name of the importance column in activities.

activity_names

Optional activity labels.

na.rm

Should missing values be removed in the SD calculation?

Value

A list with activity weights, individual criterion values, and sdy.

References

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.

Examples

# 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)

Observed SDy from monetary criterion data

Description

Computes the observed standard deviation of job performance in monetary or productivity units. This is the direct empirical counterpart to subjective SDy estimation methods.

Usage

sdy_observed(y, na.rm = TRUE)

Arguments

y

Numeric vector of monetary or productivity criterion values.

na.rm

Should missing values be removed?

Value

Observed SDy.

References

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.

Examples

# Literature: Holling (1998).
sdy_observed(c(100, 120, 80, 150))

Estimate SDy from percentile judgments

Description

Implements the percentile approximation SDy = (P85 - P15) / 2.

Usage

sdy_percentile(p15, p85)

Arguments

p15

Estimated monetary value of performance at the 15th percentile.

p85

Estimated monetary value of performance at the 85th percentile.

Value

Estimated standard deviation of job performance in monetary units.

References

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.

Examples

# Literature: Schmidt et al. (1979); Bobko, Karren, and Parkington (1983).
sdy_percentile(p15 = 60000, p85 = 140000)

Estimate SDy with proportional rules

Description

Computes a salary- or value-based SDy estimate using a multiplier such as .40 or .70.

Usage

sdy_proportional(mean_pay, multiplier = 0.4)

Arguments

mean_pay

Mean pay or mean output value.

multiplier

Proportional SDy multiplier. Defaults to .40.

Value

Estimated SDy.

References

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.

Examples

# Literature: Schmidt, Hunter, and Pearlman (1982); Hunter and Schmidt (1982).
sdy_proportional(mean_pay = 80000, multiplier = .40)
sdy_proportional(mean_pay = 80000, multiplier = .70)

Estimate SDy with a coefficient-of-variation approach

Description

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.

Usage

sdy_rbn(mean_pay, coefficient_variation)

Arguments

mean_pay

Mean pay or mean criterion value.

coefficient_variation

Coefficient of variation for job performance value.

Value

Estimated SDy.

References

Raju, N. S., Burke, M. J., & Normand, J. (1990). A new approach for utility analysis. Journal of Applied Psychology, 75, 3-12.

Examples

# Literature: Raju, Burke, and Normand (1990).
sdy_rbn(mean_pay = 80000, coefficient_variation = .35)

SDy from superior-equivalents judgments

Description

Computes SDy from a judged monetary difference between a superior and a typical performer, divided by the standardized distance assumed to separate them.

Usage

sdy_superior_equivalents(superior_value, typical_value, z_difference = 1)

Arguments

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 1, but can be set to another value if the judgment anchors imply it.

Value

Estimated SDy.

References

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.

Examples

# Literature: Eaton, Wing, and Mitchell (1985); Burke and Frederick (1984, 1986).
sdy_superior_equivalents(superior_value = 140000, typical_value = 100000)

Expected standardized predictor score among selected applicants

Description

Computes the mean of a standard normal predictor after top-down selection at a given selection ratio: dnorm(qnorm(1 - selection_ratio)) / selection_ratio.

Usage

selected_mean_z(selection_ratio)

Arguments

selection_ratio

Proportion of applicants selected. Must be in ⁠(0, 1)⁠.

Value

Numeric vector with expected standardized predictor scores.

References

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.

Examples

# Literature: Naylor and Shine (1965).
selected_mean_z(c(.10, .20, .50))

Selection table and classification metrics

Description

Computes a 2x2 classification table from observed selected/success outcomes.

Usage

selection_table(selected, success)

Arguments

selected

Logical or 0/1 vector indicating selection.

success

Logical or 0/1 vector indicating criterion success.

Value

A list with table and classification metrics.

References

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.

Examples

# Literature: Taylor and Russell (1939); Thomas, Owen, and Gunst (1977).
selection_table(c(1, 1, 0, 0), c(1, 0, 1, 0))

Selection utility from expected standardized criterion performance

Description

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.

Usage

selection_utility_from_z(
  expected_criterion_z,
  sdy,
  n_selected,
  n_applicants = n_selected,
  cost_per_applicant = 0,
  fixed_cost = 0,
  applicant_n = NULL
)

Arguments

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 n_applicants. Use n_applicants in new code.

Value

A psu_comparison object.

References

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.

Examples

# 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

Sensitivity grid for BCG utility

Description

Computes BCG net utility for all combinations of selected parameter values.

Usage

sensitivity_grid(validity, selection_ratio, sdy, n_selected, tenure, cost = 0)

Arguments

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.

Value

A data frame with one row per scenario.

References

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.

Examples

# 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), ]

Schmidt-Hunter-Pearlman intervention utility

Description

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.

Usage

shp_utility(effect_size_d, sdy, n_treated, tenure, cost = 0)

Arguments

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.

Value

A psu_shp object.

References

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.

Examples

# 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)

Sturman's (2001) comprehensive utility analysis

Description

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.

Usage

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
)

Arguments

validity

Focal-system validity (used directly when predictor_cor is NULL; replaced by the restricted canonical validity otherwise).

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 tenure for replacement hires and turnover losses; if NULL a steady state with n_year_one per year is used.

tax_rate, discount_rate, variable_value

Boudreau parameters.

maintenance_cost_per_period

Optional cost vector of length tenure.

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 validity.

probation_cutoff_z

Standardized cutoff for the probation rule (default NULL skips this adjustment).

acceptance_rate, quality_acceptance_correlation

Murphy's (1986) offer-rejection adjustment. If acceptance_rate < 1, the function adjusts the year-1 expected criterion mean and headcount accordingly.

Details

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.

Value

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.

References

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.

Examples

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
)

Binomial sampling probabilities for Taylor-Russell success rates

Description

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.

Usage

tr_binomial_success_probability(n_selected, ppv, at_least = NULL)

Arguments

n_selected

Number of selected applicants.

ppv

Positive predictive value / success ratio among selected applicants.

at_least

Optional threshold for computing P(successes >= at_least).

Value

A data frame with the full binomial distribution and, if requested, the cumulative upper-tail probability.

References

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.

Examples

# Literature: Thomas, Owen, and Gunst (1977).
tr_binomial_success_probability(n_selected = 20, ppv = .91, at_least = 18)

Taylor-Russell utility for one predictor

Description

Computes the Taylor-Russell classification table for one normally distributed predictor and one dichotomized criterion.

Usage

tr_classic(base_rate, selection_ratio, validity, digits = 3)

Arguments

base_rate

Population proportion of successful applicants, P(Y >= y_c).

selection_ratio

Proportion selected, P(X >= x_c).

validity

Predictor-criterion correlation.

digits

Number of digits used for printed summaries.

Value

A list with thresholds, TP, FP, FN, TN, PPV, sensitivity, specificity, and incremental success over the base rate.

References

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.

Examples

# 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)

Multivariate Taylor-Russell utility for conjunctive multiple-hurdle selection

Description

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.

Usage

tr_multivariate(selection_ratios, base_rate, R, digits = 3)

Arguments

selection_ratios

Vector of marginal selection ratios, one per predictor.

base_rate

Population proportion of successful applicants.

R

Correlation matrix of dimension ⁠(k + 1) x (k + 1)⁠. Predictors must occupy the first k rows/columns; the criterion must be last.

digits

Number of digits used for printed summaries.

Value

A psu_tr object with TP, FP, FN, TN, joint selection ratio, PPV, sensitivity, specificity, and cutoffs.

References

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.

Examples

# 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)

Solve equal marginal cutoffs for a target joint selection ratio

Description

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().

Usage

tr_multivariate_equal_cutoff(
  joint_selection_ratio,
  base_rate,
  R,
  interval = NULL,
  tol = 1e-08,
  digits = 3
)

Arguments

joint_selection_ratio

Target conjunctive selection ratio, P(X_1 >= c, ..., X_k >= c).

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 ⁠(joint_selection_ratio, 1)⁠.

tol

Numerical tolerance passed to optimize().

digits

Number of digits used for printed summaries.

Value

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.

References

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.

Examples

# 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)

Solve one Taylor-Russell parameter from the other three

Description

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.

Usage

tr_solve(
  base_rate = NULL,
  selection_ratio = NULL,
  validity = NULL,
  ppv = NULL,
  interval = NULL,
  tol = 1e-08,
  allow_negative_validity = FALSE
)

Arguments

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 optimize().

allow_negative_validity

Logical. Should the solver allow negative validity when validity = NULL? Defaults to FALSE.

Value

A psu_tr object containing the solved parameter and the resulting Taylor-Russell table.

References

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.

Examples

# 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)

Utility-fairness Pareto frontier

Description

Convenience wrapper around pareto_frontier() for selection-system alternatives evaluated on utility, fairness, and optionally validity.

Usage

utility_fairness_frontier(utility, fairness, validity = NULL)

Arguments

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.

Value

A data frame with frontier membership.

References

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.

Examples

# 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))

Monte Carlo uncertainty propagation for BCG utility

Description

Samples validity and SDy and propagates them through the BCG model. This is a simple decision-support approximation, not a full Bayesian model.

Usage

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
)

Arguments

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.

Value

A psu_monte_carlo object with draws and quantiles.

References

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.

Examples

# 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

Basic utility-analysis regression diagnostics

Description

Fits a simple linear model and returns empirical inputs and normality checks relevant to linear utility analysis.

Usage

utility_regression_diagnostics(x, y)

Arguments

x

Predictor scores.

y

Criterion scores in raw or monetary units.

Value

A list with sample size, validity, SDy, regression coefficients, residual summaries, optional Shapiro-Wilk tests, and the fitted model.

References

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.

Examples

# Literature: Holling (1998).
utility_regression_diagnostics(1:10, c(2, 3, 3, 5, 4, 6, 7, 8, 8, 10))