critic_weights

mcda.critic_weights(normalized)

CRITIC weights for a [0, 1] normalized tool by metric matrix.

CRITIC (CRiteria Importance Through Intercriteria Correlation) combines two ideas. A metric should weigh more when its scores spread out, measured by standard deviation, and when it conflicts with the other metrics, measured by low correlation. A metric that merely repeats information already carried by another metric should not be counted twice, so a high positive correlation lowers the weight.

Algorithm:

  1. Min-max rescale each column to [0, 1] so the contrast measure does not depend on the original units.
  2. Compute the per-column sample standard deviation.
  3. Compute the Pearson correlation matrix across columns.
  4. For each metric, sum 1 - correlation over all metrics, including the self term which contributes 1 - 1 = 0. This is the conflict score.
  5. Multiply the standard deviation by the conflict score to get the information content, then normalize the information content to sum to 1.

If every column is constant there is no spread and no contrast, and the function falls back to equal weights.

Parameters

Name Type Description Default
normalized np.ndarray Shape (n_tools, n_metrics), values in [0, 1] (non-negative). required

Returns

Type Description
np.ndarray Shape (n_metrics,), non-negative weights summing to 1.

Notes

A single metric (one column) has no other metric to conflict with, so the conflict score is zero and the method cannot assign a weight. The function returns equal weights in that case, which for one column is just [1.0].

References

Diakoulaki, D., Mavrotas, G., Papayannakis, L. Determining objective weights in multiple criteria problems: the CRITIC method. Computers and Operations Research 22 (1995).