16.1 Normal Distribution
16.1.1 Probability Density Function
If \(\mu \in \mathbb{R}\) and \(\sigma \in \mathbb{R}^+\), then for \(y \in \mathbb{R}\), \[ \text{Normal}(y|\mu,\sigma) = \frac{1}{\sqrt{2 \pi} \ \sigma} \exp\left( - \, \frac{1}{2} \left( \frac{y - \mu}{\sigma} \right)^2 \right) \!. \]
16.1.2 Sampling Statement
y ~
normal
(mu, sigma)
Increment target log probability density with normal_lpdf(y | mu, sigma)
dropping constant additive terms.
16.1.3 Stan Functions
real
normal_lpdf
(reals y | reals mu, reals sigma)
The log of the normal density of y given location mu and scale sigma
real
normal_cdf
(reals y, reals mu, reals sigma)
The cumulative normal distribution of y given location mu and scale
sigma; normal_cdf will underflow to 0 for \(\frac{{y}-{\mu}}{{\sigma}}\)
below -37.5 and overflow to 1 for \(\frac{{y}-{\mu}}{{\sigma}}\) above
8.25; the function Phi_approx
is more robust in the tails, but must
be scaled and translated for anything other than a standard normal.
real
normal_lcdf
(reals y | reals mu, reals sigma)
The log of the cumulative normal distribution of y given location mu
and scale sigma; normal_lcdf will underflow to \(-\infty\) for
\(\frac{{y}-{\mu}}{{\sigma}}\) below -37.5 and overflow to 0 for
\(\frac{{y}-{\mu}}{{\sigma}}\) above 8.25; log(Phi_approx(...))
is more
robust in the tails, but must be scaled and translated for anything other
than a standard normal.
real
normal_lccdf
(reals y | reals mu, reals sigma)
The log of the complementary cumulative normal distribution of y given
location mu and scale sigma; normal_lccdf will overflow to 0 for
\(\frac{{y}-{\mu}}{{\sigma}}\) below -37.5 and underflow to \(-\infty\)
for \(\frac{{y}-{\mu}}{{\sigma}}\) above 8.25; log1m(Phi_approx(...))
is
more robust in the tails, but must be scaled and translated for anything
other than a standard normal.
R
normal_rng
(reals mu, reals sigma)
Generate a normal variate with location mu and scale sigma; may only
be used in transformed data and generated quantities blocks.
For a description of argument and return types, see section
vectorized PRNG functions.
16.1.4 Standard Normal Distribution
The standard normal distribution is so-called because its parameters are the units for their respective operations—the location (mean) is zero and the scale (standard deviation) one. The standard normal is parameter-free, and the unit parameters allow considerable simplification of the expression for the density. \[ \text{StdNormal}(y) \ = \ \text{Normal}(y \mid 0, 1) \ = \ \frac{1}{\sqrt{2 \pi}} \, \exp \left( \frac{-y^2}{2} \right)\!. \] Up to a proportion on the log scale, where Stan computes, \[ \log \text{Normal}(y \mid 0, 1) \ = \ \frac{-y^2}{2} + \text{const}. \] With no logarithm, no subtraction, and no division by a parameter, the standard normal log density is much more efficient to compute than the normal log density with constant location \(0\) and scale \(1\).
16.1.5 Sampling Statement
y ~
std_normal
()
Increment target log probability density with std_normal_lpdf(y)
dropping constant additive terms.
16.1.6 Stan Functions
real
std_normal_lpdf
(reals y)
The standard normal (location zero, scale one) log probability density
of y.
real
std_normal_cdf
(reals y)
The cumulative standard normal distribution of y; std_normal_cdf will
underflow to 0 for \(y\) below -37.5 and overflow to 1 for \(y\) above 8.25;
the function Phi_approx
is more robust in the tails.
real
std_normal_lcdf
(reals y)
The log of the cumulative standard normal distribution of y; std_normal_lcdf
will underflow to \(-\infty\) for \(y\) below -37.5 and overflow to 0 for \(y\)
above 8.25; log(Phi_approx(...))
is more robust in the tails.
real
std_normal_lccdf
(reals y)
The log of the complementary cumulative standard normal distribution of y;
std_normal_lccdf will overflow to 0 for \(y\) below -37.5 and underflow to
\(-\infty\) for \(y\) above 8.25; log1m(Phi_approx(...))
is more robust in the
tails.
real
std_normal_rng
()
Generate a normal variate with location zero and scale one; may only
be used in transformed data and generated quantities blocks.