miércoles, 12 de octubre de 2016

20-Cadenas de Markov 2

Simulación de Cadenas de Markov 2 de 10

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