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)
où 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:
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.