Cadena de Markov
Aplicaremos el uso de la cadena de markov para predecir alguna probabilidad planteada para el caso de las abejas, en este caso vamos a encontrar la probabilidad si las condiciones del clima estan afectectando la desaparición de las abejas.
Asumamos que tenemos una cadena de markov
\(X = \lbrace X_{1},X_{2},\ldots \rbrace\) definida en el espacio de estados \(S = \lbrace Soleado,Nublado,Lluvioso \rbrace\) y cuya matriz de transición es: \[ P = \left( {\begin{array}{ccc} 0.7 & 0.2 & 0.1 \\ 0.3 & 0.4 & 0.3 \\ 0.2 & 0.45 & 0.35 \\ \end{array} } \right) \]1. Creamos la matriz de transición P:
P <- matrix(c(0.7,0.2,0.1,0.3,0.4,0.3,0.2,0.45,0.35),nrow=3, byrow=TRUE)
P## [,1] [,2] [,3]
## [1,] 0.7 0.20 0.10
## [2,] 0.3 0.40 0.30
## [3,] 0.2 0.45 0.35
2. Crear la matriz de transición, almacenada en el objeto “markovchain” de la siguiente manera.
library(markovchain)## Package: markovchain
## Version: 0.8.5-4
## Date: 2021-01-07
## BugReport: https://github.com/spedygiorgio/markovchain/issues
mc <- new("markovchain", transitionMatrix=P, states=c("Soleado","Nublado","Lluvioso"),name="Cadena 1" )La estructura del objeto mc es:
str(mc)## Formal class 'markovchain' [package "markovchain"] with 4 slots
## ..@ states : chr [1:3] "Soleado" "Nublado" "Lluvioso"
## ..@ byrow : logi TRUE
## ..@ transitionMatrix: num [1:3, 1:3] 0.7 0.3 0.2 0.2 0.4 0.45 0.1 0.3 0.35
## .. ..- attr(*, "dimnames")=List of 2
## .. .. ..$ : chr [1:3] "Soleado" "Nublado" "Lluvioso"
## .. .. ..$ : chr [1:3] "Soleado" "Nublado" "Lluvioso"
## ..@ name : chr "Cadena 1"
El resumen de la cadena es:
summary(mc)## Cadena 1 Markov chain that is composed by:
## Closed classes:
## Soleado Nublado Lluvioso
## Recurrent classes:
## {Soleado,Nublado,Lluvioso}
## Transient classes:
## NONE
## The Markov chain is irreducible
## The absorbing states are: NONE
Para visualizar el diagrama de transición de la cadena lo realizamos con la función plot
plot(mc)Para la cadena de markov definida se obtiene que:
recurrentClasses(mc)## [[1]]
## [1] "Soleado" "Nublado" "Lluvioso"
transientStates(mc)## character(0)
absorbingStates(mc)## character(0)
Análisis probabilístico
Para conocer la probabilidad de transición en 1 paso entre un estado y otro basta con utilizar la función transitionProbability(), con los argumentos:
object: la cadena de markov
t0: el estado en el tiempo 0
t1: el estado en el tiempo 1
transitionProbability(object=mc,t0="Soleado",t1="Lluvioso")## [1] 0.1
Recuerde que dicha probabilidad es un elemento de la matriz de transición P, por lo tanto, la probabilidad de transicion del estado “Soleado” al estado “Nublado”
mc[2,3]## [1] 0.3
Es posible computar la matriz de transición en n pasos, simplemente computando la n-ésima potencia de la matriz de transición P, como ejemplo calcularemos la matriz de transición en n = 5 pasos.
n = 5 # Número de pasos al futuro
mc**n## Cadena 1^5
## A 3 - dimensional discrete Markov Chain defined by the following states:
## Soleado, Nublado, Lluvioso
## The transition matrix (by rows) is defined as follows:
## Soleado Nublado Lluvioso
## Soleado 0.4733287 0.3133356 0.2133356
## Nublado 0.4569262 0.3215369 0.2215369
## Lluvioso 0.4528256 0.3235872 0.2235872
Conclusión
Con este análisis utilizando la Cadena de Markov que son un proceso estocástico discreto en el que la probabilidad de que ocurra un evento depende solamente del evento inmediatamente anterior, nos pudimos dar cuenta de cómo es que el clima afecta el desarrollo de las abejas, impide que realicen sus actividades diarias, este daño ya sea aumentos de temperatura, poca lluvia hace que poco a poco el numero de abejas vaya en declive.