R/riskyr_sims.R
write_popu.Rd
write_popu
computes (or expands) a table popu
(as an R data frame) from a riskyr
scenario (description),
using its 4 essential frequencies.
write_popu(x = NULL, ...)
An object of class data.frame
with N
rows and 3 columns
(e.g., "X/truth/cd", "Y/test/dc", "SDT/cell/class"
).
A data frame popu
containing N
rows (individual cases)
and 3 columns (e.g., "X/truth/cd", "Y/test/dc", "SDT/cell/class"
).
encoded as ordered factors (with 2, 2, and 4 levels, respectively).
write_popu
expects a riskyr
scenario as input
and passes its 4 essential frequencies (rounded to integers)
to comp_popu
.
By default, write_popu
uses the text settings
contained in txt
, but labels can be changed
by passing arguments to comp_popu
(via ...
).
# Define scenarios (by description):
s1 <- riskyr(prev = .5, sens = .5, spec = .5, N = 10) # s1: define by 3 prob & N
s2 <- riskyr(hi = 2, mi = 3, fa = 2, cr = 3) # s2: same scenario by 4 freq
# Create data (from descriptions):
write_popu(s1) # data from (prob) description
#> True condition Outcome Cases
#> 1 present positive TP
#> 2 present positive TP
#> 3 present negative FN
#> 4 present negative FN
#> 5 present negative FN
#> 6 absent positive FP
#> 7 absent positive FP
#> 8 absent positive FP
#> 9 absent negative TN
#> 10 absent negative TN
write_popu(s2, # data from (freq) description & change labels:
cond_lbl = "Disease (X)",
cond_true_lbl = "sick", cond_false_lbl = "healthy",
dec_lbl = "Test (Y)")
#> Disease (X) Test (Y) Cases
#> 1 sick positive TP
#> 2 sick positive TP
#> 3 sick negative FN
#> 4 sick negative FN
#> 5 sick negative FN
#> 6 healthy positive FP
#> 7 healthy positive FP
#> 8 healthy negative TN
#> 9 healthy negative TN
#> 10 healthy negative TN
# Rounding:
s3 <- riskyr(prev = 1/3, sens = 2/3, spec = 6/7, N = 10, round = FALSE) # s3: w/o rounding
write_popu(s3, cond_lbl = "X", dec_lbl = "Y", sdt_lbl = "class") # rounded to nearest integers
#> X Y class
#> 1 present positive TP
#> 2 present positive TP
#> 3 present negative FN
#> 4 absent positive FP
#> 5 absent negative TN
#> 6 absent negative TN
#> 7 absent negative TN
#> 8 absent negative TN
#> 9 absent negative TN
#> 10 absent negative TN
# Sampling:
s4 <- riskyr(prev = 1/3, sens = 2/3, spec = 6/7, N = 10, sample = TRUE) # s4: with sampling
write_popu(s4, cond_lbl = "X", dec_lbl = "Y", sdt_lbl = "class") # data from sampling
#> X Y class
#> 1 present positive TP
#> 2 present positive TP
#> 3 present positive TP
#> 4 present negative FN
#> 5 absent positive FP
#> 6 absent negative TN
#> 7 absent negative TN
#> 8 absent negative TN
#> 9 absent negative TN
#> 10 absent negative TN