This observation model observes the latent biomarker quantities given a continuous assay with user-specified lower and upper limits 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_continuous_bounded_noise(
  biomarker_states,
  model_pars,
  bounds,
  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

bounds

a tibble containing the assay lower bound and upper bound for all biomarkers; column namesare 1) biomarker_id; 2) name; 3) value, where name is either lower_bound or upper_bound

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

bounds <- dplyr::tibble(biomarker_id=1,name=c("lower_bound","upper_bound"),value=c(2,8))
observation_model_continuous_bounded_noise(example_biomarker_states,
example_model_pars_numeric, bounds,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 3.993691
#> 11998: 100 118 1 3.823634 3.757477
#> 11999: 100 119 1 3.812000 4.028014
#> 12000: 100 120 1 3.800367 3.760899