Cadenas de Markov 4 de 10
David J. Santana.
17 de octubre de 2016
Probabilidades de transición en \(n\) pasos.
Sean \(i\) y \(j\) distintos que pertencen al espacio de estados \(S\) de una Cadena de Markov con espacio temporal y de estados discreto. Le llamamos a \[p_{i,j}(n)=P(X_n=j\mid X_0=i)\] la probabilidad de transición en \(n\) pasos. Dada la matriz de probabilidades de transición en un paso \(P\), se puede demostrar que \[p_{i,j}(n)=[P^n]_{i,j}.\] De esta manera, al calcular la matriz \(P^n\), estaremos calculando todas las probabilidades de transición en \(n\) pasos. Esto es un reto difícil si la dimensión de la matriz \(P\) es muy alta.
Una manera de calcular las probabilidades \(p_{i,j}(n)\) es usando la famosa fórmula de Chapman-Kolmogorov: \[p_{i,j}(n) = \sum_{k\in S} p_{i,k}(r)p_{k,j}(n-r),\] donde \(r\) es cualquier número natural entre 1 y \(n-1\) incluyéndolos. Notar que la fórmula también es válida para \(r=0\) y \(r=n\) pero es inútil en estos casos.
La fórmula de Chapman-Kolmogorov es poco práctica para calcular \(p_{i,j}(n)\) porque subdivide el problema principal en varios problemas de menos dimensión, y entonces esos problemas se vuelven a subdividir y así sucesivamente haciendo tedioso el cálculo numérico.
Probabilidades de transición en \(n\) pasos usando simulación.
La manera alternativa es aproximar el valor exacto de la \(p_{i,j}(n)\) simulando bastantes trayectorias de tamaño \(n\) de la cadena y dividiendo el número de trayectorias exitosas entre el número total de trayectorias simuladas. La siguiente función ejecuta esta operación.
transicion_n_pasos <- function(sim,X0,P,n = 40){
dim <- length(P[1,])
pij <- numeric(sim)
contador <- numeric(dim)
for(k in 1:sim){
Xn <- X0
i <- 0
repeat{
i <- i+1
Xn <- sample(1:dim,1,T,P[Xn,])
if(i == n){break}
}
contador[Xn]=contador[Xn]+1
}
contador/sim
}
## Ejemplo
##
PowMat=function(P,n){
A=P
for(i in 1:(n-1)){
A <- A %*% P
}
A
}
##
##
P <- matrix(c(1/3,1/3,1/3,0,1/2,1/6,2/3,1/6,1/2),3,3)
P
## [,1] [,2] [,3]
## [1,] 0.3333333 0.0000000 0.6666667
## [2,] 0.3333333 0.5000000 0.1666667
## [3,] 0.3333333 0.1666667 0.5000000
p1j <- transicion_n_pasos(10000,1,P)
p2j <- transicion_n_pasos(10000,2,P)
p3j <- transicion_n_pasos(10000,3,P)
p1j
## [1] 0.3321 0.1652 0.5027
p2j
## [1] 0.3453 0.1622 0.4925
p3j
## [1] 0.3326 0.1697 0.4977
PowMat(P,20)
## [,1] [,2] [,3]
## [1,] 0.3333333 0.1666667 0.5
## [2,] 0.3333333 0.1666667 0.5
## [3,] 0.3333333 0.1666667 0.5
No hay comentarios:
Publicar un comentario