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)’
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))
}
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)
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