pymc.logcdf#
- pymc.logcdf(rv, value, warn_rvs=None, **kwargs)[源代码]#
为随机变量的对数累积分布函数创建一个图表。
- 参数:
- rv
TensorVariable
- value : 类似张量tensor_like
应与随机变量(rv)具有相同类型(形状和数据类型)。
- warn_rvs : 布尔值,默认值
True
bool, 默认 python:True 如果在 logcdf 图中发现 RVs,则发出警告。当一个变量以其他随机变量为输入时,可能会发生这种情况。在这种情况下,这些随机变量应替换为其各自的值。
- rv
- 返回:
- logp
TensorVariable
- logp
- Raises:
RuntimeError
如果无法导出 logcdf。
示例
创建一个编译函数,用于评估变量的对数累积分布函数
import pymc as pm import pytensor.tensor as pt mu = pt.scalar("mu") rv = pm.Normal.dist(mu, 1.0) value = pt.scalar("value") rv_logcdf = pm.logcdf(rv, value) # Use .eval() for debugging print(rv_logcdf.eval({value: 0.9, mu: 0.0})) # -0.2034146 # Compile a function for repeated evaluations rv_logcdf_fn = pm.compile_pymc([value, mu], rv_logcdf) print(rv_logcdf_fn(value=0.9, mu=0.0)) # -0.2034146
推导随机变量变换的图
import pymc as pm import pytensor.tensor as pt mu = pt.scalar("mu") rv = pm.Normal.dist(mu, 1.0) exp_rv = pt.exp(rv) value = pt.scalar("value") exp_rv_logcdf = pm.logcdf(exp_rv, value) # Use .eval() for debugging print(exp_rv_logcdf.eval({value: 0.9, mu: 0.0})) # -0.78078813 # Compile a function for repeated evaluations exp_rv_logcdf_fn = pm.compile_pymc([value, mu], exp_rv_logcdf) print(exp_rv_logcdf_fn(value=0.9, mu=0.0)) # -0.78078813
定义一个自定义分布的 logcdf
import pymc as pm import pytensor.tensor as pt def normal_logcdf(value, mu, sigma): return pm.logp(pm.Normal.dist(mu, sigma), value) with pm.Model() as model: mu = pm.Normal("mu") sigma = pm.HalfNormal("sigma") pm.CustomDist("x", mu, sigma, logcdf=normal_logcdf)