R计算成本和向量长度
我试图用R生成MCMC的样本,我发现了一个有趣的点 在每个第i步中,我添加新样本如下R计算成本和向量长度,r,performance,computational-finance,R,Performance,Computational Finance,我试图用R生成MCMC的样本,我发现了一个有趣的点 在每个第i步中,我添加新样本如下 for(i in 1: M){ newsample=generate_sample(y.vec[i]); y.vec[i+1]=newsample; } 因此,我可以生成M(10^8)的长度,但这需要很多时间,比如说3天 无意中,我将其更改为double for loop语句 for(j in 1: K){ for(i in 1: L){ newsample=generate_sample(y.v
for(i in 1: M){
newsample=generate_sample(y.vec[i]);
y.vec[i+1]=newsample;
}
因此,我可以生成M(10^8)的长度,但这需要很多时间,比如说3天
无意中,我将其更改为double for loop语句
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);
}
我原以为第二个代码效率很低,但只需1小时即可生成K*L=(10000*10000)个样本
当处理长度相对较长的向量时,计算成本似乎呈指数增长
我说的对吗?您是否预先声明了
y.vec
和y.vec.total
并在其上运行循环?换句话说,如果在每次迭代中都要向元素添加元素,则需要很长时间,但如果只更新元素,则速度应该会快得多。请参阅Patrick Burns的R inferno。生成样本的许多方法都是矢量化的,例如,您不需要单独使用函数为每个值生成数字,但同时对所有的价值观。例如,你将用“形式(10)”代替“形式(1:10中的i)”u[i]