# PoD curve point estimation using vaccine efficacy and population summary statistics

#### Pavel Fiser (MSD), Julie Dudasova (MSD)

#### 2021-09-20

This document describes how to estimate PoD curve parameters using PoDBAY package. This process can be applied when user doesn’t have individual level data about vaccinated and control populations, but only summary statistics data and corresponding estimatedcase-count vaccine efficacy.

The goal of this document is to show how to estimate point estimate of PoD curve parameters in two steps

1. \(et_{50}\) and \(\gamma\) estimation

Required input:

- vaccinated population - mean, standard deviation of titers
- control population - mean, standard deviation of titers
- reference efficacy - vaccine case-count efficacy estimate from large clinical trial (converging to the true value of efficacy)

2. \(p_{max}\) estimation

Required input:

- \(et_{50}\) and \(\gamma\) estimates from the step 1
- incidence rate for low titer population - we assume it is represented by incidence rate of control population
- control population - mean, standard deviation of titers

## 1. \(et_{50}\) and \(\gamma\) estimation

Function `PoDEfficacySquaredError()` is used to estimate \(et_{50}\) and \(\gamma\). As the inputs to the function we use `vaccinated` and `control` mock-up population class objects together with artificially chosen `TrueEfficacy` parameter.

Note: To convert your data in to the `population` class object use `generatePopulation()` function from PoDBAY package. See vignette `vignette("population", package = "PoDBAY")` for further details.

    # Mockup vaccinated and control population class objects
    data(vaccinated)
    data(control)

    # Observed vaccine efficacy
    TrueEfficacy <- 0.53

    # PoD curve parameter estimation
    params_et50_slope <- PoDEfficacySquaredError(TrueEfficacy,
                                                 vaccinated,
                                                 control,
                                                 initialSlope = 6)
    params_et50_slope
    #>     et50    slope
    #> 5.268031 6.179620

NOTE

1. Estimated \(et_{50}\) and \(\gamma\) parameters highly depends on the initial setup of slope parameter
2. \(p_{max}\) parameter is not part of the optimization as CoP-based (PoDBAY) efficacy is not dependent on the \(p_{max}\) value. Hence it needs to be estimated separately.

## 2. \(p_{max}\) estimation

Once we have \(et_{50}\) and \(\gamma\) estimated we can proceed with \(p_{max}\) estimation using `PmaxEstimation`. As the inputs to the function we use estimated \(et_{50}\) and \(\gamma\), `control` mock-up population class object together with artificially chosen `IncidenceRate` parameter.

    # Incidence rate for low titer population
    IncidenceRate <- 0.02

    # pmax estimation
    pmax <- PmaxEstimation(IncidenceRate, params_et50_slope, control)

    # combining PoD curve parameters
    PoDParams <- unlist(c(params_et50_slope, pmax))

    PoDParams
    #>       et50      slope       pmax
    #> 5.26803128 6.17962043 0.03552708