---
title: "Usage"
output: rmarkdown::html_vignette
vignette: >
  %\VignetteIndexEntry{Usage}
  %\VignetteEngine{knitr::rmarkdown}
  %\VignetteEncoding{UTF-8}
---

```{r, include = FALSE}
knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>"
)
```

```{r setup}
library(sclr)
```

## Model

See `vignette("sclr-math")` for model specification, log-likelihood, scores
and second derivatives.

## Model fitting

Model fitting is done with a function called `sclr`. It is used in 
the same way as other fitting functions like `lm`.

```{r}
# One-titre fit to included simulated data
fit1 <- sclr(status ~ logHI, one_titre_data)
summary(fit1)

# Two-titre fit to included simulated data
fit2 <- sclr(status ~ logHI + logNI, two_titre_data)
summary(fit2)
```

## Expected protection

The `predict` method will return the point estimate and a confidence 
interval of 
$\beta_0 + \beta_1X_1 + ... + \beta_kX_k$ 
where $k$ is the number of covariates.
It will also apply the inverse logit 
transformation to these estimates and 
interval bounds to get the point estimate and the interval for
the probability of protection on the original scale.

```{r}
# One-titre fit
preddata1 <- data.frame(logHI = seq(0, 8, length.out = 101))
pred1 <- predict(fit1, preddata1)
head(pred1[, c("logHI", "prot_l", "prot_point", "prot_u")])

# Two-titre fit
preddata2 <- data.frame(logHI = seq(0, 8, length.out = 101), logNI = 1)
pred2 <- predict(fit2, preddata2)
head(pred2[, c("logHI", "logNI", "prot_l", "prot_point", "prot_u")])
```

## Protective titres

To get the estimated titre (and the confidence interval) that corresponds to a
particular protection level (eg. 50%), use the `get_protection_level` function.
Its interface is similar to that of `predict`.

```{r}
protHI1 <- get_protection_level(fit1, "logHI", lvl = 0.5)
print(protHI1)

prot_lvls2 <- data.frame(logNI = log(c(0.1, 10, 40)))
protHI2 <- get_protection_level(fit2, "logHI", prot_lvls2)
print(protHI2)
```
