Python Pymc3:以随机变量为元素构造矩阵
我试图在PyMC3中创建一个具有多元正态分布的观察变量。我想要协方差矩阵,它的元素是其他随机变量。作为一个例子,考虑下面的代码:Python Pymc3:以随机变量为元素构造矩阵,python,distribution,bayesian,pymc3,mcmc,Python,Distribution,Bayesian,Pymc3,Mcmc,我试图在PyMC3中创建一个具有多元正态分布的观察变量。我想要协方差矩阵,它的元素是其他随机变量。作为一个例子,考虑下面的代码: import pymc3 as pm with pm.Model() as model: a = pm.Normal('a', mu=0, sigma=10) b = pm.Normal('a', mu=0, sigma=10) c = pm.Normal('a', mu=0, sigma=10) # I recognize that the ma
import pymc3 as pm
with pm.Model() as model:
a = pm.Normal('a', mu=0, sigma=10)
b = pm.Normal('a', mu=0, sigma=10)
c = pm.Normal('a', mu=0, sigma=10)
# I recognize that the matrix is not positive definite
# with this parameterization. This is just a toy example.
# The main point is that I want the elements of the matrix
# to be random variables.
cov = [[a, b]
[b, c]]
data = pm.MvNormal('data', mu=[0, 0],
cov=cov, observed=obs)
这是行不通的。使用np.array(cov)
也不起作用。我想解决的办法是以某种方式使用无张量。我不知道如何使用它们
我很感激你能帮我做这件事。谢谢。协方差矩阵的值可以来自分布,请参见此处的定义:。这个问题也是如此:有一个已经解决的例子。问题中不清楚的是,你是否希望协方差矩阵由多个独立的随机变量构成?我支持@balleveryday的评论,具体来说,LKJ是Cholesky(PSD矩阵的数字高效分解)的标准先验,PyMC3在其API中对此作了规定,如另一个答案所示,加上引用。协方差矩阵的值可以来自分布,请参见此处的定义:。这个问题也是如此:有一个已经解决的例子。问题中不清楚的是,你是否希望协方差矩阵由多个独立的随机变量构成?我支持@balleveryday的评论,具体来说,LKJ是Cholesky(PSD矩阵的数字高效分解)的标准先验,PyMC3在其API中对此作了规定,如另一个答案所示,加上参考资料。