Test de Friedman vs test de Wilcoxon

11

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 < .001alors que p = .25pour 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 ( subjectest l'identifiant du sujet, accla précision DV et expectedla 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
AdrianoKF
la source
Je ne suis pas sûr que votre appel à wilcox.testfasse 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.
Aniko

Réponses:

11

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 .

ttnphns
la source