IDIG 2022-10-24

Zane (https://wzbillings.com)

Nauta JJ, Beyer WE, Osterhaus AD. On the relationship between mean antibody level, seroprotection and clinical protection from influenza. Biologicals. 2009;37(4):216-221. doi:10.1016/j.biologicals.2009.02.002.

Intro

blah

Definitions

text

The model

\[\begin{align*} t &= \log_2 \left( \mathrm{HAI \ titer} / 5 \right) \\ t &\sim \mathrm{Normal}(\mu, \sigma) \\ \pi_{\mathrm{seroprotected}} &= \int_{t_p}^\infty \ f(t) \ \mathrm{d}t \\ \pi_{\mathrm{seroconverted}} &= \int_{-\infty}^\infty \ f(t) \frac{\lambda}{\left(1 + \exp\left(\alpha + \beta t\right)\right) \ \mathrm{d}t} \\ \end{align*}\]

  • \(0 < \lambda \leq 1, \ \alpha > 0, \beta < 0\)
  • \(\lambda\) is the probability of clinical protection for subjects with “a very high HI titer”.
  • \(\alpha\) accounts for protection unrelated to antibody level.
  • \(\beta\) is the slope of the clinical protection curve.
  • \(\displaystyle\frac{\lambda}{\left(1 + \exp\left(\alpha + \beta \ \mathbf{t_p} \right)\right)} = 0.5\).
  • Can alternatively specify the value of \(t_p\) instead of \(\beta\) (if all other parameters are also specified).

What does that mean?

x <- seq(0, 10, 0.01)
alpha <- 3
beta <- -1
lambda <- 1
t <- dnorm(x, 5, 1.5)
y <- lambda / (1 + exp(alpha + beta * x))
tp <- x[which.min(abs(y - 0.5))]

plot(NULL, xlim = c(0, 9), ylim = c(0, 1), xlab = "t",
     ylab = "probability density",
     xaxs = "i", yaxs = "i", cex.axis = 1.3, cex.lab = 1.3)

polygon(c(tp, x[x >= tp]), c(0, t[x >= tp]), col = "gray")
lines(x = x, y = t)
lines(x = x, y = y)

# Lines pointing out 0.5 threshold
segments(tp, 0, tp, 0.5, lty = 2)
segments(-1000, 0.5, tp, 0.5, lty = 2)

# Horizontal line
segments(3.5, 0.28, 6.5, 0.28)

# Wagaman reference lines
segments(3.5, 0.27, 3.5, 0.29)
segments(5.0, 0.27, 5.0, 0.29)
segments(6.5, 0.27, 6.5, 0.29)

# Text labels
par(cex = 1.5)
text(x = 8, y = 0.96, labels = expression("f"[2]*"(t)"))
text(x = 8.16, y = 0.07, labels = expression("f"[1]*"(t)"))
text(x = 5, y = 0.32, labels = expression(mu))
text(x = 4.25, y = 0.32, labels = expression("-"*sigma))
text(x = 5.75, y = 0.32, labels = expression("+"*sigma))

plot(
    x,
    t * y,
    xlab = "t",
    ylab = expression("f"[1]*" f"[2]),
    type = "l"
)
lines(x, t)