Je suis confus par ce qui suit, et je n'ai pas pu trouver la réponse ailleurs.
J'essaie d'apprendre R tout en faisant quelques statistiques, et, comme exercice, j'essaie de revérifier les résultats des fonctions R intégrées en les faisant également `` à la main '', pour ainsi dire, dans R. Cependant , pour le test de Kruskal-Wallis, je continue d'obtenir des résultats différents, et je ne peux pas comprendre pourquoi.
Par exemple, je regarde les données suivantes distribuées dans un exercice
activity <- c(2, 4, 3, 2, 3, 3, 4, 0, 4, 3, 4, 0, 0, 1, 3, 1, 2, 0, 3, 1, 0, 3, 4, 0, 1, 2, 2, 2, 3, 2)
group <- c(rep("A", 11), rep("B", 10), rep("C", 9))
group <- factor(group)
data.raw <- data.frame(activity, group)
Et je veux analyser l'activité par groupe. Je lance d'abord un test de Kruskal-Wallis en utilisant la fonction R intégrée
kruskal.test(activity ~ group, data = data.raw)
Ce qui renvoie .
Pour revérifier, j'essaie de faire la même chose «à la main» dans R, avec le code (sans doute sans défense) suivant
rank <- rank(activity)
data.rank <- data.frame(rank, group)
rank.sum <- aggregate(rank ~ group, data = data.rank, sum)
x <- rank.sum[1,2]^2 / 11 + rank.sum[2,2]^2 / 10 + rank.sum[3,2]^2 / 9
H <- (12 / (length(activity) * (length(activity) + 1))) * x - 3 * (length(activity) + 1)
H
Ce qui est censé refléter la formule suivante:
J'ai essayé de chercher à comprendre ce que je fais mal ou ne comprends pas, mais en vain. Quelqu'un peut-il m'aider à comprendre pourquoi la kruskal.test
fonction intégrée renvoie une valeur différente de celle que j'obtiens en énonçant les choses?
la source
Hmisc
package Rspearman2
qui utilise les midranks pour les égalités et unF
test pour obtenir Kruskal-Wallis. Je pense que c'est plus précis que certaines méthodes.