Skip to contents

Assay Based Incidence Estimation

Usage

rita_incidence(
  recent,
  undiagnosed,
  low_viral,
  hiv,
  tslt,
  ever_hiv_test,
  weights = rep(1, length(recent)),
  tau = 2,
  frr = lag_avidity_frr()[1],
  test_history_population = c("undiagnosed", "negative"),
  assay_surv = lag_avidity_survival(tau * 365),
  diag_surv = NULL,
  treated = NULL,
  treat_surv = NULL
)

Arguments

recent

Logical. Tests recent on assay.

undiagnosed

Logical. No previous diagnosis.

low_viral

Logical. Has low viral load (< 1000).

hiv

Logical. Is HIV positive.

tslt

Time since last HIV test (days).

ever_hiv_test

Subject has been tested for HIV in the past.

weights

Survey weights.

tau

long term cut-off (years).

frr

Reference false recency rate among treatment naive non-elite controller non-AIDS individuals.

test_history_population

If undiagnosed, the testing histories of undiagnosed HIV+ people are used. If negative, the HIV- population is used.

assay_surv

Survival function vector for assay among treatment naive non-elite controller non-AIDS individuals.

diag_surv

time to diagnosis survival function vector. If specified, overrides the internal calculation.

treated

A logical vector indicating a subject is on treatment. Only needed in the case of the use of RITA2 screening.

treat_surv

Probability an individual diagnosed i days ago is not on treatment.

Value

A data.frame with the following values: 1. `incidence`: The incidence. 2. `residual_frr`: The false recency rate accounting for the screening process. 3. `omega_rs`: The mean duration of recency up to tau accounting for the screening process. 4. `P(R|S)` : The proportion of screened in individual who test recent. 5. `P(S|H)` : The proportion of HIV+ individuals that are screened in. 6. `P(H)` : HIV prevalence.

Details

This function estimates HIV incidence for cross-sectional survey designs using a recency assay combined with a Recent Infection Testing Algorithm (RITA) screening step, which is used to remove long-term individuals with elevated false recency rates on the assay. Two RITA algorithms are supported. RITA3 treats all individuals with either a previous diagnosis (as determined by self report or ARV biomarkers) or a viral load <1,000 c/ml as non-recent regardless of the result of the recency assay. RITA2 treats all individuals who are either on treatment or have a viral load <1,000 c/ml as non-recent. The default RITA is RITA3. If 'treated' is non-null, RITA2 will be used. RITA2 also requires a vector 'treat_surv' whose ith element represents the probability that an individual diagnosed i days ago is not on treatment.

Examples

data("assay_data")
rita_incidence(
recent=assay_data$recent,
undiagnosed=assay_data$undiagnosed,
low_viral=assay_data$elite_cntr,
hiv=assay_data$hiv,
weights=assay_data$weights,
tslt=assay_data$tslt,
ever_hiv_test=assay_data$ever_hiv_test
)
#>    incidence residual_frr  omega_rs  omega_s     P(R|S)   P(S|H)      P(H)
#> 1 0.01515732 0.0008826826 0.2921342 1.093136 0.07283305 0.195313 0.2480427

# RITA2 Screening
## Posit an average time from diagnosis to treatment of 150 days
treat_surv <- 1 - pexp(1:(365*2), 1/150)

## Create a dummy variable for treatment
assay_data$treated <- !assay_data$undiagnosed
assay_data$treated[assay_data$undiagnosed][c(40L, 47L, 59L, 63L,
    83L, 157L, 164L, 166L, 194L, 209L)] <- FALSE

# Calculate incidence using RITA2 screening (i.e. screen as non-recent if either treated or low viral load)
rita_incidence(
recent=assay_data$recent,
undiagnosed=assay_data$undiagnosed,
low_viral=assay_data$elite_cntr,
hiv=assay_data$hiv,
weights=assay_data$weights,
tslt=assay_data$tslt,
ever_hiv_test=assay_data$ever_hiv_test,
treated = assay_data$treated,
treat_surv = treat_surv
)
#>    incidence residual_frr omega_rs  omega_s     P(R|S)   P(S|H)      P(H)
#> 1 0.01319826 0.0008520468 0.335939 1.335463 0.07283305 0.195313 0.2480427