2. Cadena Markov – Ejemplo: Clima con dos días

Referencia: Ross p.193, 197

(4.4) Pronostico del clima con dos días

Suponga que si llueve o no hoy depende de las condiciones del clima de los dos últimos días.

Si ha llovido en los dos últimos días, entonces que llueva mañana tiene probabilidad de 0.7;
si llovió hoy pero no ayer, entonces que llueva mañana tiene probabilidad de 0.5;
si llovio ayer pero no hoy, entonces que llueva mañana tiene probabilidad de 0.4;
si no ha llovido ni ayer ni hoy, entonces que llueva mañana tiene probabilidad de 0.2

Solución propuesta

Se puede hacer un modelo de cadena de Markov haciendo que el estado del clima mañana sea determinado por las condiciones de hoy y ayer:

Estado 0: si ha llovido hoy y ayer
Estado 1: si ha llovido hoy pero no ayer
Estado 2: Si ha llovido ayer pero no hoy
Estado 3: si no ha llovido ayer y tampoco hoy

Para considerar los posibles estados añadiendo los valores cuando está soleado, dado que el problema enuncia solo cuando lloverá.

con lo que se puede construir el diagrama de transición de estados:

y la matriz de transición es entonces:

p= \begin{pmatrix} 0.7 & 0 & 0.3 & 0 \\ 0.5 & 0 & 0.5 & 0 \\ 0 & 0.4 & 0 & 0.6 \\ 0 & 0.2 & 0 & 0.8 \end{pmatrix}

(4.9) Pronóstico para pasado mañana

Siguiendo con el ejemplo anterior.
Dado que llovió el Lunes y Martes, ¿Cuál es la probabilidad que lloverá el Jueves?

Solución propuesta

La matriz de transición permite hacer el pronóstico hasta el miércoles, para el día jueves es necesario hacer una matriz de dos pasos dada por p(2)

p^{(2)}= \begin{pmatrix} 0.7 & 0 & 0.3 & 0 \\ 0.5 & 0 & 0.5 & 0 \\ 0 & 0.4 & 0 & 0.6 \\ 0 & 0.2 & 0 & 0.8 \end{pmatrix} \text{.} \begin{pmatrix} 0.7 & 0 & 0.3 & 0 \\ 0.5 & 0 & 0.5 & 0 \\ 0 & 0.4 & 0 & 0.6 \\ 0 & 0.2 & 0 & 0.8 \end{pmatrix} = \begin{pmatrix} 0.49 & 0.12 & 0.21 & 0.18 \\ 0.35 & 0.20 & 0.15 & 0.30 \\ 0.20 & 0.12 & 0.20 & 0.48 \\ 0.10 & 0.16 & 0.10 & 0.64 \end{pmatrix}

Que llueva el jueves es equivalente no importa si llovió o nó el miércoles, por lo que para la probabilidad del jueves se usa la probabilidad de la fila para estado 0, sumando si llovió o no el miércoles.

p(lloverá jueves|llovió lunes y martes)= p(2)00+p(2)01= = 0.49 + 0.12 = 0.61.


Usando python para determinar p(2)

# 4.9 pronostico para pasado mañana
import numpy as np

# INGRESO
p = np.array([[0.7,   0, 0.3, 0  ],
              [0.5,   0, 0.5, 0  ],
              [  0, 0.4,   0, 0.6],
              [  0, 0.2,   0, 0.8]])

#PROCEDIMIENTO
p2 = np.linalg.matrix_power(p,2)

# SALIDA
print(p2)
print('Para el jueves:', p2[0,0]+p2[0,1])
[[ 0.49  0.12  0.21  0.18]
 [ 0.35  0.2   0.15  0.3 ]
 [ 0.2   0.12  0.2   0.48]
 [ 0.1   0.16  0.1   0.64]]
Para el jueves: 0.61

 

1. Cadena Markov – Ejemplo: Pronóstico del Clima

Referencia: Ross p192, 196-197, 216

(4.1) Pronóstico del clima

Suponga que la posibilidad que llueva mañana depende de las condiciones del estado del clima de hoy. No importa las condiciones de los días anteriores, solo del estado del clima de hoy.

Suponga también que si llueve hoy, entonces lloverá mañana con una probabilidad α, y si no llueve hoy, entonces lloverá mañana con una probabilidad β.

Si se dice que el proceso esta en estado cero cuando llueve y en estado 1 cuando no llueve, entonces el problema se puede realizar con una cadena de Markov de dos estados cuyas probabilidades de transición se encuentran dadas por:

p=\begin{pmatrix} \alpha & 1-\alpha\\ \beta & 1-\beta \end{pmatrix}

(4.8) Pronóstico del clima

Considere ahora que α = 0.7 y β = 0.4.
Calcule la probabilidad que lloverá en cuatro días a partir de hoy, dado que está lloviendo hoy.

Probabilidad de un paso: solo un día, de hoy a mañana es p

p=\begin{pmatrix} 0.7 & 0.3\\ 0.4 & 0.6 \end{pmatrix}

Solución

Transiciones:

Probabilidad en dos dias, pasado mañana: p2
p^{(2)}=\begin{pmatrix} 0.7 & 0.3\\ 0.4 & 0.6 \end{pmatrix} . \begin{pmatrix} 0.7 & 0.3\\ 0.4 & 0.6 \end{pmatrix}

= \begin{pmatrix} (0.7)(0.7)+(0.3)(0.4) & (0.7)(0.3)+(0.3)(0.6)\\ (0.4)(0.7)+(0.6)(0.4) & (0.4)(0.3)+(0.6)(0.6) \end{pmatrix}

= \begin{pmatrix} 0.61 & 0.39\\ 0.52 & 0.48\end{pmatrix}
Probabilidad en tres dias: p3

Probabilidades en cuatro dias: p4
p^{(4)} = p^{(2)} p^{(2)}

p^{(4)}= \begin{pmatrix} 0.61 & 0.39\\ 0.52 & 0.48 \end{pmatrix}.\begin{pmatrix} 0.61 & 0.39\\ 0.52 & 0.48 \end{pmatrix} = \begin{pmatrix} 0.5749 & 0.4251\\ 0.5668 & 0.4332 \end{pmatrix}

Probabilidad que este lloverá en cuatro días, dado que está lloviendo hoy: p(4)00= 0.5749


El cálculo de la matriz elevado a la potencia n se puede resolver con la instrucción de numpy:

np.linalg.matrix_power(p,n)


import numpy as np

# INGRESO
p = np.array([[0.7, 0.3],
              [0.4, 0.6]])
n  = 4
# PROCEDIMIENTO
pn = np.linalg.matrix_power(p,n)

# SALIDA
print(pn)


[[ 0.5749  0.4251]
 [ 0.5668  0.4332]]

Obteniendo nuevamente el resultado p(4)00= 0.5749


(4.20) Las probabilidades al límite o a largo plazo se pueden encontrar escribiendo las ecuaciones para cada πi a partir de la matriz de transición p:

p=\begin{pmatrix} \alpha & 1-\alpha \\ \beta & 1-\beta \end{pmatrix} \pi_0 = \alpha \pi_0 + \beta \pi_1 \pi_1 = (1 - \alpha)\pi_0 + (1 - \beta )\pi_1 \pi_0 + \pi_1 = 1

resolviendo con las ecuaciones numeradas como (1), (2) y (3):

usando ecuación (1)

(1-\alpha)\pi_0= \beta \pi_1 \pi_0=\frac{\beta}{1-\alpha} \pi_1

usando ecuación (3)

\frac{\beta}{1-\alpha} \pi_1 + \pi_1 =1 \frac{\beta+(1-\alpha)}{1-\alpha} \pi_1 = 1 \pi_1=\frac{1-\alpha}{1+\beta-\alpha}

usando la ecuacion (2)

\pi_0=\frac{\beta}{(1-\alpha)} \frac{1-\alpha}{(1+\beta-\alpha)} \pi_0=\frac{\beta}{1+\beta-\alpha}

Si α = 0.7 y β = 0.4 como se usaba en el ejemplo anterior, la probabilidad a largo plazo que llueva será:

π0 = 4/7 = 0.571
resultado que también se obtiene en la columna 0 llevando la matriz p(n) a un tiempo n muy grande como en el ejemplo:

import numpy as np

# INGRESO
p = np.array([[0.7,0.3],
              [0.4,0.6]])
n = 50

# PROCEDIMIENTO
pn = np.linalg.matrix_power(p,n)

# SALIDA
print(pn)

[[ 0.57142857  0.42857143]
 [ 0.57142857  0.42857143]]