pymc.NormalMixture#
- class pymc.NormalMixture(name, w, mu, sigma=None, tau=None, comp_shape=(), **kwargs)[源代码]#
普通混合对数似然
\[f(x \mid w, \mu, \sigma^2) = \sum_{i = 1}^n w_i N(x \mid \mu_i, \sigma^2_i)\]支持
\(x \in \mathbb{R}\)
均值
\(\sum_{i = 1}^n w_i \mu_i\)
方差
\(\sum_{i = 1}^n w_i (\sigma^2_i + \mu_i^2) - \left(\sum_{i = 1}^n w_i \mu_i\right)^2\)
- 参数:
- w : 类似张量 的
float
tensor_like offloat
w >= 0 且 w <= 1 混合权重
- mu : 类似张量 的
float
tensor_like offloat
组件意味着
- sigma : 类似张量 的
float
tensor_like offloat
组件标准差
- tau : 类似张量 的
float
tensor_like offloat
组件精度
- comp_shape正态分量的形状
注意,它应该与混合分布的形状不同,最后一个轴表示组件的数量。
- w : 类似张量 的
注释
你只需要传入 sigma 或 tau,但不能同时传入两者。
示例
n_components = 3 with pm.Model() as gauss_mix: μ = pm.Normal( "μ", mu=data.mean(), sigma=10, shape=n_components, transform=pm.distributions.transforms.ordered, initval=[1, 2, 3], ) σ = pm.HalfNormal("σ", sigma=10, shape=n_components) weights = pm.Dirichlet("w", np.ones(n_components)) y = pm.NormalMixture("y", w=weights, mu=μ, sigma=σ, observed=data)
方法
NormalMixture.dist
(w, mu[, sigma, tau, ...])