The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]dogado.de.

rMOST-vignette

library(rMOST)
#> Welcome to rMOST.
#> rMOST estimates Pareto-optimal solutions for personnel selection with 3 objectives using Normal Boundary Intersection algorithm.

This document presents the example application of the rMOST package. Please refer to Study 3 of Zhang et al. (in press) for a complete guideline on adopting multi-objective optimization for personnel selection.

Prepare inputs

Note that different input parameters are required for different types of optimization problems. Below are the inputs needed for an example multi-objective optimization problem with 5 predictors.

## Input ##

# Predictor intercorrelation matrix
Rx <- matrix(c(  1,  .37, .51, .16, .25,
               .37,   1, .03, .31, .02,
               .51, .03,   1, .13, .34,
               .16, .31, .13,   1,-.02,
               .25, .02, .34,-.02,   1), 5, 5)

# Criterion validity of the predictors
Rxy1 <- c(.32, .52, .22, .48, .20) 
Rxy2 <- c(.30, .35, .15, .25, .10)
Rxy3 <- c(.15, .25, .30, .35, .10)

# Overall selection ratio
sr <- 0.15

# Proportion of minority applicants
prop_b <- 1/8 # Proportion of Black applicants (i.e., (# of Black applicants)/(# of all applicants))
prop_h <- 1/6 # Proportion of Hispanic applicants

# Predictor subgroup d
d_wb <- c(.39, .72, -.09, .39, .04) # White-Black subgroup difference
d_wh <- c(.17, .79, .08, .04, -.14) # White-Hispanic subgroup difference

Obtain MOO solutions

3 Non-adverse impact objectives

An example of such a MOO problem is when an organization seeks to optimize job performance, retention, and organizational commitment.

# Example: 3 non-adverse impact objectives
out_3C = MOST(optProb = "3C", 
              # predictor intercorrelations
              Rx = Rx, 
              # predictor - objective relations
              Rxy1 = Rxy1, # non-AI objective 1
              Rxy2 = Rxy2, # non-AI objective 2
              Rxy3 = Rxy3, # non-AI objective 3
              Spac = 10)
#> 
#>  Estimating Multi-Objective Optimal Solution ...
#> 
#>  Done. 
#> 

# The first few solutions
head(out_3C)
#>   Solution  Optimized    C1    C2    C3    P1    P2    P3    P4    P5
#> 1        1 C1, C2, C3 0.658 0.400 0.407 0.030 0.399 0.094 0.346 0.161
#> 2        2 C1, C2, C3 0.658 0.404 0.406 0.049 0.406 0.098 0.343 0.153
#> 3        3 C1, C2, C3 0.657 0.407 0.404 0.069 0.413 0.100 0.340 0.146
#> 4        4 C1, C2, C3 0.656 0.410 0.401 0.088 0.421 0.100 0.338 0.141
#> 5        5 C1, C2, C3 0.654 0.412 0.397 0.106 0.430 0.098 0.335 0.136
#> 6        6 C1, C2, C3 0.653 0.414 0.394 0.125 0.439 0.095 0.333 0.133

2 Non-adverse impact objectives and 1 adverse-impact objective

An example of such a MOO problem is when an organization seeks to optimize job performance, retention, and Black-white adverse impact ratio.

# Example: 2 non-adverse impact objectives & 1 adverse impact objective 
out_2C_1AI = MOST(optProb = "2C_1AI", 
                  # predictor intercorrelations
                  Rx = Rx, 
                  # predictor - objective relations
                  Rxy1 = Rxy1, # non-AI objective 1
                  Rxy2 = Rxy2, # non-AI objective 2
                  d1 = d_wb, # subgroup difference for minority 1
                  # selection ratio
                  sr = sr, 
                  # proportion of minority
                  prop1 = prop_b, # minority 1
                  Spac = 10)
#> 
#>  Estimating Multi-Objective Optimal Solution ...
#> 
#>  Done. 
#> 

# The first few solutions
head(out_2C_1AI)
#>   Solution   Optimized    C1    C2   AI1    P1    P2 P3   P4    P5
#> 1        1 C1, C2, AI1 0.220 0.150 1.147 0.000 0.000  1 0.00 0.000
#> 2        2 C1, C2, AI1 0.220 0.150 1.147 0.000 0.000  1 0.00 0.000
#> 3        3 C1, C2, AI1 0.220 0.150 1.147 0.000 0.000  1 0.00 0.000
#> 4        4 C1, C2, AI1 0.220 0.150 1.147 0.000 0.000  1 0.00 0.000
#> 5        5 C1, C2, AI1 0.220 0.150 1.147 0.000 0.000  1 0.00 0.000
#> 6        6 C1, C2, AI1 0.638 0.417 0.269 0.175 0.456  0 0.27 0.098

1 Non-adverse impact objectives and 2 adverse-impact objectives

An example of such a MOO problem is when an organization seeks to optimize job performance, Black-white adverse impact ratio, and Hispanic-white adverse impact ratio. Note that the 2 adverse-impact objectives should have the same reference group. For example, the objectives can be Black-white adverse impact ratio and Hispanic-white adverse impact ratio. The objectives cannot be Black-white adverse impact ratio and female-male adverse impact ratio.

# Example: 1 non-adverse impact objective & 2 adverse impact objectives 
out_1C_2AI = MOST(optProb = "1C_2AI",
                  # predictor intercorrelations
                  Rx = Rx, 
                  # predictor - objective relations
                  Rxy1 = Rxy1, # non-AI objective 1
                  d1 = d_wb, # subgroup difference for minority 1
                  d2 = d_wh, # subgroup difference for minority 2
                  # selection ratio
                  sr = sr, 
                  # proportion of minority 
                  prop1 = prop_b, # minority 1
                  prop2 = prop_h, # minority 2
                  Spac = 10)
#> 
#>  Estimating Multi-Objective Optimal Solution ...
#> 
#>  Done. 
#> 

# The first few solutions
head(out_1C_2AI)
#>   Solution    Optimized    C1   AI1   AI2    P1    P2    P3    P4    P5
#> 1        1 C1, AI1, AI2 0.652 0.355 0.483 0.025 0.328 0.164 0.333 0.151
#> 2        2 C1, AI1, AI2 0.520 0.629 0.687 0.000 0.151 0.450 0.280 0.119
#> 3        3 C1, AI1, AI2 0.489 0.684 0.714 0.000 0.131 0.501 0.262 0.106
#> 4        4 C1, AI1, AI2 0.458 0.738 0.740 0.000 0.112 0.551 0.244 0.093
#> 5        5 C1, AI1, AI2 0.426 0.794 0.768 0.000 0.092 0.601 0.226 0.081
#> 6        6 C1, AI1, AI2 0.395 0.849 0.794 0.000 0.072 0.651 0.208 0.068

Understand and use the results

Each row of the output corresponds to a set of predictor weights and the corresponding outcome for each of the three objectives.
* Columns 3 - 5: the expected outcome values for each objective
* Columns 6 - : the weights assigned to each predictor

Given the output of rMOST::MOST(), users can select a final solution (i.e., a final set of predictor weights) based on their goal. Predictor weights of the final solution could be used to create a predictor composite to be used in selection.

Take solution 1 in an optimization problem with 3 non-adverse impact objectives as an example. This solution assigns the weight of 0.03 to predictor P1, 0.399 to predictor P2, 0.094 to predictor P3, 0.346 to predictor P4, and 0.161 to predictor P5.

out_3C[1, 6:ncol(out_3C)]
#>     P1    P2    P3    P4    P5
#> 1 0.03 0.399 0.094 0.346 0.161

Assuming a top-down selection, a predictor composite created with these weights would result in the following outcomes. The predictor composite would have a validity of 0.658 for objective C1, 0.4 for objective C2, and 0.407 for objective C3.

out_3C[1, 3:5]
#>      C1  C2    C3
#> 1 0.658 0.4 0.407

These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.
Health stats visible at Monitor.