我正在尝试使用R生成MCMC的样本,我发现了一个有趣的观点。
在每个第i步,我都按如下方式添加新样本
for(i in 1: M){
newsample=generate_sample(y.vec[i]);
y.vec[i+1]=newsample;
}
因此,我可以生成M(10 ^ 8)的长度,但需要花费很多时间,比如3天。
无意中,我将其更改为双循环语句
for(j in 1: K){
for(i in 1: L){
newsample=generate_sample(y.vec[i]);
y.vec[i+1]=newsample;
}
y.vec.total=c(y.vec.total,y.vec);
}
我原以为第二个代码效率低,但生成K * L =(10000 * 10000)样本只需1小时。
当处理相对较长的矢量时,似乎计算成本呈指数增长。
我是对的吗?