Convergencia de una cadena de Markov finita ergódica
P : matriz de transición de un paso
suppressPackageStartupMessages(library(expm))
El paquete expm permite elevar una matriz a una potencia dada con la función %^%
P = matrix(c(0.4, 0.3, 0.1, 0.1, 0.3, 0.2, 0.4, 0.4, 0.2, 0.4, 0.2, 0.3, 0.1,
0.1, 0.3, 0.2), nrow = 4)
Estimando P∞
P
## [,1] [,2] [,3] [,4]
## [1,] 0.4 0.3 0.2 0.1
## [2,] 0.3 0.2 0.4 0.1
## [3,] 0.1 0.4 0.2 0.3
## [4,] 0.1 0.4 0.3 0.2
P %^% 10
## [,1] [,2] [,3] [,4]
## [1,] 0.2326 0.314 0.2801 0.1734
## [2,] 0.2326 0.314 0.2801 0.1734
## [3,] 0.2326 0.314 0.2801 0.1734
## [4,] 0.2326 0.314 0.2801 0.1734
Simulación de los estados del proceso.
nsim = 1e+05
x = numeric(nsim)
x[1] = 4 # inicio estado
for (i in 2:nsim) {
if (x[i - 1] == 1)
x[i] = sample(1:4, 1, prob = P[1, ])
if (x[i - 1] == 2)
x[i] = sample(1:4, 1, prob = P[2, ])
if (x[i - 1] == 3)
x[i] = sample(1:4, 1, prob = P[3, ])
if (x[i - 1] == 4)
x[i] = sample(1:4, 1, prob = P[4, ])
}
head(x, 20)
## [1] 4 4 1 1 3 2 2 3 3 3 4 2 3 4 2 1 3 4 3 3
table(x)
## x
## 1 2 3 4
## 23093 31213 28200 17494
table(x)/nsim
## x
## 1 2 3 4
## 0.2309 0.3121 0.2820 0.1749