Conduct a multi criteria decision analysis (MCDA) and compute scores for competing treatment strategies using output from a probabilistic sensitivity analysis (PSA).
mcda(x, sample, strategy, criteria, criteria_min = NULL, criteria_max = NULL, optimal = NULL, weights, score_min = 0, score_max = 100)
x | A |
---|---|
sample | Character name of column from |
strategy | Character name of column from |
criteria | A vector of character names of columns from |
criteria_min | A vector of minimum values for each criterion. If |
criteria_max | A vector of maximum values for each criterion. If |
optimal | A character vector denoting whether the optimal value of each criteria
is |
weights | Weights to apply to each criteria. Internally normalized to sum to 1. |
score_min | Minimum of total value score. Default is 0. |
score_max | Maximum of total value score. Default is 100. |
n_samples <- 5 strategies <- c("Strategy 1", "Strategy 2") outcome1 <- c(rnorm(n_samples, mean = 10, sd = 5), rnorm(n_samples, mean = 8, sd = 4)) outcome2 <- c(rnorm(n_samples, mean = 1500, sd = 90), rnorm(n_samples, mean = 1000, sd = 100)) outcomes <- data.frame(sample = rep(1:n_samples, length(strategies)), strategy_id = rep(strategies, each = n_samples), criteria1 = outcome1, criteria2 = outcome2) # Performance matrix performance_mat <- performance_matrix(outcomes, strategy = "strategy_id", criteria = c("criteria1", "criteria2"), rownames = c("Criteria 1", "Criteria 2"), colnames = strategies) print(performance_mat)#> Strategy 1 Strategy 2 #> Criteria 1 "8.82 (1.14, 15.55)" "3.77 (0.99, 6.83)" #> Criteria 2 "1,447 (1,316, 1,574)" "974 (822, 1,181)"# MCDA weights <- c(.7, .3) mcda <- mcda(outcomes, sample = "sample", strategy = "strategy_id", criteria = c("criteria1", "criteria2"), weights = weights, optimal = c("low", "high")) names(mcda)#> [1] "scores" "weighted_scores" "total_value" "prob_rank"#> sample strategy_id criteria1 criteria2 #> 1: 1 Strategy 1 34.92297 79.33347 #> 2: 2 Strategy 1 100.00000 100.00000 #> 3: 3 Strategy 1 69.20929 81.52684 #> 4: 4 Strategy 1 0.00000 63.60754 #> 5: 5 Strategy 1 30.51387 86.45465 #> 6: 1 Strategy 2 99.16234 31.71191 #> 7: 2 Strategy 2 86.55179 49.55827 #> 8: 3 Strategy 2 58.46559 11.85367 #> 9: 4 Strategy 2 82.03813 0.00000 #> 10: 5 Strategy 2 72.69201 11.65839#> sample strategy_id score rank #> 1: 1 Strategy 1 48.24612 2 #> 2: 2 Strategy 1 100.00000 1 #> 3: 3 Strategy 1 72.90455 1 #> 4: 4 Strategy 1 19.08226 2 #> 5: 5 Strategy 1 47.29610 2 #> 6: 1 Strategy 2 78.92721 1 #> 7: 2 Strategy 2 75.45374 2 #> 8: 3 Strategy 2 44.48201 2 #> 9: 4 Strategy 2 57.42669 1 #> 10: 5 Strategy 2 54.38192 1#> sample strategy_id criteria weighted_score #> 1: 1 Strategy 1 criteria1 24.446082 #> 2: 2 Strategy 1 criteria1 70.000000 #> 3: 3 Strategy 1 criteria1 48.446501 #> 4: 4 Strategy 1 criteria1 0.000000 #> 5: 5 Strategy 1 criteria1 21.359708 #> 6: 1 Strategy 2 criteria1 69.413638 #> 7: 2 Strategy 2 criteria1 60.586255 #> 8: 3 Strategy 2 criteria1 40.925914 #> 9: 4 Strategy 2 criteria1 57.426691 #> 10: 5 Strategy 2 criteria1 50.884407 #> 11: 1 Strategy 1 criteria2 23.800041 #> 12: 2 Strategy 1 criteria2 30.000000 #> 13: 3 Strategy 1 criteria2 24.458051 #> 14: 4 Strategy 1 criteria2 19.082263 #> 15: 5 Strategy 1 criteria2 25.936395 #> 16: 1 Strategy 2 criteria2 9.513574 #> 17: 2 Strategy 2 criteria2 14.867482 #> 18: 3 Strategy 2 criteria2 3.556100 #> 19: 4 Strategy 2 criteria2 0.000000 #> 20: 5 Strategy 2 criteria2 3.497517#> strategy_id rank N prob #> 1: Strategy 1 1 2 0.4 #> 2: Strategy 1 2 3 0.6 #> 3: Strategy 2 1 3 0.6 #> 4: Strategy 2 2 2 0.4