Test Friedmana vs test Wilcoxona

11

Usiłuję ocenić wydajność nadzorowanego algorytmu klasyfikacji uczenia maszynowego. Obserwacje dzielą się na klasy nominalne (na razie 2, jednak chciałbym uogólnić to na problemy wielu klas), zaczerpnięte z populacji 99 osób.

Jednym z pytań, na które chciałbym odpowiedzieć, jest to, czy algorytm wykazuje znaczącą różnicę w dokładności klasyfikacji między klasami wejściowymi. W przypadku klasyfikacji binarnej porównuję średnią dokładność między klasami u badanych przy użyciu sparowanego testu Wilcoxona (ponieważ rozkład podstawowy jest nienormalny). Aby uogólnić tę procedurę na problemy wielu klas , zamierzałem zastosować test Friedmana .

Jednak wartości p uzyskane w tych dwóch procedurach w przypadku binarnego IV różnią się bardzo, przy czym test Wilcoxona daje wyniki, p < .001podczas gdy p = .25dla testu Friedmana. To prowadzi mnie do przekonania, że ​​mam zasadnicze niezrozumienie struktury testu Friedmana.

Czy w tym przypadku nie jest właściwe stosowanie testu Friedmana do porównywania wyników powtarzanych pomiarów dokładności u wszystkich badanych?

Mój kod R, aby uzyskać te wyniki ( subjectto identyfikator podmiotu, accdokładność DV i expectedklasa obserwacji 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
źródło
Nie jestem pewien, czy twoje wezwanie do wilcox.testwykonania podpisuje test rangowy porównujący dokładność w dwóch warunkach, ponieważ nigdy nie podajesz zmiennej zmiennej parowania. Jest to przynajmniej niebezpieczny sposób uruchomienia testu, ponieważ polega on na kolejności wierszy w danych wejściowych.
Aniko

Odpowiedzi:

11

Test Friedmana nie jest rozszerzeniem testu Wilcoxona, więc jeśli masz tylko 2 powiązane próbki, nie jest to to samo, co test rang podpisany przez Wilcoxona . Ta ostatnia uwzględnia wielkość różnicy w skrzynce (a następnie szereguje ją według skrzynek), podczas gdy Friedman szereguje tylko skrzynkę (nigdy nie skrzynek): jest mniej wrażliwa.

Friedman jest faktycznie prawie przedłużenie rejestracji testu. W przypadku 2 próbek ich wartości p są bardzo zbliżone, przy czym Friedman jest nieco bardziej konserwatywny (te dwa testy traktują więzi w nieco inny sposób). Ta niewielka różnica szybko zanika wraz ze wzrostem wielkości próbki. Tak więc dla dwóch powiązanych próbek te dwa testy są naprawdę alternatywnymi metodami.

Test, który jest równoważny Wilcoxonowi - w tym samym sensie, co Friedmana do podpisania - nie jest zbyt dobrze znanym testem Quade , wspomnianym na przykład tutaj: http://www.itl.nist.gov/div898/software/dataplot/refman1/ auxillar / friedman.htm .

ttnphns
źródło