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 < .001
podczas gdy p = .25
dla 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 ( subject
to identyfikator podmiotu, acc
dokładność DV i expected
klasa 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
wilcox.test
wykonania 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.