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