Produce a summary list for objects of class "OTC" returned by OTC1 or OTC2.

# S3 method for class 'OTC'
summary(object, ...)

Arguments

object

an object of class "OTC", providing the optimal testing configuration and associated operating characteristics for a group testing algorithm.

...

currently not used.

Value

summary.OTC returns an object of class "summary.OTC", a list containing:

Algorithm

character string specifying the name of the group testing algorithm.

OTC

matrix detailing the optimal testing configuration from object. For hierarchical testing, this includes the group sizes for each stage of testing. For array testing, this includes the array dimension (row/column size) and the array size (the total number of individuals in the array).

Tests

matrix detailing the expected number of tests and expected number of tests per individual from object.

Accuracy

matrix detailing the overall accuracy measures for the algorithm, including the pooling sensitivity, pooling specificity, pooling positive predictive value, and pooling negative predictive value for the algorithm from object. Further details are found in the 'Details' section.

Details

This function produces a summary list for objects of class "OTC" returned by OTC1 or OTC2. It formats the optimal testing configuration, expected number of tests, expected number of tests per individual, and accuracy measures. A summary of the results from OTC1 includes results for all objective functions specified by the user.

The OTC component of the result gives the optimal testing configuration, which may include the group sizes for each stage of a hierarchical testing algorithm or the row/column size and array size for an array testing algorithm. The Tests component of the result gives the expected number of tests and the expected number of tests per individual for the algorithm.

The Accuracy component gives the overall accuracy measures for the algorithm. Accuracy measures included are the pooling sensitivity, pooling specificity, pooling positive predictive value, and pooling negative predictive value. These values are weighted averages of the corresponding individual accuracy measures for all individuals in the algorithm. Expressions for these averages are provided in the Supplementary Material for Hitt et al. (2019). For more information, see the 'Details' section for the OTC1 or OTC2 function.

See also

OTC1 and OTC2 for creating an object of class "OTC".

Author

Brianna D. Hitt

Examples

# Find the optimal testing configuration for
#   non-informative two-stage hierarchical testing.
res1 <- OTC1(algorithm = "D2", p = 0.01, Se = 0.99, Sp = 0.99,
             group.sz = 2:100, obj.fn = c("ET", "MAR", "GR1"),
             weights = matrix(data = c(1,1), nrow = 1, ncol = 2))
#> Initial Group Size = 2
#> Initial Group Size = 3
#> Initial Group Size = 4
#> Initial Group Size = 5
#> Initial Group Size = 6
#> Initial Group Size = 7
#> Initial Group Size = 8
#> Initial Group Size = 9
#> Initial Group Size = 10
#> Initial Group Size = 11
#> Initial Group Size = 12
#> Initial Group Size = 13
#> Initial Group Size = 14
#> Initial Group Size = 15
#> Initial Group Size = 16
#> Initial Group Size = 17
#> Initial Group Size = 18
#> Initial Group Size = 19
#> Initial Group Size = 20
#> Initial Group Size = 21
#> Initial Group Size = 22
#> Initial Group Size = 23
#> Initial Group Size = 24
#> Initial Group Size = 25
#> Initial Group Size = 26
#> Initial Group Size = 27
#> Initial Group Size = 28
#> Initial Group Size = 29
#> Initial Group Size = 30
#> Initial Group Size = 31
#> Initial Group Size = 32
#> Initial Group Size = 33
#> Initial Group Size = 34
#> Initial Group Size = 35
#> Initial Group Size = 36
#> Initial Group Size = 37
#> Initial Group Size = 38
#> Initial Group Size = 39
#> Initial Group Size = 40
#> Initial Group Size = 41
#> Initial Group Size = 42
#> Initial Group Size = 43
#> Initial Group Size = 44
#> Initial Group Size = 45
#> Initial Group Size = 46
#> Initial Group Size = 47
#> Initial Group Size = 48
#> Initial Group Size = 49
#> Initial Group Size = 50
#> Initial Group Size = 51
#> Initial Group Size = 52
#> Initial Group Size = 53
#> Initial Group Size = 54
#> Initial Group Size = 55
#> Initial Group Size = 56
#> Initial Group Size = 57
#> Initial Group Size = 58
#> Initial Group Size = 59
#> Initial Group Size = 60
#> Initial Group Size = 61
#> Initial Group Size = 62
#> Initial Group Size = 63
#> Initial Group Size = 64
#> Initial Group Size = 65
#> Initial Group Size = 66
#> Initial Group Size = 67
#> Initial Group Size = 68
#> Initial Group Size = 69
#> Initial Group Size = 70
#> Initial Group Size = 71
#> Initial Group Size = 72
#> Initial Group Size = 73
#> Initial Group Size = 74
#> Initial Group Size = 75
#> Initial Group Size = 76
#> Initial Group Size = 77
#> Initial Group Size = 78
#> Initial Group Size = 79
#> Initial Group Size = 80
#> Initial Group Size = 81
#> Initial Group Size = 82
#> Initial Group Size = 83
#> Initial Group Size = 84
#> Initial Group Size = 85
#> Initial Group Size = 86
#> Initial Group Size = 87
#> Initial Group Size = 88
#> Initial Group Size = 89
#> Initial Group Size = 90
#> Initial Group Size = 91
#> Initial Group Size = 92
#> Initial Group Size = 93
#> Initial Group Size = 94
#> Initial Group Size = 95
#> Initial Group Size = 96
#> Initial Group Size = 97
#> Initial Group Size = 98
#> Initial Group Size = 99
#> Initial Group Size = 100
#> 
#>  Number of minutes running:  0 
#>  
summary(res1)
#> 
#> Algorithm: Non-informative two-stage hierarchical testing 
#> 
#> Optimal testing configuration:
#>     Stage 1
#> ET       11
#> MAR      11
#> GR1      11
#> 
#> Expected number of tests:
#>     E(T)  Value
#> ET  2.24 0.2035
#> MAR 2.24 0.2037
#> GR1 2.24 0.2047
#> 
#> E(T) denotes the expected number of tests.
#> Value denotes the objective function value per individual.
#> 
#> Overall accuracy of the algorithm:
#>        PSe    PSp   PPPV   PNPV
#> ET  0.9801 0.9990 0.9052 0.9998
#> MAR 0.9801 0.9990 0.9052 0.9998
#> GR1 0.9801 0.9990 0.9052 0.9998
#> 
#> PSe denotes the pooling sensitivity.
#> PSp denotes the pooling specificity.
#> PPPV denotes the pooling positive predictive value.
#> PNPV denotes the pooling negative predictive value.

# Find the optimal testing configuration for
#   informative three-stage hierarchical testing
res2 <- OTC1(algorithm = "ID3", p = 0.025,
             Se = c(0.95, 0.95, 0.99), Sp = c(0.96, 0.96, 0.98),
             group.sz = 3:10, obj.fn = c("ET", "MAR"), alpha = 2)
#> Initial Group Size = 3
#> Initial Group Size = 4
#> Initial Group Size = 5
#> Initial Group Size = 6
#> Initial Group Size = 7
#> Initial Group Size = 8
#> Initial Group Size = 9
#> Initial Group Size = 10
#> 
#>  Number of minutes running:  0 
#>  
summary(res2)
#> 
#> Algorithm: Informative three-stage hierarchical testing 
#> 
#> Optimal testing configuration:
#>     Stage 1 Stage 2
#> ET       10   5,3,2
#> MAR      10   5,3,2
#> 
#> Expected number of tests:
#>     E(T)  Value
#> ET  2.49 0.2488
#> MAR 2.49 0.2497
#> 
#> E(T) denotes the expected number of tests.
#> Value denotes the objective function value per individual.
#> 
#> Overall accuracy of the algorithm:
#>        PSe    PSp   PPPV   PNPV
#> ET  0.8935 0.9989 0.9548 0.9973
#> MAR 0.8935 0.9989 0.9548 0.9973
#> 
#> PSe denotes the pooling sensitivity.
#> PSp denotes the pooling specificity.
#> PPPV denotes the pooling positive predictive value.
#> PNPV denotes the pooling negative predictive value.

# Find the optimal testing configuration for
#   informative array testing without master pooling.
res3 <- OTC1(algorithm = "IA2", p = 0.05, alpha = 2,
             Se = 0.90, Sp = 0.90, group.sz = 2:15,
             obj.fn = "ET")
#> Row/Column Size = 2, Array Size = 4
#> Row/Column Size = 3, Array Size = 9
#> Row/Column Size = 4, Array Size = 16
#> Row/Column Size = 5, Array Size = 25
#> Row/Column Size = 6, Array Size = 36
#> Row/Column Size = 7, Array Size = 49
#> Row/Column Size = 8, Array Size = 64
#> Row/Column Size = 9, Array Size = 81
#> Row/Column Size = 10, Array Size = 100
#> Row/Column Size = 11, Array Size = 121
#> Row/Column Size = 12, Array Size = 144
#> Row/Column Size = 13, Array Size = 169
#> Using simulation
#> Row/Column Size = 14, Array Size = 196
#> Using simulation
#> Row/Column Size = 15, Array Size = 225
#> 
#>  Number of minutes running:  0.1 
#>  
summary(res3)
#> 
#> Algorithm: Informative array testing without master pooling 
#> 
#> Optimal testing configuration:
#>    Row/column size Array size
#> ET              11        121
#> 
#> Expected number of tests:
#>     E(T)  Value
#> ET 45.78 0.3784
#> 
#> E(T) denotes the expected number of tests.
#> Value denotes the objective function value per individual.
#> 
#> Overall accuracy of the algorithm:
#>       PSe    PSp   PPPV   PNPV
#> ET 0.7295 0.9836 0.7004 0.9857
#> 
#> PSe denotes the pooling sensitivity.
#> PSp denotes the pooling specificity.
#> PPPV denotes the pooling positive predictive value.
#> PNPV denotes the pooling negative predictive value.

# Find the optimal testing configuraiton for
#   informative two-stage hierarchical testing.
Se <- matrix(data = c(rep(0.95, 2), rep(0.99, 2)),
             nrow = 2, ncol = 2, byrow = FALSE)
Sp <- matrix(data = c(rep(0.96, 2), rep(0.98, 2)),
             nrow = 2, ncol = 2, byrow = FALSE)
res4 <- OTC2(algorithm = "ID2",
             alpha = c(18.25, 0.75, 0.75, 0.25),
             Se = Se, Sp = Sp, group.sz = 8)
#> Block Size = 8
#> 
#>  Number of minutes running:  0 
#>  
summary(res4)
#> 
#> Algorithm: Informative two-stage hierarchical testing 
#> 
#> Optimal testing configuration:
#>    Block size Group sizes
#> ET          8         4,4
#> 
#> Expected number of tests:
#>    E(T)  Value
#> ET 5.47 0.6844
#> 
#> E(T) denotes the expected number of tests.
#> Value denotes the objective function value per individual.
#> 
#> Overall accuracy of the algorithm:
#>      PSe    PSp   PPPV   PNPV
#> 1 0.9737 0.9495 0.4759 0.9987
#> 2 0.9610 0.9197 0.5550 0.9956
#> 
#> PSe denotes the pooling sensitivity.
#> PSp denotes the pooling specificity.
#> PPPV denotes the pooling positive predictive value.
#> PNPV denotes the pooling negative predictive value.

# Find the optimal testing configuration for
#   non-informative three-stage hierarchical testing.
Se <- matrix(data = c(rep(0.95, 6)), nrow = 2, ncol = 3)
Sp <- matrix(data = c(rep(0.99, 6)), nrow = 2, ncol = 3)
res5 <- OTC2(algorithm = "D3",
             p.vec = c(0.95, 0.0275, 0.0175, 0.005),
             Se = Se, Sp = Sp, group.sz = 5:12)
#> Initial Group Size = 5
#> Initial Group Size = 6
#> Initial Group Size = 7
#> Initial Group Size = 8
#> Initial Group Size = 9
#> Initial Group Size = 10
#> Initial Group Size = 11
#> Initial Group Size = 12
#> 
#>  Number of minutes running:  0.04 
#>  
summary(res5)
#> 
#> Algorithm: Non-informative three-stage hierarchical testing 
#> 
#> Optimal testing configuration:
#>    Stage 1 Stage 2
#> ET       9   3,3,3
#> 
#> Expected number of tests:
#>    E(T)  Value
#> ET 3.33 0.3695
#> 
#> E(T) denotes the expected number of tests.
#> Value denotes the objective function value per individual.
#> 
#> Overall accuracy of the algorithm:
#>      PSe    PSp   PPPV   PNPV
#> 1 0.8793 0.9989 0.9643 0.9960
#> 2 0.8875 0.9988 0.9456 0.9974
#> 
#> PSe denotes the pooling sensitivity.
#> PSp denotes the pooling specificity.
#> PPPV denotes the pooling positive predictive value.
#> PNPV denotes the pooling negative predictive value.

# Find the optimal testing configuration for
#   non-informative array testing with master pooling.
res6 <- OTC2(algorithm = "A2M", p.vec = c(0.90, 0.04, 0.04, 0.02),
             Se = rep(0.99, 2), Sp = rep(0.99, 2), group.sz = 2:12)
#> Row/Column Size = 2, Array Size = 4
#> Row/Column Size = 3, Array Size = 9
#> Row/Column Size = 4, Array Size = 16
#> Row/Column Size = 5, Array Size = 25
#> Row/Column Size = 6, Array Size = 36
#> Row/Column Size = 7, Array Size = 49
#> Row/Column Size = 8, Array Size = 64
#> Row/Column Size = 9, Array Size = 81
#> Row/Column Size = 10, Array Size = 100
#> Row/Column Size = 11, Array Size = 121
#> Row/Column Size = 12, Array Size = 144
#> 
#>  Number of minutes running:  0 
#>  
summary(res6)
#> 
#> Algorithm: Non-informative array testing with master pooling 
#> 
#> Optimal testing configuration:
#>    Row/column size Array size
#> ET               8         64
#> 
#> Expected number of tests:
#>     E(T)  Value
#> ET 35.94 0.5615
#> 
#> E(T) denotes the expected number of tests.
#> Value denotes the objective function value per individual.
#> 
#> Overall accuracy of the algorithm:
#>      PSe    PSp   PPPV   PNPV
#> 1 0.9785 0.9975 0.9612 0.9986
#> 2 0.9785 0.9975 0.9612 0.9986
#> 
#> PSe denotes the pooling sensitivity.
#> PSp denotes the pooling specificity.
#> PPPV denotes the pooling positive predictive value.
#> PNPV denotes the pooling negative predictive value.