library(expm)
## Cargando paquete requerido: Matrix
##
## Adjuntando el paquete: 'expm'
## The following object is masked from 'package:Matrix':
##
## expm
Cadenas de Markov
Ejercicio 1
a. Construir la matriz de transición:
# Definir la matriz de transición
P <- matrix(c(0.7, 0.3, 0.0,
0.6, 0.0, 0.4,
1.0, 0.0, 0.0),
nrow = 3, byrow = TRUE)
# Nombrar las filas y columnas
rownames(P) <- colnames(P) <- c("A", "B", "C")
print(P)
## A B C
## A 0.7 0.3 0.0
## B 0.6 0.0 0.4
## C 1.0 0.0 0.0
La matriz de transición construida muestra las probabilidades de
transición entre los estados A, B y C. Por ejemplo, la probabilidad de
permanecer en el estado A es 0.7, mientras que la probabilidad de
moverse de A a B es 0.3.
b. Calcular la distribución de estado estacionario:
# Calcular la distribución de estado estacionario
n <- 100
P_n <- P %^% n
estado_estacionario <- P_n[1,]
print(estado_estacionario)
## A B C
## 0.70422535 0.21126761 0.08450704
La distribución de estado estacionario obtenida muestra que, a largo
plazo, aproximadamente el 70.4% del tiempo se espera que el sistema esté
en el estado A, el 21.1% en el estado B y el 8.5% en el estado C. Esto
indica que el estado A es el más frecuente en el largo plazo.
Ejercicio 2
a. Representar la matriz de transición:
Esto implica que:
Soleado a Soleado = 1 - (0.2 + 0.1) = 0.7
Nublado a Nublado = 1 - (0.3 + 0.3) = 0.4
Lluvioso a Lluvioso = 1 - (0.2 + 0.5) = 0.3
# Definir la matriz de transición
P_clima <- matrix(c(0.7, 0.2, 0.1,
0.3, 0.4, 0.3,
0.2, 0.5, 0.3),
nrow = 3, byrow = TRUE)
# Nombrar las filas y columnas
rownames(P_clima) <- colnames(P_clima) <- c("Soleado", "Nublado", "Lluvioso")
print(P_clima)
## Soleado Nublado Lluvioso
## Soleado 0.7 0.2 0.1
## Nublado 0.3 0.4 0.3
## Lluvioso 0.2 0.5 0.3
La matriz de transición representa las probabilidades de transición
entre los estados Soleado, Nublado y Lluvioso. Por ejemplo, hay un 70%
de probabilidad de que un día soleado siga siendo soleado el siguiente
día.
b. Verificar si es una cadena de Markov regular:
# Verificar regularidad
es_regular <- function(P) {
n <- nrow(P)
for (i in 1:100) {
if (all(P %^% i > 0)) {
return(TRUE)
}
}
return(FALSE)
}
print(es_regular(P_clima))
## [1] TRUE
El resultado TRUE indica que la cadena de Markov es regular, es
decir, es posible llegar de cualquier estado a cualquier otro estado en
algún número de pasos.
c. Calcular la distribución de probabilidad a largo plazo:
# Calcular la distribución de estado estacionario
P_n_clima <- P_clima %^% n
estado_estacionario_clima <- P_n_clima[1,]
print(estado_estacionario_clima)
## Soleado Nublado Lluvioso
## 0.4655172 0.3275862 0.2068966
La distribución a largo plazo muestra que aproximadamente el 46.6%
del tiempo el clima será soleado, el 32.8% del tiempo será nublado y el
20.7% del tiempo será lluvioso.
Ejercicio 3
a. Probabilidad de que un auto seleccionado al azar esté en
operación después de dos días:
# Definir la matriz de transición
P_vehiculos <- matrix(c(0.7, 0.2, 0.1,
0.5, 0.4, 0.1,
0.3, 0.3, 0.4),
nrow = 3, byrow = TRUE)
# Nombrar las filas y columnas
rownames(P_vehiculos) <- colnames(P_vehiculos) <- c("Operación", "Mantenimiento", "Reparación")
# Probabilidad de estar en operación después de dos días
P_2dias <- P_vehiculos %*% P_vehiculos
# Probabilidad de que un auto seleccionado al azar esté en operación
prob_auto_operacion <- P_2dias[1, 1]
print(prob_auto_operacion)
## [1] 0.62
La probabilidad de que un auto esté en operación después de dos días
es 0.62, lo que indica que es más probable que un auto se mantenga
operativo en comparación con los otros estados.
b. Distribución de estado estable para cada tipo de vehículo:
# Calcular la distribución de estado estacionario
estado_estacionario_vehiculos <- P_vehiculos %^% 100
print(estado_estacionario_vehiculos[1,])
## Operación Mantenimiento Reparación
## 0.5892857 0.2678571 0.1428571
La distribución de estado estable muestra que, a largo plazo, el
58.9% de los vehículos estarán en operación, el 26.8% en mantenimiento y
el 14.3% en reparación.
Ejercicio 4
a. Probabilidad de que después de dos días sea un día de alta
actividad:
# Definir la matriz de transición
P_restaurante <- matrix(c(0.6, 0.3, 0.1,
0.2, 0.5, 0.3,
0.1, 0.3, 0.6),
nrow = 3, byrow = TRUE)
# Nombrar las filas y columnas
rownames(P_restaurante) <- colnames(P_restaurante) <- c("Bajo", "Medio", "Alto")
# Probabilidad de estar en alta actividad después de dos días
P_2dias_restaurante <- P_restaurante %*% P_restaurante
# Probabilidad de que el restaurante esté en alta actividad después de dos días
prob_alta_actividad <- P_2dias_restaurante[1, 3]
print(prob_alta_actividad)
## [1] 0.21
La probabilidad de que un día de baja actividad se convierta en un
día de alta actividad después de dos días es 0.21, lo que indica una
transición moderada hacia alta actividad.
b. Distribución de estado estable para el modelo:
# Calcular la distribución de estado estacionario
estado_estacionario_restaurante <- P_restaurante %^% 100
print(estado_estacionario_restaurante[1,])
## Bajo Medio Alto
## 0.275 0.375 0.350
La distribución de estado estable muestra que, a largo plazo, el
27.5% de los días serán de baja actividad, el 37.5% de los días serán de
actividad media y el 35% de los días serán de alta actividad.
Poisson
Ejercicio 1
a. Probabilidad de que lleguen exactamente 15 clientes en una
hora:
lambda <- 10 # tasa de llegadas por hora
k <- 15
prob_15_clientes <- dpois(k, lambda)
print(prob_15_clientes)
## [1] 0.03471807
La probabilidad de que lleguen exactamente 15 clientes en una hora
es 0.0347 (3.47%). Esta baja probabilidad sugiere que es poco común
recibir exactamente 15 clientes en una hora, dado que el promedio es de
10 clientes por hora.
b. Probabilidad de que lleguen más de 20 clientes en dos horas:
lambda_2h <- 2 * lambda # tasa de llegadas en dos horas
prob_mas_20 <- 1 - ppois(20, lambda_2h)
print(prob_mas_20)
## [1] 0.4409074
La probabilidad de que lleguen más de 20 clientes en dos horas es
0.4409 (44.09%). Esta probabilidad indica que es bastante posible que la
cantidad de clientes en dos horas supere los 20, dado el promedio de 20
clientes en dos horas.
Ejercicio 2
a. Probabilidad de que no haya llamadas en 10 minutos:
lambda_10min <- (3 / 15) * 10 # tasa de llegadas en 10 minutos
prob_no_llamadas <- dpois(0, lambda_10min)
print(prob_no_llamadas)
## [1] 0.1353353
La probabilidad de que no haya llamadas en 10 minutos es 0.1353
(13.53%). Esto indica que es relativamente improbable que no se reciba
ninguna llamada en un periodo de 10 minutos.
b. Probabilidad de que lleguen al menos 10 llamadas en una
hora:
lambda_1h <- (3 / 15) * 60 # tasa de llegadas en una hora
prob_al_menos_10 <- 1 - ppois(9, lambda_1h)
print(prob_al_menos_10)
## [1] 0.7576078
La probabilidad de que lleguen al menos 10 llamadas en una hora es
0.7576 (75.76%). Esto sugiere que es muy probable que se reciban 10 o
más llamadas en el transcurso de una hora.
Ejercicio 3
a. Probabilidad de que reciban exactamente 6 llamadas en una
hora:
lambda_taller <- 4 # tasa de llegadas por hora
k_taller <- 6
prob_6_llamadas <- dpois(k_taller, lambda_taller)
print(prob_6_llamadas)
## [1] 0.1041956
La probabilidad de recibir exactamente 6 llamadas en una hora es
0.1042 (10.42%). Esto indica que recibir 6 llamadas en una hora es un
evento moderadamente probable.
Ejercicio 4
a. Probabilidad de que no entren clientes en los primeros 30
minutos:
lambda_libreria <- 5 # tasa de llegadas por hora
lambda_30min <- lambda_libreria / 2 # tasa de llegadas en 30 minutos
prob_no_clientes <- dpois(0, lambda_30min)
print(prob_no_clientes)
## [1] 0.082085
La probabilidad de que no entren clientes en los primeros 30 minutos
es 0.0821 (8.21%). Esto sugiere que es poco común que no entre ningún
cliente en un periodo de 30 minutos.
b. Probabilidad de que entren más de 10 clientes en tres horas:
lambda_3h <- 3 * lambda_libreria # tasa de llegadas en tres horas
prob_mas_10_clientes <- 1 - ppois(10, lambda_3h)
print(prob_mas_10_clientes)
## [1] 0.8815356
La probabilidad de que entren más de 10 clientes en tres horas es
0.8815 (88.15%). Esto indica que es muy probable que la tienda reciba
más de 10 clientes en un periodo de tres horas.
Ejercicio 5
a. Probabilidad de que no reciban ninguna llamada en un intervalo de
15 minutos:
lambda_15min <- 10 / 4 # tasa de llegadas en 15 minutos
prob_no_llamadas_15min <- dpois(0, lambda_15min)
print(prob_no_llamadas_15min)
## [1] 0.082085
La probabilidad de que no se reciba ninguna llamada en 15 minutos es
0.0821 (8.21%). Esto indica que es poco probable que no haya ninguna
llamada en un periodo de 15 minutos.
b. Probabilidad de recibir exactamente 15 llamadas en una hora
seleccionada al azar, dado que se recibieron 120 llamadas en un
día:
lambda_1h_dia <- 120 / 8 # tasa de llegadas por hora dado que se recibieron 120 llamadas en un día
prob_15_llamadas_1h <- dpois(15, lambda_1h_dia)
print(prob_15_llamadas_1h)
## [1] 0.1024359
La probabilidad de recibir exactamente 15 llamadas en una hora
seleccionada al azar es 0.1024 (10.24%). Esta probabilidad muestra que
es moderadamente probable recibir exactamente 15 llamadas en una hora
específica durante un día ocupado.