Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Cadenas de Markov
1. Introducción
Una aplicación interesante del álgebra lineal se tiene cuando en el estudio de eventos aleatorios
algunos sucesos ocurren dependiendo de los resultados del evento inmediatamente anterior.
Muchos de estos eventos generalmente son analizados mediante un método denominado
cadenas de Markov , en honor al matemático ruso Andréi Andréyevich Markov (1856 -
1922) quien lo introdujo en 1906.
Grosso modo, una cadena de Markov es una sucesión de valores de una variable alea-
toria en la que el valor de la variable en el futuro depende del valor de esta en el presente,
pero además, los valores históricos de la variable deben conocerse.
Por otra parte, es muy importante mencionar que gran parte del contenido
expuesto en este documento se encuentra en el libro Álgebra lineal y sus apli-
caciones 1 , la pretención del presente es constituirse en una fuente que amplíe
un poco las exposiciones hecha en dicho libro y proporcionar herramientas
tecnológicas aplicadas en Python para los estudiantes del curso Álgebra Lineal
Aplicada de la Cohorte 4 del Programa de Maestría en Matemáticas Aplicadas
de la Universidad Sergio Arboleda de Bogotá - Colombia.
2. Preliminares
Iniciemos esta sección de preliminares con un ejemplo clásico en el estudio inicial de qué es
una probabilidad, consideremos el siguiente problema:
PROBLEMA:
Sean dos dados no cargados que se lanzan a la vez, determinemos una manera de
representar todos los posibles resultados que aparecen sobre las caras superiores y
definamos probabilidades asociadas al hecho de lanzar dos dados.
En matemáticas es muy importante la organización y presentación de los resultados del pro-
blema que se quiere resolver. Conocer cómo otros han resuelto problemas, nos proporcionan
estrategias cuando nos ponemos en la tarea de solucionar problemas, así, los posibles resultados
del lanzamiento de un par de dados podemos representarlos mediante el siguiente dibujo:
4
Dado 2
3
1
1 2 3 4 5 6
Dado 1
1
1 2 3 4 5 6
para este ejemplo, tenemos que 5 de las 36 opciones suman 6, esto es un 13.8 %, así, diremos
que:
• Al conjunto Ω de todos los resultados posibles del experimiento, el espacio muestral del
experimento.
Por supuesto, dependiendo del experimento se definirá el espacio muestral y con este, los
eventos.
1. ∅ ∈ Σ.
2. Si E ∈ Σ, entonces E C ∈ Σ.
1. P (Ω) = 1.
Con base en estas definiciones y siguiendo con nuestro ejemplo, tenemos que:
1. Ω = {2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}
2. B = P(Ω), el conjunto de las partes de Ω (el conjunto de los subconjuntos de Ω).
Número de resultados del experimiento en el evento E
3. P : Ω → R : E 7→ P (E) = .
36
A continuación listamos otros ejemplos asociados al lanzar dos dados:
1. Consideremos el espacio probabilístico (Ω, B, P ) donde:
• Ω = {1, 2, 3, 4, 5, 6} × {1, 2, 3, 4, 5, 6} (el conjunto representado en las imágenes
previas)
• B = P(Ω)
|E|
• P : Ω → R : E 7→ P (E) = donde |E| es el número de elementos de E.
36
5
Por ejemplo, si E = {(1, 5), (2, 4), (3, 3), (4, 2), (5, 1)}, entonces P (E) = .
36
2. Los mismo conjuntos Ω y B del ejemplo anterior con:
P : B −→ R
Número de parejas en E con al menos una componente par
E 7−→ P (E) = .
27
2
Por ejemplo, si E = {(1, 5), (2, 4), (3, 3), (4, 2), (5, 1)}, entonces P (E) = .
27
3. Los mismo conjuntos Ω y B anteriores con:
P : B −→ R
Número de parejas en E cuya suma sea divisible entre 3
E 7−→ P (E) = .
11
5
Por ejemplo, si E = {(1, 5), (2, 4), (3, 3), (4, 2), (5, 1)}, entonces P (E) = .
11
Siguiendo con el experimento de lanzar un par de dados y registar la suma, podríamos por
ejemplo, interesarnos por saber el número posible de resultados que suman un determinado
número, obteniéndose una tabla como la siguiente:
Suma 2 3 4 5 6 7 8 9 10 11 12
# de resultados 1 2 3 4 5 6 5 4 3 2 1
Si observamos, estamos asociando un número real a cada resultado de nuestro experimento,
por tanto, estamos ante una función cuyo dominio es el conjunto de resultados posibles, es de-
cir, el espacio muestral y cuyo codominio es R. Si con X representamos a esta función, tenemos:
X = z,
Ejemplos:
1. Sea X la variable aleatoria del ejemplo anterior, entonces tenemos, por ejemplo, que
X(9) = 4, X(6) = 5, {ω ∈ Ω | X(ω) = 3} = {4, 10} y por tanto P (X = 3) = 366
.
2. Sea Ω el mismo conjunto del ejemplo que venimos trabajando (o sea, los números na-
turales del 2 al 12) y Y la variable aleatoria que asigna a cada ω de Ω el número de
resultados (cuando se lanzan dos dados y vemos su suma) cuya suma es divisibles entre
ω. A continuación una tabla con estos valores:
ω 2 3 4 5 6 7 8 9 10 11 12
Y (ω) 18 12 9 7 6 6 5 4 3 2 1
Y (5) = 7 significa que 7 de los posibles resultados de sumar los números al lanzar
dos dados, son divisibles entre 5 (estos son: (1, 4), (2, 3), (3, 2), (4, 1), (4, 6), (5, 5), (6, 4)).
En esta sección introduciremos las cadenas de Markov a través del siguiente problema:
PROBLEMA:
Según algunos estudios realizados en cierta ciudad que tiene el servicio de tres
canales de televisión, se conoció que el canal 1 tiene el 40 % de televidentes en
el horario familiar, el canal 2 el 45 % y el canal 3 el resto. Con el propósito de
aumentar su porcentaje de televidentes en el horario famliar, el canal 1 comenzó
a emitir películas de estreno. Luego de una semana de estrenos se obtuvieron los
siguentes resultados: 90 % de los televidentes del canal 1 continuaron prefiriendo
dicho canal, mientra que el 6 % se cambió al canal 3 y el 4 % al canal 2; por otra
parte 40 % de los televidentes del canal 2 se cambiaron al canal 1 y 5 % al canal
3, mientras el 55 % restante siguieron en el canal 2. Por su parte, el 30 % de
televidentes del canal 3 se cambiaron al canal 1 y el 4 % al canal 2, el resto siguió
en el mismo canal.
Como hemos afirmado, organizar la información dada es de suma importancia, por tanto, en
el siguiente dibujo presentamos una forma:
Ahora bien, en la introducción se dijo que:
Una cadena de Markov es una sucesión de valores de una variable aleatoria en
la que el valor de la variable en el futuro depende del valor de esta en el presente,
pero además, los valores históricos de la variable deben conocerse.
De modo que deben definirse las variables aleatorias del problema. Nuestro espacio muestral
Ω es la población de la ciudad sobre la cual se realiza el proceso, sea Xi : Ω → {1, 2, 3} la
variable aleatoria que determina el canal que el televidente prefiere en la semana i, esto es,
para cada ω ∈ Ω, Xi (ω) = Canal que prefiere ω en la semana i (por supuesto, 1 quiere decir
canal 1, 2 canal 2 y 3 canal 3), de modo pues que P (Xi = k) es la proporción de la población
de la ciudad que en la semana i prefieren el canal k, donde k = 1, 2, 3.
Por otra parte, nos han dicho cómo se han movido los porcentajes de preferencia de
los televidentes en los tres canales luego de una semana de estrategia del canal 1, así, por
ejemplo sabemos que P (X1 = 2 | X0 = 1) = 0.04 es decir, el porcentaje de televidentes que
prefiriendo en la semana 0 al canal 1, se pasan al canal 2 en la semana siguiente (o sea, la
semana 1). Un análisis de la información dada y ayudándonos del dibujo que presentamos,
tenemos que para la semana 1:
! P (X 1 = 1) = 0.9P (X0 = 1) + 0.4P (X0 = 2) + 0.3P (X0 = 3). En efecto, la proporción
de televidentes que preferirán el canal 1 en la semana siguiente (o sea, la semana 1) se
consigue multiplicando el porcentaje de televidentes que seguirán en el canal 1 (90 %)
junto con los porcentajes de televidentes que se pasan de los otros canales al canal 1 (40 %
del canal 2 y 30 % del canal 3). Si con pij representamos a la probabilidad condicional
P (X1 = i | X0 = j) (esto es, la proporción de personas que preferían el canal j en la
semana 0 y que ahora, en la semana 1, prefieren el canal i), podemos escribir lo anterior
como:
P (X1 = 1) = p11 P (X0 = 1) + p12 P (X0 = 2) + p13 P (X0 = 3).
! Según el problema p 21 = 0.04, p22 = 0.55, p23 = 0.04, p31 = 0.06, p32 = 0.05 y p33 = 0.66,
por tanto, para los otros dos canales:
Esto permite calcular los porcentajes en las semas 2 y 3 de manera muy parecida a como se
hizo para la semana 1, solo debe tenerse en cuenta que para el cálculo de los procentajes de
la semana 2 es importante los porcentajes de la semana anterior y para los de la semana 3 se
debe tener en cuenta los de la semana 2, veamos:
! Para la semana 2:
0.90 0.40 0.30 0.5850 0.677950
P (X2 = 1)
P (X2 = 2) = 0.04 0.55 0.04 · 0.2695 = 0.177445 ,
P (X2 = 3) 0.06 0.05 0.66 0.1455 0.144605
Como podemos apreciar el problema que estamos estudiando es una cadena de Mar-
vok. Ahora sí, resolvamos la pregunta 2c), para ello, sea:
Pt+1 = P · Pt , (1)
Usaremos Python para hacer los cálculos, sigamos los siguientes pasos:
• Carguemos el paquete SymPy el cual nos permitirá realizar los cálculos, para esto, es-
cribimos:
[1]: from sympy import Matrix
con la tecla F9 o con shif+enter cargamos el paquete una vez se haya escrito lo anterior
(si se utiliza Jupyter, como es este caso, debe aparecer un número como el de la izquierda
en la caja del texto anterior, si aparece algo como [∗] es porque aún está en proceso).
• Introducimos nuestra matriz P con la siguiente sintaxis (de nuevo, una vez introducida,
cargar con F9):
λ1 = 0.51, λ2 = 0.6 y λ3 = 1,
5.20689655172414
−10 −1
~v1 = 9 , ~v2 = 0 y ~v3 = 0.551724137931034 .
1 1 1
• Copiamos estos tres vectores directamente del resultado anterior y los llamamos como
aparece a continuación:
[5]: v_1=Matrix([
[-10.0],
[ 9.0],
[ 1.0]])
[6]: v_2=Matrix([
[-1.0],
[ 0],
[ 1.0]])
la notación v_1[0] indica la entrada 0 del vector v_1, de esta forma, se logra construir
toda la matriz sin necesidad de digitar cada entrada.
Mostrando M se tiene:
[9]: M
[9]: −10,0 −1,0 5,20689655172414 0,4
9,0 0 0,551724137931034 0,45
1,0 1,0 1,0 0,15
Al correrlo, se obtiene:
[10]: (Matrix([
[1, 0, 0, 0.0409297052154195],
[0, 1, 0, -0.038888888888889],
[0, 0, 1, 0.147959183673469]]),
(0, 1, 2))
No olvidemos que estos son los tres escalares que permiten escribir a P0 como combina-
ción lineal de los vectores propios de la matriz P , esto es:
P1 = P · P0
= P · (b1~v1 + b2~v2 + b3~v3 )
= b1 · (P ~v1 ) + b2 · (P ~v2 ) + b3 · (P ~v3 )
= b1 (λ1~v1 ) + b2 (λ2~v2 ) + b3 (λ3~v3 )
y P2 como:
P2 = P · P1
= P · (b1 λ1~v1 + b2 λ2~v2 + b3 λ3~v3 )
= b1 λ1 · (P ~v1 ) + b2 λ2 · (P ~v2 ) + b3 λ3 · (P ~v3 ) .
= b1 λ1 (λ1~v1 ) + b2 λ2 (λ2~v2 ) + b3 λ3 (λ3~v3 )
= b1 λ21~v1 + b2 λ22~v2 + b3 λ23~v3
Siguiendo con estos cálculos, encontramos que para todo t ∈ N, Pt puede escri-
birse como:
Pt = b1 λt1~v1 + b2 λt2~v2 + b3 λt3~v3 , (5)
una expresión que a diferencial de las halladas en (1) o en (2) resulta mucho más fácil de
manipular, incluso a mano. Por otra parte, podríamos analizar qué pasa cuando t → ∞
lo cual, en esencia es lo que nos piden en la pregunta 2c) de nuestro problema. Pues
bien, como λ1 = 0.51, λ2 = 0.6 y λ3 = 1, entonces cuando t → ∞ , λt1 → 0, λt2 → 0 y
λt3 → 1, de modo que, Pt → b3~v3 , haciendo el cálculo en Python:
[11]: N=Matrix([
[1, 0, 0, 0.0409297052154195],
[0, 1, 0, -0.038888888888889],
[0, 0, 1, 0.147959183673469]])
[12]: N
[12]: 1 0 0 0,0409297052154195
0 1 0 −0,038888888888889
0 0 1 0,147959183673469
[13]: b_1=N[0,3]
[14]: b_2=N[1,3]
[15]: b_3=N[2,3]
[17]: b_3*v_3
[17]: 0,770408163265304
0,0816326530612242
0,147959183673469
Por tanto, bajo la hipótesis de que los porcentajes de televidentes que se cambian
de un canal a otro se conserva igual que en la primera semana, se espera que
después de mucho tiempo el canal 1 tenga el 77.04 % de los televidentes del horario
familiar, mientras el canal 2 el 8.16 % y el canal 3 el 14.8 %.
Cadenas de Markov y un tipo de inventario
Para las empresas es fundamental el control de su inventario ya que al hacerlo puede reducir
costos relacionados con el mantenimiento de las existencias y de esta manera cumplir, como
es debido, con las demandas de los consumidores.
PROBLEMA:
Supongamos que cierta empresa cuenta con un artículo para la venta, cuyas unida-
des están en un almacén, se sabe que las órdenes del artículo se producen durante
un periodo conocido (puede ser este cada semana, cada mes, cada bimestre, etc.)
y que el tiempo de entrega es prácticamente nulo (al hacer los pedidos estos llegan
rápido). Para este problema consideremos lo siguiente:
1. D1 , D2 , D3 , . . . representan las demandas del artículo en el primero, segundo,
tercer, etc., periodos, respectivamente.
2. Las demandas Di (i = 1, 2, 3, . . .) se supondrán variables aleatorias indepen-
dientes2 , distribuidas de manera idéntica y con distribución de Poisson3 de
parámetro λ (demanda promedio del producto).
3. Con Xi (i = 0, 1, 2, . . .) se representará al número de unidades del artículo
disponibles al finalizar el periodo i.
4. Para el inicio del poceso, es decir i = 0, se supondrá que X0 = m.
2
Es decir, la demanda Dj no depende de la demanda Dj−1 ni de ninguna otra.
3
La distribución de Poisson es una distribución de probabilidad discreta que expresa, a partir de una
frecuencia de ocurrencia media (λ), la probabilidad de que ocurra un determinado número de eventos duran-
te cierto período de tiempo. Concretamente, se especializa en la probabilidad de ocurrencia de sucesos con
probabilidades muy pequeñas, o sucesos raros, la función de densidad de probabilidad de esta distribución es:
λk −λ
f (k, λ) = e ,
k!
donde, k es el número de ocurrencias del evento o fenómeno (la función nos da la probabilidad de que el evento
suceda precisamente k veces), λ es un parámetro positivo que representa el número de veces que se espera que
ocurra el fenómeno durante un intervalo dado.
5. El conteo del invetario del producto se lleva a cabo al finalizar cada periodo y:
• Se hacen órdenes del pedido del artículo si y solo si, en el conteo hecho en
el periodo, el número de artículos es cero. En este caso se hace un pedido
de m artículos.
• No se hace pedido, si al hacer el conteo quedan existencias del artículo en
el almacén.
Determinar el modelo matemático que pemita calcular los porcentajes de
que en el almacén de esta empresa se encuentren 0, 1, 2, . . . , m unidades
del artículo.
Veamos que este problema corresponde a un proceso de Markov:
• Se conocen las demandas del producto en cada periodo, así este se constituye en el
sistema de estudio, además, estas son independientes.
• En el sistema existen m + 1 estados, esto es, que hayan 0, 1, 2, . . . , m unidades del pro-
ducto cuando se haga el inventario en cada periodo.
• Xi = Número de unidades de artículo en inventario al final del periodo i, es una va-
riable aleatoria cuyo dominio es {0, 1, 2, . . . , m} e i = 0, 1, 2, 3, . . .. Estas variables son
dependientes ya que los valores de Xi+1 depende de los de Xi .
• Con todo lo anterior y el supuesto de que el pedido depende solo del estado en que se
encuentra el almacén al final de cada periodo, se concluye que el problema se trata de
un proceso de Markov.
Ahora bien, determinemos el modelo matemático:
Al calcular estas sumas para cada i ∈ {0, 1, 2, . . . , m}, obtenemos el siguiente sistema:
P (Xt+1 = 0) p00 p01 p02 p03 p04 ··· p0m P (Xt = 0)
P (Xt+1 = 1) p10 p11 p12 p13 p14 ··· p1m P (Xt = 1)
P (Xt+1 = 2)
p20 p21 p22 p23 p24 ··· p2m
P (Xt = 2)
P (Xt+1 = 3)
p30 p31 p32 p33 p34 ··· p3m
P (Xt = 3)
P (Xt+1 = 4) =
p40 p41 p42 p43 p44 ··· p4m ·
P (Xt = 4)
. . . . . . . .
.
. . . . . . . . .
.
. . . . . . . .
P (Xt+1 = m − 1) pm−10 pm−11 pm−12 pm−13 pm−14 ··· pm−1m P (Xt = m − 1)
P (Xt+1 = m) pm0 pm1 pm2 pm3 pm4 ··· pmm P (Xt = m)
Por tanto, procedamos a hallar las entradas de la matriz del sistema anterior, iniciemos
calculando p00 :
!p 00 = P (Xt+1 = 0 |Xt = 0) como se dijo, es la probabilidad de que al final del periodo
t no hayan artículo en el almacén y que al final del siguiente tampoco hayan. Por las
características del problema, se sabe que al final del periodo t y hecho el inventario, como
hay cero unidades del producto, se procede a hacer un pedido de m unidades, las cuales,
al final de siguiente periodo se han agotado también, esto quiere decir que la demanda
del artículo superó a m, luego:
m−1
X
p00 = P (Dt+1 ≥ m) = 1 − P (Dt+1 ≤ m − 1) = 1 − P (Dt+1 = k),
k=0
esto es:
m−1
−λ
X λk
p00 = 1 − e .
k!
k=0
i−1 i−1 k
X X λ
p0i = 1 − P (Dt+1 ≤ i − 1) = 1 − P (Dt+1 = k) = 1 − e−λ .
k!
k=0 k=0
λm−i −λ
pi,0 = P (Dt+1 = m − i) = e .
(m − i)!
λ0 −λ
pii = P (Dt+1 = 0) = e = e−λ .
0!
···
p00 p01 p02 p03 p04 p0m−1 p0m
p10
p11 p12 p13 p14 ··· p1m−1 p1m
p20
p21 p22 p23 p24 ··· p2m−1 p2m
p30
p31 p32 p33 p34 ··· p3m−1 p3m
p40 p 41 p 42 p43 p44 · · · p 4m−1 p 4m
.. .. .. .. .. .. .. ..
. . . . . . . .
pm−10 pm−11 pm−12 pm−13 pm−14 · · · pm−1m−1 pm−1m
pm0 pm1 pm2 pm3 pm4 · · · pmm−1 pmm
donde:
m−1
X λk • pii = e−λ , i 6= 0
• p00 = 1 − e−λ
k! • pij = 0, i > j
k=0
i−1 k λj−i −λ
X λ • pij = e ,i < j
• p0i = 1 − e−λ , i 6= 0 (j − i)!
k!
k=0
λm−i −λ
• pi,0 = e , i 6= 0
(m − i)!
Ejercicio.
Como ejercicio, considere un problema de inventarios como el expuesto de ma-
nera que el número máximo de unidades del artículo que se piden es m = 5 y
cuya demanda promedio de la distribución de Poisson por periodo es λ = 2 unida-
des. Diseñe un programa en Python que permita además variar estos parámetros.
Realice todos sus cálculos e indicaciones en un cuadeno de Jupiter y genere el PDF
respectivo para subir al aula virtual.