This observation model observes the latent biomarker quantities given a discrete assay with user-specified ranges within discrete and added noise. The added noise represents assay variability and is done by sampling from a distribution with the latent biomarker quantity as the mean and the measurement error as the standard deviation. The observation standard deviation and distribution are defined within model_pars as the “obs_sd” parameter. The user can also use the optional sensitivity and specificity arguments to account for assay sensitivity and specificity. False negatives are simulated by setting an observed quantity to the assay's lower bound with probability sensitivity. False positives are simulated by drawing a random quantity from the bounded range for a true 0 biomarker quantity with probability 1-specificity.

observation_model_discrete_noise(
  biomarker_states,
  model_pars,
  cutoffs,
  sensitivity = 1,
  specificity = 1,
  ...
)

Arguments

biomarker_states

tibble containing true biomarker quantities for all individuals across all time steps and biomarkers. Variables should include: 1) i: the individual ID; 2) t: the time period; 3) b: the biomarker ID; 4) value: the latent biomarker quantity for the given i, t and b

model_pars

a tibble containing information for all parameters needed to simulate the observation process. This should usually contain: 1) exposure_id: numeric exposure ID; 2) biomarker_id: numeric biomarker ID; 3) name: the character name of the parameter; 4) mean: numeric mean of this parameter distribution; 5) sd: the numeric standard deviation of the parameter distribution

cutoffs

a matrix containing the assay cutoffs for each biomarker. Each row contains all of the cutoffs for that biomarker starting with 0. For example, all of the cutoffs for the assay measuring biomarker 1 quantity are in the first row of this matrix.

sensitivity

number between 0 and 1 to describe the assay's sensitivity; defaults to 1

specificity

number between 0 and 1 to describe the assay's specificity; defaults to 1

...

Additional arguments

Value

biomarker_states is returned with a new column, observed, for observed biomarker quantities

Examples

library(dplyr)
breaks <- seq(0,8,by=1)
cutoffs <- matrix(breaks,nrow=1,ncol=length(breaks))
tmp_pars <- example_model_pars_numeric %>% mutate(sd=ifelse(name=="obs_sd",2,sd))
observation_model_discrete_noise(example_biomarker_states, tmp_pars, cutoffs, 0.95,0.99)
#> Warning: NAs produced
#>          i   t b    value observed
#>     1:   1   1 1       NA       NA
#>     2:   1   2 1       NA       NA
#>     3:   1   3 1       NA       NA
#>     4:   1   4 1       NA       NA
#>     5:   1   5 1       NA       NA
#>    ---                            
#> 11996: 100 116 1       NA       NA
#> 11997: 100 117 1 3.835267        8
#> 11998: 100 118 1 3.823634        0
#> 11999: 100 119 1 3.812000        3
#> 12000: 100 120 1 3.800367        2