import numpy as np | |
# Used to test if all the listed attributes of all team members and applicants are the same | |
def all_equal(attribute_list): | |
return len(set(attribute_list)) == 1 | |
# I decided to treat all attributes as independent from eachother, since large negative covariances between attributes made the cdf go to 0 very quickly | |
def make_independent(cov_matrix): | |
dim = len(cov_matrix) | |
for i in range(dim): | |
for j in range(dim): | |
if not i==j: | |
cov_matrix[i,j] = 0 | |
return cov_matrix | |
# Define compatibility as the geometric mean of the probabilities for each attribute that a person on the team will have a lower value | |
def compatibility(model, attributes, candidate_dict): | |
num_attributes = len(attributes) | |
candidate_values = [candidate_dict[attribute] for attribute in attributes] | |
return model.cdf(np.array(candidate_values))**(1/num_attributes) |