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

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

Recall that the likelihood of a model is the probability of the data set given the model ($P(D|\theta)$).

The *deviance* of a model is defined by

$$D(\theta,D) = 2(\log(P(D|\theta_s)) - \log(P(D|\theta)))$$

where $\theta_s$ is the *saturated model* which is so named because it perfectly fits the data.

In the case of normally distributed errors the likelihood for a single prediction ($\mu_i$) and data point ($y_i$) is given by

$$P(y_i|\mu_i) = \frac{1}{\sigma\sqrt{2\pi}} \exp\bigg(-\frac{1}{2}\bigg(\frac{y_i - \mu_i}{\sigma}\bigg)^2\bigg)$$
and the log-likelihood by

$$\log(P(y_i|\mu_i)) = -\log(\sigma) - \frac{1}{2}\big(\log(2\pi)\big) -\frac{1}{2}\bigg(\frac{y_i - \mu_i}{\sigma}\bigg)^2$$

The log-likelihood for the saturated model, which is when $\mu_i = y_i$, is therefore simply

$$\log(P(y_i|\mu_{s_i})) = -\log(\sigma) - \frac{1}{2}\big(\log(2\pi)\big)$$

It follows that the unit deviance is 

$$d_i = 2(\log(P(y_i|\mu_{s_i})) -  \log(P(y_i|\mu_i)))$$

$$d_i = 2\bigg(\frac{1}{2}\bigg(\frac{y_i - \mu_i}{\sigma}\bigg)^2\bigg)$$

$$d_i = \bigg(\frac{y_i - \mu_i}{\sigma}\bigg)^2$$

As the *deviance residual* is the signed squared root of the unit deviance,

$$r_i = \text{sign}(y_i - \mu_i) \sqrt{d_i}$$
in the case of normally distributed errors we arrive at
$$r_i = \frac{y_i - \mu_i}{\sigma} $$
which is the Pearson residual.

To confirm this consider a normal distribution with a $\hat{\mu} = 2$ and $\sigma = 0.5$ and a value of 1.

```{r}
library(extras)
mu <- 2
sigma <- 0.5
y <- 1

(y - mu) / sigma
dev_norm(y, mu, sigma, res = TRUE)
sign(y - mu) * sqrt(dev_norm(y, mu, sigma))
sign(y - mu) * sqrt(2 * (log(dnorm(y, y, sigma)) - log(dnorm(y, mu, sigma))))
```