J'ai besoin de comparer deux matrices de probabilité pour connaître le degré de proximité des chaînes, donc j'utiliserais la valeur P résultante du test.Utiliser le paquet markovchain pour comparer deux chaînes de Markov empiriquement estimées
J'ai essayé d'utiliser le package markovchain r, plus précisément la fonction divergenceTest. Mais, le problème est que la fonction n'est pas correctement implémentée. Il est basé sur le test du livre "Statistical Inference Based on Divergence Measures" à la page 139, j'ai contacté les développeurs de paquets, mais ils n'ont toujours pas corrigé, donc j'ai essayé de l'implémenter, mais j'ai des problèmes, quelqu'un pourrait-il m'aider à trouver l'erreur ?
Paramètres: fréquence_matrice: matrice de fréquence utilisée pour estimer la matrice de probabilité. hypothétique: La matrice est-elle utilisée pour comparer avec la matrice estimée.
divergenceTest3 <- function(freq_matrix, hypothetic){
n <- sum(freq_matrix)
empirical = freq_matrix
for (i in 1:length(hypothetic)){
empirical[i,] <- freq_matrix[i,]/rowSums(freq_matrix)[i]
}
M <- nrow(empirical)
v <- numeric()
out <- 2 * n/.phi2(1)
sum <- 0
c <- 0
for(i in 1:M){
sum2 <- 0
sum3 <- 0
for(j in 1:M){
if(hypothetic[i, j] > 0){
c <- c + 1
}
sum2 <- sum2 + hypothetic[i, j] * .phi(empirical[i, j]/hypothetic[i, j])
}
v[i] <- rowSums(freq_matrix)[i]
sum <- sum + ((v[i]/n) * sum2)
}
TStat <- out * sum
pvalue <- 1 - pchisq(TStat, c-M)
cat("The Divergence test statistic is: ", TStat, " the Chi-Square d.f. are: ", c-M," the p-value is: ", pvalue,"\n")
out <- list(statistic = TStat, p.value = pvalue)
return(out)
}
# phi function for divergence test
.phi <- function(x) {
out <- x*log(x) - x + 1
return(out)
}
# another phi function for divergence test
.phi2 <- function(x) {
out <- 1/x
return(out)
}
professeur Bonjour, cette fonction semble fonctionner très bien maintenant! Mais, dans la documentation dit seulement que le test de l'article [S. Kullback du tout, tests pour les tables de contingence et chaînes de Markov], correct? Je voudrais savoir précisément quelle équation vous avez mise en place, car j'ai besoin de comprendre le test et j'ai des difficultés. Merci d'avance! – user2905427
Merci, je vais mettre à jour les documents en conséquence –