2016-07-07 4 views
0

R에서는 에이전트가 끌리는 포인트 배열이있는 개별 바이어스 랜덤 워크를 어떻게 시뮬레이트합니까?2D 바이어스 된 랜덤 워크 시뮬레이션 R

답변에는 입자의 확산 성을 제어하는 ​​용어가 포함되는 것이 바람직합니다.

감사합니다.

답변

0

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

의 코드를 적응 그런 다음 배열을 통해 반복 조건부 기능을 추가 할 수 있습니다. 파티클 위치가 반지름 (또는이 예제의 경우 정사각형) 내에있는 경우 - 두 번째 무작위 이벤트를 추가 할 수 있습니다. 참이면 입자가 그 방향으로 추가 단계를 얻습니다 (false 인 경우).

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를 해결할 수 있어야한다.