1

我正在尝试使用 R 生成 MCMC 样本,我发现了一个有趣的点。

在每第 i 步,我添加新样本如下

for(i in 1: M){
newsample=generate_sample(y.vec[i]);
y.vec[i+1]=newsample;
}

结果,我可以生成 M(10^8) 的长度,但这需要很多时间,比如 3 天。

不小心把它改成了双for循环语句

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 小时。

当处理长度相对较长的向量时,计算成本似乎呈指数增长。

我对吗?

4

0 回答 0