Una cadena de Markov es un modelo estocástico que describe una secuencia de eventos donde la probabilidad de que ocurra un evento futuro depende únicamente del estado actual y no de los estados anteriores que condujeron a ese estado actual. Estos procesos reciben el nombre en honor al matemático ruso Andrey Markov.
En una cadena de Markov, se utilizan transiciones de estado para representar cómo un sistema se mueve de un estado a otro, y se asume que la probabilidad de transición depende solo del estado presente y no de la secuencia de eventos que llevó a ese estado. Esto se conoce como la propiedad de Markov o la propiedad sin memoria.
Las cadenas de Markov se utilizan en una amplia variedad de campos, como la modelización de sistemas financieros, análisis de series temporales, reconocimiento de patrones, procesamiento de señales, aprendizaje automático, entre otros. Son especialmente útiles en situaciones donde se asume que el futuro depende principalmente del estado presente y no de una larga historia pasada.
El método de los momentos es una técnica utilizada en estadística para estimar los parámetros de una distribución de probabilidad basándose en los momentos empíricos de una muestra de datos. Los momentos de una distribución son medidas estadísticas que describen la forma y características de esa distribución.
El método de los momentos establece que si una muestra de datos proviene de una distribución específica (por ejemplo, normal, exponencial, gamma, etc.), entonces los momentos teóricos de esa distribución deben igualar a los momentos observados en la muestra.
Para utilizar el método de los momentos, se siguen estos pasos generales:
Se identifican los primeros momentos (media, varianza, skewness, curtosis, etc.) de la distribución teórica que se desea ajustar a los datos.
Se calculan los momentos muestrales correspondientes a partir de la muestra de datos.
Se establecen ecuaciones igualando los momentos teóricos a los momentos muestrales.
Se resuelven estas ecuaciones para obtener estimaciones de los parámetros de la distribución.
Por ejemplo, si se quiere ajustar una distribución normal a una muestra de datos, se igualarían la media muestral a la media teórica de la distribución normal y la varianza muestral a la varianza teórica de la distribución normal. A partir de estas igualdades, se resolverían las ecuaciones para obtener los valores estimados de la media y la varianza de la distribución normal que mejor se ajustan a los datos.
El método de los momentos es una de varias técnicas de estimación de parámetros y puede ser útil cuando se desconoce la distribución subyacente de los datos pero se tienen muestras para analizar. Sin embargo, en algunos casos, puede ser menos eficiente que otros métodos de estimación, especialmente cuando las muestras son pequeñas o cuando la distribución teórica es complicada.
# Definir la matriz de transición
trans_matrix <- matrix(c(0.7, 0.2, 0.1, # Probabilidades de transición de A
0.3, 0.5, 0.2, # Probabilidades de transición de B
0.1, 0.4, 0.5), # Probabilidades de transición de C
nrow = 3, byrow = TRUE)
# Estados posibles
states <- c("A", "B", "C")
# Función para generar las observaciones
generate_observations <- function(trans_matrix, states, n_obs) {
current_state <- sample(states, 1) # Estado inicial aleatorio
observations <- character(n_obs) # Vector para almacenar las observaciones
for (i in 1:n_obs) {
observations[i] <- current_state
probs <- trans_matrix[states == current_state, ] # Obtener las probabilidades de transición del estado actual
current_state <- sample(states, 1, prob = probs) # Transición al siguiente estado
}
return(observations)
}
# Generar las observaciones
observations <- generate_observations(trans_matrix, states, 100)
observations
## [1] "B" "B" "A" "A" "A" "C" "B" "A" "A" "A" "A" "A" "A" "C" "B" "A" "A" "B"
## [19] "A" "B" "B" "B" "C" "C" "C" "C" "A" "A" "A" "B" "B" "C" "B" "B" "A" "B"
## [37] "B" "A" "A" "B" "A" "A" "A" "A" "A" "A" "B" "B" "A" "B" "B" "B" "A" "B"
## [55] "B" "B" "A" "A" "A" "B" "B" "B" "C" "B" "C" "C" "C" "A" "B" "B" "B" "B"
## [73] "B" "C" "C" "B" "C" "C" "B" "B" "A" "A" "A" "A" "B" "C" "C" "A" "A" "A"
## [91] "B" "B" "A" "A" "A" "A" "A" "A" "A" "C"
\[ \hat{p_{ij}} = \frac{n_{ij}{n_i} \]
# Función para estimar la matriz de transición
estimate_transition_matrix <- function(observations, states) {
n_states <- length(states)
trans_matrix_est <- matrix(0, nrow = n_states, ncol = n_states)
for (i in 1:(length(observations) - 1)) {
current_state <- observations[i]
next_state <- observations[i + 1]
current_index <- which(states == current_state)
next_index <- which(states == next_state)
trans_matrix_est[current_index, next_index] <- trans_matrix_est[current_index, next_index] + 1
}
trans_matrix_est <- trans_matrix_est / rowSums(trans_matrix_est)
return(trans_matrix_est)
}
# Estimar la matriz de transición
estimated_trans_matrix <- estimate_transition_matrix(observations, states)
estimated_trans_matrix
## [,1] [,2] [,3]
## [1,] 0.6590909 0.2727273 0.06818182
## [2,] 0.3157895 0.5000000 0.18421053
## [3,] 0.1764706 0.3529412 0.47058824