STAPLE on Multi-class matrix

staple_multi_mat(
  x,
  sens_init = 0.99999,
  spec_init = 0.99999,
  max_iter = 10000,
  tol = .Machine$double.eps,
  prior = "mean",
  verbose = TRUE,
  trace = 25,
  ties.method = c("first", "random", "last"),
  drop_all_same = FALSE
)

Arguments

x

a nxr matrix where there are n raters and r elements rated

sens_init

Initialize matrix for sensitivity (p)

spec_init

Initialize matrix for specificity (q)

max_iter

Maximum number of iterations to run

tol

Tolerance for convergence

prior

Either "mean" or a matrix of prior probabilities,

verbose

print diagnostic messages

trace

Number for modulus to print out verbose iterations

ties.method

Method passed to max.col for hard segmentation

drop_all_same

drop all records where they are all the same. DO NOT use in practice, only for validation of past results

Value

List of matrix output sensitivities, specificities, and matrix of probabilities

Examples

rm(list = ls())
x = matrix(rbinom(5000, size = 5, prob = 0.5), ncol = 1000)
  sens_init = 0.99999
  spec_init = 0.99999
  max_iter = 10000
  tol = .Machine$double.eps
  prior = "mean"
  verbose = TRUE
  trace = 25
  ties.method = "first"

res = staple_multi_mat(x)
#> There are 6 levels present
#> Removing elements where all raters agree
#> Making multiple, matrices. Hot-one encode
#> iter: 25, diff: 5.69431779326446e-06
#> iter: 50, diff: 1.11233938726585e-09
#> iter: 75, diff: 2.41306974402278e-13
#> Convergence!
xx = rbind(colMeans(x >= 2) > 0.5, colMeans(x >= 2) >= 0.5)
res = staple_multi_mat(xx, prior = rep(0.5, 1000))
#> There are 2 levels present
#> Removing elements where all raters agree
#> Making multiple, matrices. Hot-one encode
#> Convergence!
res_bin = staple_bin_mat(xx, prior = rep(0.5, 1000))
#> iter: 1, diff: 9.99998203143893e-06
#> Convergence!
testthat::expect_equal(res$sensitivity[,"1"], res_bin$sensitivity)