J'essaie d'évaluer les performances d'un algorithme de classification d'apprentissage automatique supervisé. Les observations se répartissent en classes nominales (2 pour l'instant, mais j'aimerais généraliser cela aux problèmes multi-classes), tirées d'une population de 99 sujets.
L'une des questions auxquelles j'aimerais pouvoir répondre est la suivante: si l'algorithme présente une différence significative dans la précision de la classification entre les classes d'entrée. Pour le cas de la classification binaire, je compare la précision moyenne entre les classes entre les sujets en utilisant un test de Wilcoxon apparié (car la distribution sous-jacente n'est pas normale). Afin de généraliser cette procédure aux problèmes multi-classes, j'ai voulu utiliser un test de Friedman .
Cependant, les valeurs de p obtenues par ces deux procédures dans le cas d'un IV binaire varient énormément, le test de Wilcoxon donnant p < .001
alors que p = .25
pour le test de Friedman. Cela m'amène à croire que j'ai une incompréhension fondamentale de la structure du test de Friedman.
N'est-il pas approprié d'utiliser un test de Friedman dans ce cas pour comparer le résultat des mesures répétées de la précision sur tous les sujets?
Mon code R pour obtenir ces résultats ( subject
est l'identifiant du sujet, acc
la précision DV et expected
la classe d'observation IV):
> head(subject.accuracy, n=10)
subject expected acc
1 10 none 0.97826087
2 10 high 0.55319149
3 101 none 1.00000000
4 101 high 0.68085106
5 103 none 0.97826087
6 103 high 1.00000000
7 104 none 1.00000000
8 104 high 0.08510638
9 105 none 0.95121951
10 105 high 1.00000000
> ddply(subject.accuracy, .(expected), summarise, mean.acc = mean(acc), se.acc = sd(acc)/sqrt(length(acc)))
expected mean.acc se.acc
1 none 0.9750619 0.00317064
2 high 0.7571259 0.03491149
> wilcox.test(acc ~ expected, subject.accuracy, paired=T)
Wilcoxon signed rank test with continuity correction
data: acc by expected
V = 3125.5, p-value = 0.0003101
alternative hypothesis: true location shift is not equal to 0
> friedman.test(acc ~ expected | subject, subject.accuracy)
Friedman rank sum test
data: acc and expected and subject
Friedman chi-squared = 1.3011, df = 1, p-value = 0.254
la source
wilcox.test
fasse un test de classement signé comparant la précision dans les deux conditions, car vous ne lui dites jamais la variable d'appariement. À tout le moins, il s'agit d'une manière non sûre d'exécuter le test, car elle repose sur l'ordre des lignes dans les données d'entrée.Réponses:
Le test de Friedman n'est pas l'extension du test de Wilcoxon, donc lorsque vous n'avez que 2 échantillons liés, ce n'est pas la même chose que le test de rang signé par Wilcoxon . Ce dernier explique l'ampleur de la différence au sein d'un cas (puis le classe entre les cas), tandis que Friedman ne le classe qu'au sein d'un cas (et jamais entre les cas): il est moins sensible.
Friedman est en fait presque l'extension du test de signe . Avec 2 échantillons, leurs valeurs de p sont très proches, Friedman étant juste un peu plus conservateur (ces deux tests traitent les liens de manière quelque peu différente). Cette petite différence disparaît rapidement à mesure que la taille de l'échantillon augmente. Donc, pour deux échantillons liés, ces deux tests sont vraiment des alternatives homologues.
Le test qui équivaut à Wilcoxon - dans le même sens que Friedman à signer - n'est pas très connu du test Quade , mentionné par exemple ici: http://www.itl.nist.gov/div898/software/dataplot/refman1/ auxillar / friedman.htm .
la source