我正在尝试使用 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 小时。
当处理长度相对较长的向量时,计算成本似乎呈指数增长。
我对吗?