Processing math: 100%
Saltar al contenido principal
Library homepage
 

Text Color

Text Size

 

Margin Size

 

Font Type

Enable Dyslexic Font
LibreTexts Español

20.2: Introducción a los modelos de Markov

( \newcommand{\kernel}{\mathrm{null}\,}\)

Login with LibreOne to run this code cell interactively.

If you have already signed in, please refresh the page.

%matplotlib inline
import matplotlib.pylab as plt
import numpy as np
import sympy as sym
sym.init_printing(use_unicode=True)
from urllib.request import urlretrieve

urlretrieve('https://raw.githubusercontent.com/colbrydi/jupytercheck/master/answercheck.py', 
            'answercheck.py');
%matplotlib inline
import matplotlib.pylab as plt
import numpy as np
import sympy as sym
sym.init_printing(use_unicode=True)
from urllib.request import urlretrieve

urlretrieve('https://raw.githubusercontent.com/colbrydi/jupytercheck/master/answercheck.py', 
            'answercheck.py');

En teoría de probabilidad, un modelo de Markov es un modelo estocástico utilizado para modelar sistemas que cambian aleatoriamente. Se supone que los estados futuros dependen únicamente del estado actual, no de los hechos ocurridos antes de él.

Un modelo de Markov.
Un diagrama que representa un proceso de Markov de dos estados, con los estados etiquetados E y A. Vía Wikipedia

Cada número representa la probabilidad de que el proceso de Markov cambie de un estado a otro, con la dirección indicada por la flecha. Por ejemplo, si el proceso de Markov está en el estado A, entonces la probabilidad de que cambie al estado E es 0.4, mientras que la probabilidad de que permanezca en el estado A es 0.6.

El modelo de estado anterior puede ser representado por una matriz de transición.

\ [\ begin {split}\ begin {array} {cc}
&\ text {Estado actual}\\
P = &
\ begin {bmatrix}
p_ {A\ rightarrow A} & p_ {E\ rightarrow A}\\
p_ {A\ rightarrow E} & p_ {E\ rightarrow E}
\ end {bmatrix}
\ end {array}
\ text {siguiente estado}\ end {split}\ nonumber\]

En otras palabras podemos escribir lo anterior de la siguiente manera

Login with LibreOne to run this code cell interactively.

If you have already signed in, please refresh the page.

A = np.matrix([[0.6, 0.7],[0.4, 0.3]])
sym.Matrix(A)
A = np.matrix([[0.6, 0.7],[0.4, 0.3]])
sym.Matrix(A)

Observe cómo las columnas de la matriz se suman a una. Esto se debe a que todas las probabilidades de transición fuera de una matriz deben sumar al 100 por ciento.

Ahora, considera el siguiente mapa de casas con gatos en cada habitación...

En cada paso de tiempo, existe la misma probabilidad de que un gato se quede en su habitación actual o se mude a una nueva habitación. Si un gato elige salir de una habitación, entonces existe la misma posibilidad de que ese gato recoja alguna de las puertas de la habitación para salir.

El diagrama de la habitación.
Hacer esto

Trate de dibujar una cadena de Markov (matriz de Markov) para el sistema de ecuaciones anterior. Prepárate para compartir tu diagrama con la clase.

Una cadena de Markov se puede representar como un modelo de transición de Markov de la formaAx=b. ¿DóndeA está su matriz de tranisición de probabilidad (a menudo representada como unaP en lugar de unaA). xes el estado antes de la transición yb es el estado después de la transición.

Pregunta

Generar un modelo de transición de Markov representado como una matrizP de la forma:

\ [
\ begin {array} {ccc}
&\ text {Sala actual}\\
P = &
\ begin {bmatrix}
p_ {11} & p_ {12} & p_ {13}\\
p_ {21} & p_ {22} & p_ {23}\\
p_ {31} & p_ {32} & p_ {33}
\ end {bmatrix}
\ end {array}
\ text {Next Room}\ nonumber\]

Dóndepij están las transiciones de probabilidad del gato moviéndose entre habitaciones (de habitaciónj a habitacióni):

Login with LibreOne to run this code cell interactively.

If you have already signed in, please refresh the page.

##put your answer here
##put your answer here

Login with LibreOne to run this code cell interactively.

If you have already signed in, please refresh the page.

from answercheck import checkanswer

checkanswer.matrix(P,'1001a6fa07727caf8ce05226b765542c');
from answercheck import checkanswer

checkanswer.matrix(P,'1001a6fa07727caf8ce05226b765542c');
Pregunta

Supongamos que el sistema comienza con; 6 gatos en la habitación 1, 15 gatos en la habitación 2 y 3 gatos en la habitación 3. ¿Cuántos gatos habrá en cada habitación después de un paso de tiempo (Almacenar los valores en un vector llamado current_state)?

Login with LibreOne to run this code cell interactively.

If you have already signed in, please refresh the page.

#Put your answer to the above question here.
#Put your answer to the above question here.

Login with LibreOne to run this code cell interactively.

If you have already signed in, please refresh the page.

from answercheck import checkanswer

checkanswer.vector(current_state,'98d5519be82a0585654de5eda3a7f397');
from answercheck import checkanswer

checkanswer.vector(current_state,'98d5519be82a0585654de5eda3a7f397');
Pregunta

El siguiente código trazará el número de gatos en función de time (t). Cuando este sistema converge, ¿cuál es el estado estacionario?

Login with LibreOne to run this code cell interactively.

If you have already signed in, please refresh the page.

#Define Start State
room1 = [6]
room2 = [15]
room3 = [3]

current_state = np.matrix([room1, room2, room3])

for i in range(10):
    #update Current State
    current_state = P*current_state
    
    #Store history for each room
    room1.append(current_state[0])
    room2.append(current_state[1])
    room3.append(current_state[2])
    
plt.plot(room1, label="room1");
plt.plot(room2, label="room2");
plt.plot(room3, label="room3");
plt.legend();
print(current_state)
#Define Start State
room1 = [6]
room2 = [15]
room3 = [3]

current_state = np.matrix([room1, room2, room3])

for i in range(10):
    #update Current State
    current_state = P*current_state
    
    #Store history for each room
    room1.append(current_state[0])
    room2.append(current_state[1])
    room3.append(current_state[2])
    
plt.plot(room1, label="room1");
plt.plot(room2, label="room2");
plt.plot(room3, label="room3");
plt.legend();
print(current_state)
Pregunta

Calcula los valores propios y los vectores propios de tu matriz deP transición.

Login with LibreOne to run this code cell interactively.

If you have already signed in, please refresh the page.

##put your answer here
##put your answer here
Hacer esto

Haz un nuevo vector llamado steadystate a partir del vector propio de tuP matriz con un valor propio de 1.

Login with LibreOne to run this code cell interactively.

If you have already signed in, please refresh the page.

## Put your answer here
## Put your answer here

Dado que los vectores de estado estacionario representan probabilidades a largo plazo, deben sumar a uno (1). Sin embargo, la mayoría de las bibliotecas de programación (por ejemplo, numpy y sympy) devuelven vectores propios “normalizados” a una longitud de 1 (es decir, norm (e) ==1).

Hacer esto

Correcto para la normalización multiplicando el vector propio de estado estacionario por una constante tal que la suma de los elementos vectoriales se sume a 1.

Login with LibreOne to run this code cell interactively.

If you have already signed in, please refresh the page.

#Put your answer here
#Put your answer here
Hacer esto

Piensa en el problema de los gatos, porque un gato tiene que estar en una de las tres habitaciones. Eso significa que el número total de gatos no cambiará. Si sumamos el número de gatos en todas las habitaciones juntos, este número tiene que ser el mismo. Por lo tanto, si arrancamos voluntad 6+15+3=24 gatos, también hay 24 gatos en el estado estacionario. Modifique el estado estacionario para asegurarse de que el número total de gatos sea 24.

Pregunta

¿Por qué la suma de los números en cada etapa sigue siendo la misma?


This page titled 20.2: Introducción a los modelos de Markov is shared under a CC BY-NC 4.0 license and was authored, remixed, and/or curated by Dirk Colbry via source content that was edited to the style and standards of the LibreTexts platform.

Support Center

How can we help?