我建立了一个有偏差的相关随机游走,我设法建立了RW,并将其偏向西方运动。
问题:我需要将步行绑定在一个(或所有)方面。
目前的代码是:
walk<-function(n.times){
plot(524058:542800,2799758:2818500,type="n",
xlab="Easting",ylab="Northing")#arena
y<-2815550 ##startY
x<-542800 #startX
N<-4000
E<-4000
points(x,y,pch=16,col="red",cex=1)
for (i in 1:n.times) {
yi <- sample(c(N,N/2,N/4,N/8,N/12,N/16,
0,-N,-N/2,-N/4,-N/8,-N/12,-N/16),1)
xi<-sample(c(E,E/12,E/16, 0,-E,-E/2,-E/4,-E/8,-E/12,-E/16),1)
lines(c(x,x+xi),c(y,y+yi),col="blue")
x<-x+xi
y<-y+yi
}
}
iterations<-125
walk(iterations)
到目前为止,我最接近的是
if(y>2818500 | y<2799758 | x>542800 | x<524058) break
如果它离开竞技场就会停止行走。
答案 0 :(得分:9)
该函数的略微清理版本:主要更改是添加repeat {}
循环,该循环将重新选择该步骤,直到新位置在限制范围内(也可以使用{{1循环)。
更新:没有仔细阅读问题陈述,忘记了偏见。该代码以与OP代码相同的方式包含偏差。对于N-S运动,平均步长为0;对于E-W运动,通过省略一些积极的步骤可能性,我们得到while() {}
等于-0.0875;由于步骤可能性是均匀采样的,因此步行向左漂移平均每步mean(steps.x)
个单位。
0.0875*stepsize[1]