Skip to contents

Optimize diagnostic test panels by evaluating various combination strategies including parallel testing (cotest), sequential testing, and repeated tests. Creates decision trees to minimize cost while maximizing accuracy.

Usage

decisionpanel(
  data,
  tests,
  testLevels = "",
  gold,
  goldPositive,
  useCosts = FALSE,
  testCosts = "",
  fpCost = 100,
  fnCost = 1000,
  strategies = "all",
  parallelRules = "any",
  customThreshold = 2,
  maxTests = 3,
  sequentialStop = "positive",
  optimizationCriteria = "accuracy",
  minSensitivity = 0.8,
  minSpecificity = 0.8,
  createTree = FALSE,
  treeMethod = "costSensitive",
  maxDepth = 5,
  minSplit = 20,
  showAllCombinations = FALSE,
  topN = 10,
  compareStrategies = TRUE,
  bootstrap = FALSE,
  bootReps = 1000,
  plotTree = TRUE,
  plotComparison = TRUE,
  plotCostEffect = TRUE,
  plotROC = FALSE,
  prevalence = 0,
  crossValidate = FALSE,
  nFolds = 5,
  seed = 12345
)

Arguments

data

The data as a data frame.

tests

Variables representing different diagnostic tests. Can select multiple tests (up to 10) for panel optimization.

testLevels

String specifying positive test levels. Can be: - Single value (used for all tests): "Positive" - Multiple values (comma-separated): "Positive,Yes,1" - Empty string (auto-detection): ""

gold

The gold standard variable for disease classification.

goldPositive

The level of the gold standard variable that indicates disease presence.

useCosts

Include cost considerations in the optimization process.

testCosts

Comma-separated costs for each test in the same order as selected tests. Example: "10,25,50" for three tests.

fpCost

Cost or harm associated with a false positive result.

fnCost

Cost or harm associated with a false negative result.

strategies

Which testing strategies to evaluate in the analysis.

parallelRules

Rule for combining results in parallel testing.

customThreshold

Number of positive tests required for overall positive result (when using custom rule).

maxTests

Maximum number of tests to combine in any strategy.

sequentialStop

When to stop testing in sequential strategies.

optimizationCriteria

Primary criterion for optimizing test panels.

minSensitivity

Minimum sensitivity constraint for panel selection.

minSpecificity

Minimum specificity constraint for panel selection.

createTree

Generate an optimal decision tree for test sequencing.

treeMethod

Method for constructing the decision tree.

maxDepth

Maximum depth of the decision tree.

minSplit

Minimum number of observations required to split a node.

showAllCombinations

Display performance metrics for all possible test combinations.

topN

Number of best-performing panels to display in results.

compareStrategies

Show comparative analysis of different testing strategies.

bootstrap

Calculate bootstrap confidence intervals for performance metrics.

bootReps

Number of bootstrap replications for confidence intervals.

plotTree

Display visual representation of the optimal decision tree.

plotComparison

Create comparison plots for different testing strategies.

plotCostEffect

Create cost-effectiveness frontier plot.

plotROC

Display ROC curves for top performing panels.

prevalence

Known disease prevalence (0 = use sample prevalence).

crossValidate

Perform k-fold cross-validation for panel performance.

nFolds

Number of folds for cross-validation.

seed

Random seed for reproducibility in bootstrap and cross-validation.

Value

A results object containing:

results$summarya html
results$optimalPanela table
results$strategyComparisona table
results$individualTestsa table
results$allCombinationsa table
results$treeStructurea html
results$treePerformancea table
results$crossValidationa table
results$bootstrapResultsa table
results$treeVisualizationan image
results$strategyComparisonPlotan image
results$costEffectivenessPlotan image
results$rocCurvesPlotan image
results$recommendationsa html

Tables can be converted to data frames with asDF or as.data.frame. For example:

results$optimalPanel$asDF

as.data.frame(results$optimalPanel)

Examples

# \donttest{
# example will be added
# }