# pymc.TruncatedNormal#

class pymc.TruncatedNormal(name, *args, rng=None, dims=None, initval=None, observed=None, total_size=None, transform=UNSET, **kwargs)[source]#

Univariate truncated normal log-likelihood.

The pdf of this distribution is

$f(x;\mu ,\sigma ,a,b)={\frac {\phi ({\frac {x-\mu }{\sigma }})}{ \sigma \left(\Phi ({\frac {b-\mu }{\sigma }})-\Phi ({\frac {a-\mu }{\sigma }})\right)}}$

Truncated normal distribution can be parameterized either in terms of precision or standard deviation. The link between the two parametrizations is given by

$\tau = \dfrac{1}{\sigma^2}$
 Support $$x \in [a, b]$$ Mean $$\mu +{\frac {\phi (\alpha )-\phi (\beta )}{Z}}\sigma$$ Variance $$\sigma ^{2}\left[1+{\frac {\alpha \phi (\alpha )-\beta \phi (\beta )}{Z}}-\left({\frac {\phi (\alpha )-\phi (\beta )}{Z}}\right)^{2}\right]$$
Parameters
mutensor_like of float, default 0

Mean.

sigmatensor_like of float, optional

Standard deviation (sigma > 0) (only required if tau is not specified). Defaults to 1 if neither sigma nor tau is specified.

tautensor_like of float, optional

Precision (tau > 0) (only required if sigma is not specified).

lowertensor_like of float, default - numpy.inf

Left bound.

upper

Right bound.

Examples

with pm.Model():
x = pm.TruncatedNormal('x', mu=0, sigma=10, lower=0)

with pm.Model():
x = pm.TruncatedNormal('x', mu=0, sigma=10, upper=1)

with pm.Model():
x = pm.TruncatedNormal('x', mu=0, sigma=10, lower=0, upper=1)


Methods

 TruncatedNormal.__init__(*args, **kwargs) TruncatedNormal.dist([mu, sigma, tau, ...]) Creates a tensor variable corresponding to the cls distribution. TruncatedNormal.logp(mu, sigma, lower, upper) TruncatedNormal.moment(size, mu, sigma, ...)

Attributes

 bound_args_indices rv_op