pymc.TruncatedNormal#

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

单变量截断正态对数似然。

此分布的pdf是

\[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)}}\]

截断正态分布可以用精度或标准差来参数化。这两种参数化之间的联系由以下公式给出:

\[\tau = \dfrac{1}{\sigma^2}\]

(Source code, png, hires.png, pdf)

../../../_images/pymc-TruncatedNormal-1.png

支持

\(x \in [a, b]\)

均值

\(\mu +{\frac {\phi (\alpha )-\phi (\beta )}{Z}}\sigma\)

方差

\(\sigma ^{2}\left[1+{\frac {\alpha \phi (\alpha )-\beta \phi (\beta )}{Z}}-\left({\frac {\phi (\alpha )-\phi (\beta )}{Z}}\right)^{2}\right]\)

参数:
mu : 类张量float,默认值为 0tensor_like of python:float, 默认值为 0

平均值。

sigma : 类似张量float, 可选tensor_like 的 python:float, 可选

标准差(sigma > 0)(仅在未指定 tau 时需要)。如果既未指定 sigma 也未指定 tau,则默认为 1。

tau : 类似张量float, 可选tensor_like 的 python:float, 可选

精度(tau > 0)(仅在未指定 sigma 时需要)。

lowertensor_like of python:float, 默认 - numpy.inf

左边界。

uppertensor_like of python:float, 默认 numpy.inf

右边界。

示例

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)

方法

TruncatedNormal.dist([mu, sigma, tau, ...])

创建一个与 cls 分布相对应的张量变量。