Simulación de Cadenas de Markov 2 de 10
David J. Santana
12 de octubre de 2016
Simulación de una trayectoria de una cadena de Markov cuando conocemos su matriz de probabilidades de transición.
Caso cuando el espacio de estados es finito.
## Los argumentos serán
## n <- número de pasos
## X0 <- estado inicial
## P <- matriz de probabilidades de transición
## de dimensión finita (matriz estocástica finita)
## Eligiremos a qué estado salta la cadena con la función
## sample, más info: consultar '?sample'
simulaCadena <- function(n,X0,P){
dim <- length(P[1,]) # length = dimensión del vector
Xn <- numeric((n+1)) # declaro un vector en ceros
Xn[1] <- X0
for(i in 2:(n+1)){
aux <- Xn[i-1]
Xn[i] <- sample(1:dim,1,T,P[aux,])
}
plot((0:n),Xn,type = "o",pch = 16,col = "red")
abline(h = min(Xn):max(Xn), v =0:n, col = 'lightgray', lty = 2)
Xn
}
Ejemplo 1.
\[M= \begin{bmatrix} 1/2 & 1/2 & 0 \\ 1/2 & 1/3 & 1/6\\ 0 & 1 & 0 \end{bmatrix}\]
p0 <- c(1/2,1/2,0)
p1 <- c(1/2,1/3,1/6)
p2 <- c(0,1,0)
P <- rbind(p0,p1,p2)
par(mfrow=c(2,2))
simulaCadena(5,1,P)
## [1] 1 2 2 1 2 1
simulaCadena(5,2,P)
## [1] 2 1 2 1 1 2
simulaCadena(5,3,P)
## [1] 3 2 2 1 1 2
simulaCadena(15,3,P)
## [1] 3 2 2 2 2 3 2 2 2 2 1 2 1 1 1 2
Ejemplo Cadena de Erhenfest
#Ejemplo Erhenfest N=9
par(mfrow=c(1,1))
p0=c(0,1,0,0,0,0,0,0,0,0)
p1=c(1/9,0,8/9,0,0,0,0,0,0,0)
p2=c(0,2/9,0,7/9,0,0,0,0,0,0)
p3=c(0,0,3/9,0,6/9,0,0,0,0,0)
p4=c(0,0,0,4/9,0,5/9,0,0,0,0)
p5=c(0,0,0,0,5/9,0,4/9,0,0,0)
p6=c(0,0,0,0,0,6/9,0,3/9,0,0)
p7=c(0,0,0,0,0,0,7/9,0,2/9,0)
p8=c(0,0,0,0,0,0,0,8/9,0,1/9)
p9=c(0,0,0,0,0,0,0,0,1,0)
P=rbind(p0,p1,p2,p3,p4,p5,p6,p7,p8,p9)
simulaCadena(20,4,P)
## [1] 4 5 6 5 4 5 6 5 4 3 2 3 4 3 4 5 6 7 6 5 4
No hay comentarios:
Publicar un comentario