I would like to use the weighted sum method to select the best number of clusters out of the 34 options. As weights I would like to use 0.5 for each criterion. The coverage criterion is to minimize and the production criterion is to maximize.
This question is similar to this question: Use the Weighted Sum Method in R
I solved the question, but I would like to know if it is correct.
library(dplyr)
df1<-structure(list(nclusters = c(2, 3, 4, 5, 6, 7, 8, 9, 10, 11,
12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27,
28, 29, 30, 31, 32, 33, 34, 35), Coverage = c(0.0363201192049018,
0.0315198954715543, 0.112661460735583, 0.112661460735583, 0.112661460735583,
0.0813721071219816, 0.0862146652218061, 0.0697995564757394, 0.0599194966471805,
0.0507632014547115, 0.052076958349629, 0.052076958349629, 0.052076958349629,
0.052076958349629, 0.052076958349629, 0.052076958349629, 0.0410332568832433,
0.0389940601722214, 0.0441742111970355, 0.0441742111970355, 0.0441742111970355,
0.0438099091238968, 0.0409906284310306, 0.0409906284310306, 0.035480410134286,
0.035480410134286, 0.035480410134286, 0.035480410134286, 0.035480410134286,
0.035480410134286, 0.035480410134286, 0.0345381204372174, 0.0287729883480053,
0.0287729883480053), Production = c(1635156.04305, 474707.64025,
170773.40775, 64708.312, 64708.312, 64708.312, 949.72635, 949.72635,
949.72635, 949.72635, 949.72635, 949.72635, 949.72635, 949.72635,
949.72635, 949.72635, 949.72635, 949.72635, 949.72635, 949.72635,
949.72635, 949.72635, 949.72635, 949.72635, 949.72635, 949.72635,
949.72635, 949.72635, 949.72635, 949.72635, 949.72635, 949.72635,
949.72635, 949.72635)), class = "data.frame", row.names = c(NA,-34L))
weights <- c(0.5,0.5)
scaled <- df1 |>
mutate(Coverage = min(Coverage) / Coverage,
Production = Production / max(Production))
scaled <- scaled |>
rowwise() |>
mutate(`Performance Score` = weighted.mean(c(Coverage, Production), w = weights))
scaled$Rank <- (nrow(scaled) + 1) - rank(scaled$`Performance Score`)
scaled
# A tibble: 34 x 5
# Rowwise:
nclusters Coverage Production `Performance Score` Rank
<dbl> <dbl> <dbl> <dbl> <dbl>
1 2 0.792 1 0.958 1
2 3 0.913 0.290 0.415 2
3 4 0.255 0.104 0.135 17
4 5 0.255 0.0396 0.0827 32.5
5 6 0.255 0.0396 0.0827 32.5
6 7 0.354 0.0396 0.102 29
7 8 0.334 0.000581 0.0672 34
8 9 0.412 0.000581 0.0829 31
9 10 0.480 0.000581 0.0965 30
10 11 0.567 0.000581 0.114 22
# ... with 24 more rows