Existe-t-il un moyen dans R (une fonction intégrée) de calculer la matrice de transition pour une chaîne de Markov à partir d'un ensemble d'observations?
Par exemple, en prenant un ensemble de données comme le suivant et en calculant la matrice de transition de premier ordre?
dat<-data.frame(replicate(20,sample(c("A", "B", "C","D"), size = 100, replace=TRUE)))
r
markov-process
B_Miner
la source
la source
Réponses:
Je ne suis pas immédiatement au courant d'une fonction "intégrée" (par exemple, dans
base
ou similaire), mais nous pouvons le faire très facilement et efficacement en quelques lignes de code.Voici une fonction qui prend une matrice (pas une trame de données) comme entrée et produit soit le nombre de transitions (
prob=FALSE
) soit, par défaut (prob=TRUE
), les probabilités de transition estimées.Si vous devez l'appeler sur une trame de données, vous pouvez toujours le faire
Si vous recherchez un package tiers, Rseek ou le site de recherche R peuvent fournir des ressources supplémentaires.
la source
HMM
etRHMM
qui pourraient être utiles.R
d'être très pointilleux dans le passé, en particulier en matière de montage et je ne trouve que je vraiment aimé ou confiance. Peut-être que la situation est meilleure maintenant. J'imagine cependant qu'ils réussiraient. Si vous connaissez une telle solution, veuillez la soumettre comme réponse; Je serais heureux de le voter!dat
trame de données que l'OP donne comme exemple a des colonnes de données, et veulent-ils une matrice de transition par colonne, ou une matrice de transition globale ou pouvons-nous simplement transformer la matrice en un vecteur?)Je viens de télécharger un nouveau package R
markovchain
, basé sur le style de programmation S4. Avec diverses méthodes pour gérer les objets S4 Markovchain, il contient une fonction pour adapter une chaîne de Markov à partir d'une séquence d'états. Jettes un coup d'oeil à:Ça pourrait aider.
la source