1.Introducción

En esta simulación de un proceso estocástico, generaremos una caminata aleatoria en dos dimensiones usando R.

’Un ebrio está parado en una esquina cuando decide caminar para que le pase el efecto.

Existe una probabilidad igual de que se dirija a cualquiera de los puntos cardinales (Este, oeste, norte, sur).

¿Donde podrá terminar parado el borracho si camina diez cuadras?’

‘Simulación: Caminata aleatoria del embriagado en dos dimensiones (CA_ebrio)’

2. Programando la función

CA_ebrio <- function(N) {
  x <- 0
  y <- 0
  xpos <- vector()
  ypos <- vector()
  xpos[1] <- x
  ypos[1] <- y
  for (i in 2:(N+1)) {
    r <- runif(n=1, min = 0, max = 1)
    if(r < 0.25) { x <- x - 1 }
    else if(r > 0.25 && r <= 0.5) { x <- x + 1 }
    else if(r > 0.5 && r <= 0.75) { y <- y + 1 }
    else { y <- y - 1 }
    xpos[i] <- x
    ypos[i] <- y
  }
  return(cbind(xpos, ypos))
}

3. Probando la función

simulacion_CA <- CA_ebrio(N=10)

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

plot(simulacion_CA[,1],simulacion_CA[,2],type="l",
     xlab="x",ylab="y",
     main="Caminata aleatoria del embriagado en 2D",
     col="darkblue",xlim=range(xmin:xmax),
     ylim=range(ymin:ymax), las=1)

end<-cbind(simulacion_CA[(10+1),1],
           simulacion_CA[(10+1),2])
start<-cbind(0,0)

points(start,pch=4,col="darkred", lwd=6)
points(end,pch=4,col="darkred",lwd=6)

4. Simulando con número de cuadras

Utilicemos más cuadras

cuadras <-50000
simulacion_CA<-CA_ebrio(N=cuadras)

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

plot(simulacion_CA[,1],simulacion_CA[,2],type="l",
     xlab="x",ylab="y",
     main="Caminata aleatoria del embriagado en 2D",
     col="darkblue",xlim=range(xmin:xmax),
     ylim=range(ymin:ymax), las=1)

end<-cbind(simulacion_CA[(cuadras+1),1],
           simulacion_CA[(cuadras+1),2])
start<-cbind(0,0)

points(start,pch=4,col="darkred", lwd=6)
points(end,pch=4,col="darkred",lwd=6)

Observación, simular 50, 100, 500, 1000, 5000, 10000, 2000 pasos