Summarize a tpmatrix object storing transition probability matrices. Summary statistics are computed for each possible transition.

# S3 method for class 'tpmatrix'
summary(object, id = NULL, probs = NULL, unflatten = FALSE, ...)

Arguments

object

A tpmatrix object.

id

A tpmatrix_id object for which columns contain the ID variables for each row in object. If not NULL, then transition probability matrices are summarized by the ID variables in id.

probs

A numeric vector of probabilities with values in [0,1] used to compute quantiles. Computing quantiles can be slow when object is large, so the default is NULL, meaning that no quantiles are computed.

unflatten

If FALSE, then each column containing a summary statistic is a vector and the generated table contains one row (for each set of ID variables) for each possible transition; if TRUE, then each column stores a list of matrix objects containing transition probability matrices formed by "unflattening" the one-dimensional vectors. See "Value" below for additional details.

...

Additional arguments affecting the summary. Currently unused.

Value

If unflatten = "FALSE" (the default), then a data.table::data.table is returned with columns for (i) the health state that is being transitioned from (from), (ii) the health state that is being transitioned to (to) (iii) the mean of each parameter across parameter samples (mean), (iv) the standard deviation of the parameter samples (sd), and (v) quantiles of the parameter samples corresponding to the probs argument.

If, on the other hand, unflatten = "TRUE", then the parameters are unflattened to form transition probability matrices; that is, the mean, sd, and quantile columns are (lists of) matrices.

In both cases, if id is not NULL, then the ID variables are also returned as columns.

Examples

library("data.table")
hesim_dat <-  hesim_data(strategies = data.table(strategy_id = 1:2),
                                patients = data.table(patient_id = 1:3))
input_data <- expand(hesim_dat, by = c("strategies", "patients"))

# Summarize across all rows in "input_data"
p_12 <- ifelse(input_data$strategy_id == 1, .8, .6)
p <- tpmatrix(
  C, p_12,
  0, 1
)

## Summary where each column is a vector
summary(p)
#>      from     to  mean        sd
#>    <char> <char> <num>     <num>
#> 1:     s1     s1   0.3 0.1095445
#> 2:     s1     s2   0.7 0.1095445
#> 3:     s2     s1   0.0 0.0000000
#> 4:     s2     s2   1.0 0.0000000
summary(p, probs = c(.025, .975))
#>      from     to  mean        sd  2.5% 97.5%
#>    <char> <char> <num>     <num> <num> <num>
#> 1:     s1     s1   0.3 0.1095445   0.2   0.4
#> 2:     s1     s2   0.7 0.1095445   0.6   0.8
#> 3:     s2     s1   0.0 0.0000000   0.0   0.0
#> 4:     s2     s2   1.0 0.0000000   1.0   1.0

## Summary where each column is a matrix
ps <- summary(p, probs = .5, unflatten = TRUE)
ps
#>               mean                                      sd             50%
#>             <list>                                  <list>          <list>
#> 1: 0.3,0.0,0.7,1.0 0.1095445,0.0000000,0.1095445,0.0000000 0.3,0.0,0.7,1.0
ps$mean
#> [[1]]
#>     s1  s2
#> s1 0.3 0.7
#> s2 0.0 1.0
#> 

# Summarize by ID variables
tpmat_id <- tpmatrix_id(input_data, n_samples = 2) 
p_12 <- ifelse(tpmat_id$strategy_id == 1, .8, .6)
p <- tpmatrix(
  C, p_12,
  0, 1
)

## Summary where each column is a vector
summary(p, id = tpmat_id)
#>     strategy_id patient_id   from     to  mean    sd
#>           <int>      <int> <char> <char> <num> <num>
#>  1:           1          1     s1     s1   0.2     0
#>  2:           1          1     s1     s2   0.8     0
#>  3:           1          1     s2     s1   0.0     0
#>  4:           1          1     s2     s2   1.0     0
#>  5:           1          2     s1     s1   0.2     0
#>  6:           1          2     s1     s2   0.8     0
#>  7:           1          2     s2     s1   0.0     0
#>  8:           1          2     s2     s2   1.0     0
#>  9:           1          3     s1     s1   0.2     0
#> 10:           1          3     s1     s2   0.8     0
#> 11:           1          3     s2     s1   0.0     0
#> 12:           1          3     s2     s2   1.0     0
#> 13:           2          1     s1     s1   0.4     0
#> 14:           2          1     s1     s2   0.6     0
#> 15:           2          1     s2     s1   0.0     0
#> 16:           2          1     s2     s2   1.0     0
#> 17:           2          2     s1     s1   0.4     0
#> 18:           2          2     s1     s2   0.6     0
#> 19:           2          2     s2     s1   0.0     0
#> 20:           2          2     s2     s2   1.0     0
#> 21:           2          3     s1     s1   0.4     0
#> 22:           2          3     s1     s2   0.6     0
#> 23:           2          3     s2     s1   0.0     0
#> 24:           2          3     s2     s2   1.0     0
#>     strategy_id patient_id   from     to  mean    sd

## Summary where each column is a matrix
ps <- summary(p, id = tpmat_id, unflatten = TRUE)
ps
#>    strategy_id patient_id            mean      sd
#>          <int>      <int>          <list>  <list>
#> 1:           1          1 0.2,0.0,0.8,1.0 0,0,0,0
#> 2:           1          2 0.2,0.0,0.8,1.0 0,0,0,0
#> 3:           1          3 0.2,0.0,0.8,1.0 0,0,0,0
#> 4:           2          1 0.4,0.0,0.6,1.0 0,0,0,0
#> 5:           2          2 0.4,0.0,0.6,1.0 0,0,0,0
#> 6:           2          3 0.4,0.0,0.6,1.0 0,0,0,0
ps$mean
#> [[1]]
#>     s1  s2
#> s1 0.2 0.8
#> s2 0.0 1.0
#> 
#> [[2]]
#>     s1  s2
#> s1 0.2 0.8
#> s2 0.0 1.0
#> 
#> [[3]]
#>     s1  s2
#> s1 0.2 0.8
#> s2 0.0 1.0
#> 
#> [[4]]
#>     s1  s2
#> s1 0.4 0.6
#> s2 0.0 1.0
#> 
#> [[5]]
#>     s1  s2
#> s1 0.4 0.6
#> s2 0.0 1.0
#> 
#> [[6]]
#>     s1  s2
#> s1 0.4 0.6
#> s2 0.0 1.0
#>