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.

b. Probabilidad de que reciban menos de 3 llamadas en media hora:

lambda_media_hora <- 4 / 2 # tasa de llegadas en media hora

prob_menos_3_llamadas <- ppois(2, lambda_media_hora)
print(prob_menos_3_llamadas)
## [1] 0.6766764

La probabilidad de recibir menos de 3 llamadas en media hora es 0.6767 (67.67%). Esto muestra que es bastante probable recibir menos de 3 llamadas en cualquier periodo de media hora.

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.