在PyMC3模型中使用Numpy功能

问题描述

我正在尝试使用PyMC3建立一个简单的模型。该模型应从10个离​​散的均匀分布中提取10个样本。然后,应使用那10个样本来计算每个连续样本之间的差,取绝对值并计算平均值。然后,将差异的平均值用作sigma=1的正态分布的平均值。

如果我想生成数据,这就是代码的样子:

digits = np.random.randint(0,9,size=10)
digits_diff = np.abs(np.diff(digits))
digits_diff_mean = digits_diff.mean()

或更简洁(生成100,000个样本):

obs = [np.abs(np.diff(np.random.randint(0,size=10))).mean() for i in range(100000)]

但是,当我尝试使用PyMC3对此建模时,出现了一个Numpy错误

ValueError: diff requires input that is at least one dimensional

这是我尝试建模的方式:

import pymc3 as pm


with pm.Model() as model:
    
    digits = pm.distributions.discrete.discreteUniform("digits",shape=(10,1))
    mean_diff = pm.Deterministic("mean_diff",np.abs(np.diff(digits)).mean())
    
    observation = pm.distributions.continuous.normal("obs",mean_diff,1,observed=obs)
    trace = pm.sample()
    

我的猜测是在模型中使用NumPy函数有问题,但我不明白为什么以及是否有任何解决方法

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)