¿Hay alguna manera en R (una función incorporada) para calcular la matriz de transición para una cadena de Markov a partir de un conjunto de observaciones?
Por ejemplo, ¿tomar un conjunto de datos como el siguiente y calcular la matriz de transición de primer orden?
dat<-data.frame(replicate(20,sample(c("A", "B", "C","D"), size = 100, replace=TRUE)))
r
markov-process
B_Miner
fuente
fuente
Respuestas:
No tengo conocimiento inmediato de una función "incorporada" (p. Ej., En
base
o similar), pero podemos hacerlo de manera muy fácil y eficiente en un par de líneas de código.Aquí hay una función que toma una matriz (no un marco de datos) como entrada y produce los recuentos de transición (
prob=FALSE
) o, por defecto (prob=TRUE
), las probabilidades de transición estimadas.Si necesita llamarlo en un marco de datos, siempre puede hacerlo
Si está buscando un paquete de terceros, Rseek o el sitio de búsqueda R pueden proporcionar recursos adicionales.
fuente
HMM
yRHMM
que pueden ser útiles.R
eran muy delicados en el pasado, particularmente cuando se trata de la adaptación y nunca encontré uno que realmente me gustara o en el que confiara. Quizás la situación sea mejor ahora. Sin embargo, me imagino que lo entenderían bien. Si conoce tal solución, envíela como respuesta; ¡Me encantaría votarlo!dat
marco de datos que el OP da como ejemplo tiene columnas de datos, y ¿quieren una matriz de transición por columna, o una matriz de transición general o podemos convertir la matriz en un vector?)Acabo de subir un nuevo paquete R
markovchain
, basado en el estilo de programación S4. Junto con varios métodos para manejar objetos S4 markovchain, contiene una función para ajustar una cadena de Markov a partir de una secuencia de estados. Mira esto:Podría ayudar
fuente