Test di Friedman vs test di Wilcoxon


11

Sto cercando di valutare le prestazioni di un algoritmo di classificazione di apprendimento automatico supervisionato. Le osservazioni rientrano nelle classi nominali (2 per il momento, tuttavia mi piacerebbe generalizzare questo a problemi multi-classe), tratte da una popolazione di 99 soggetti.

Una delle domande a cui vorrei poter rispondere è se l'algoritmo mostra una differenza significativa nella precisione della classificazione tra le classi di input. Per il caso della classificazione binaria, sto confrontando l'accuratezza media tra le classi tra i soggetti usando un test di Wilcoxon associato (poiché la distribuzione sottostante non è normale). Al fine di generalizzare questa procedura a problemi multi-classe, ho deciso di utilizzare un test Friedman .

Tuttavia, i valori di p ottenuti da queste due procedure in caso di IV binario variano selvaggiamente, con il test di Wilcoxon ceduto p < .001mentre p = .25per il test di Friedman. Questo mi porta a credere di avere un fraintendimento fondamentale della struttura del test di Friedman.

Non è appropriato usare un test di Friedman in questo caso per confrontare l'esito delle misure ripetute dell'accuratezza su tutti i soggetti?

Il mio codice R per ottenere quei risultati ( subjectè l'identificatore del soggetto, accl'accuratezza DV e expectedla classe di osservazione 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

Non sono sicuro che la tua chiamata a wilcox.testesegua un test di rango con segno confrontando l'accuratezza nelle due condizioni, perché non gli dici mai la variabile di accoppiamento. Per lo meno questo è un modo non sicuro di eseguire il test, perché si basa sull'ordinamento delle righe nei dati di input.
Aniko,

Risposte:


11

Il test di Friedman non è l'estensione del test di Wilcoxon, quindi quando hai solo 2 campioni correlati non è lo stesso del test di rango firmato Wilcoxon . Quest'ultimo rappresenta l'entità della differenza all'interno di un caso (e poi lo classifica tra i casi), mentre Friedman si classifica solo all'interno di un caso (e mai tra i casi): è meno sensibile.

Friedman è in realtà quasi l'estensione del test dei segni . Con 2 campioni, i loro valori di p sono molto vicini, con Friedman leggermente più conservativo (questi due test trattano i legami in modi leggermente diversi). Questa piccola differenza svanisce rapidamente con l'aumentare delle dimensioni del campione. Quindi, per due campioni correlati questi due test sono davvero alternative tra pari.

Il test che equivale a Wilcoxon - allo stesso modo di Friedman a firmare - non è molto noto test Quade , citato ad esempio qui: http://www.itl.nist.gov/div898/software/dataplot/refman1/ auxillar / friedman.htm .

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.