我正在使用PyMC3,并不确定如何将某些变量标记为“观察值”。在一个简单的例子中,我可以将两个输入变量建模为[0,1]上的均匀分布。我知道第三个“输出”随机变量等于两个输入的乘积,并且假设我观察到第一个输入为1并且输出为0。然后我想使用PyMC3来预测第二个输入,在这种情况下必须是0。
对于我来说,如何告诉PyMC3输出是观察到的还不清楚,因为它是一个数学表达式的结果,而不是通过构造函数明确创建的。
对于我来说,如何告诉PyMC3输出是观察到的还不清楚,因为它是一个数学表达式的结果,而不是通过构造函数明确创建的。
import pymc3 as pm
with pm.Model() as model:
input1 = pm.Uniform('RV1', lower=0, upper=1, observed=1) # API is clear how to mark it observed
input2 = pm.Uniform('RV2', lower=0, upper=1) # This one is not observed
output = input1 * input2 # How to tell PyMC3 the observed value of "output"?
# Now I will do variational inference, sampling, etc... on the model
这些随机变量在技术上是布尔随机变量,但是我需要将它们建模为连续变量,以便进行变分推断。而且我有很多这样的变量,这只是一个最小的例子。设置 output.observed = 0
看起来不起作用,尽管它不会崩溃。