问题描述
我试图用STAN估计多元正态分布的均值和协方差矩阵。我首先导入pystan并生成数据。我基本上是尝试遵循Python的官方YouTube tutorial。
import pystan as ps
import numpy as np
data = np.random.multivariate_normal(mean=[0.7,0],cov=[[1,1],[1,2]],size=200)
然后我指定我的模型。我的数据形状为(200,2)。由于我具有多元分布,因此均值必须是向量,协方差必须是矩阵。
model =
"""
data
{
int N; // Number of data points.
vector[2] X[N]; // Values.
}
parameters
{
vector[2] mu; // Mean
matrix[2,2] sigma; // Covariance matrix.
}
model
{
X ~ multi_normal(mu,sigma);
}
"""
然后我将数据放入字典中,如YouTube上的STAN教程所示
my_data = {"N": 200,"X": data}
sm = ps.StanModel(model_code = model)
模型编译没有问题。但是,当我尝试拟合模型时,会出现运行时错误。
fit = sm.sampling(data=my_data,iter=1000,chains=4)
导致
/usr/lib/python3.6/multiprocessing/pool.py in get(self,timeout)
642 return self._value
643 else:
--> 644 raise self._value
645
646 def _set(self,i,obj):
RuntimeError: Initialization failed.
我不确定是什么原因导致此错误,因为我的代码只是本教程中代码的略微抽象。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)