2015-04-19 1 views
0

J'essaye de construire un modèle de chaîne de Markov deuxième ordre, maintenant j'essaie de trouver la matrice de transition à partir des données suivantes.Ajuster et évaluer une matrice de transition du second ordre (processus de Markov) dans R?

dat<-data.frame(replicate(20,sample(c("A", "B", "C","D"), size = 100, replace=TRUE))) 

Maintenant, je sais comment adapter la première matrice de transition de Markov d'ordre à l'aide de la fonction markovchainFit(dat) dans le paquet markovchain.

Y a-t-il un moyen d'ajuster la matrice de transition du second ordre?

Comment évaluer les modèles de chaînes de Markov? Dois-je choisir le modèle de premier ordre ou le modèle de second ordre?

Répondre

1

Cette fonction doit produire une matrice de transition de chaîne de Markov pour tout ordre de retard que vous souhaitez.

dat<-data.frame(replicate(20,sample(c("A", "B", "C","D"), size = 100, replace=TRUE))) 

Markovmatrix <- function(X,l=1){ 
    tt <- table(X[,-c((ncol(X)-l+1):ncol(X))] , c(X[,-c(1:l)])) 
    tt <- tt/rowSums(tt) 
    return(tt) 
} 


Markovmatrix(as.matrix(dat),1) 
Markovmatrix(as.matrix(dat),2) 

l est le décalage.

par exemple. Matrice de 2ème ordre, la sortie est:

  A   B   C   D 
    A 0.2422803 0.2185273 0.2446556 0.2945368 
    B 0.2426304 0.2108844 0.2766440 0.2698413 
    C 0.2146119 0.2716895 0.2123288 0.3013699 
    D 0.2480000 0.2560000 0.2320000 0.2640000 

Comme pour savoir comment tester quel modèle de commande. Il y a plusieurs suggestions. L'un proposé par Gottman et Roy (1990) dans leur livre d'introduction à l'analyse séquentielle consiste à utiliser la valeur d'information . Il y a un chapitre à ce sujet - la plus grande partie du chapitre est disponible en ligne.

Vous pouvez également effectuer un test de vraisemblance chi-Square. Ceci est très similaire à un test de khi carré en ce sens que vous comparez les fréquences observées aux fréquences prévues des transitions. Cependant, la formule est la suivante:

enter image description here

Les degrés de liberté sont le carré du nombre de codes moins un. Dans votre cas, vous avez 4 codes, donc (4-1)^2 = 9. Vous pouvez alors rechercher la valeur p associée.

J'espère que cela aide.