模拟R中的2D偏置随机游走

时间:2016-07-07 22:57:52

标签: r random statistics physics

在R中,你如何模拟一个离散的有偏随机游走,其中有一系列点吸引代理?

答案最好包括控制粒子扩散系数的术语。

谢谢!

1 个答案:

答案 0 :(得分:0)

调整https://stat.ethz.ch/pipermail/r-help/2010-December/261947.html

中的代码

然后,您可以添加循环遍历数组的条件函数。如果粒子位置在半径范围内(或者为了本示例的目的,则为方形) - 你可以添加第二个随机事件,如果这是真的,粒子在那个方向上得到一个额外的步骤,如果是,则不是。

RW2D<-function(N)  {    i<-0    xdir<-0    ydir<-0    xpos<-vector()   xpos[1]<-xdir    ypos<-vector()    ypos[1]<-ydir    for (i in 1:N-1)



      attraction_points <- my.array <- array(1:24, dim=c(2))



     {
       r<-runif(1)
       if(r<=0.25) {xdir<-xdir+1}
       if(r>0.25 && r<=0.5) {xdir<-xdir-1}
       if(r>0.5 && r<=0.75) {ydir<-ydir +1}
       if(r>0.75) {ydir<-ydir-1}




       for (j in 1:24){
       if ( abs(attraction_points[j,0]-xpos) < 4 ){ 
            if ( abs(attraction_points[j,1]-ypos) < 4 ){
                 if(runif(1)<=0.5) {xdir<-xdir+ 1*sign(attraction_points[j,0]-xpos)}
                 if(runif(1)<=0.5) {ydir<-ydir+ 1*sign(attraction_points[j,1]-ypos)}
            }
     }
}        



        xpos[i+1]<-xdir
        ypos[i+1]<-ydir


     }    return(cbind(xpos,ypos))  } rw<-RW2D(10000)

xmin<-min(rw[,1]) xmax<-max(rw[,1]) ymin<-min(rw[,2]) ymax<-max(rw[,2])

plot(rw[,1],rw[,2],type="l",xlab="x",ylab="y",main="Random Walk Simulation In Two Dimensions",col="green4",xlim=range(xmin:xmax),ylim=range(ymin:ymax))

end<-cbind(rw[10000,1],rw[10000,2]) start<-cbind(0,0)

points(start,pch=4,col="red") points(end,pch=4,col="red")

NB我自己没有运行代码,但这应该说明这个想法,你应该能够修复任何错误yoruself。