Я намагаюся оцінити ефективність керованого алгоритму класифікації машинного навчання. Спостереження належать до номінальних класів (на даний момент 2, однак я б хотів узагальнити це на багатокласні проблеми), одержані з 99 осіб.
Одне з питань, на які я хотів би відповісти, це, якщо алгоритм виявляє значну різницю в точності класифікації між вхідними класами. У випадку двійкової класифікації я порівнюю середню точність між класами між суб'єктами, використовуючи парний тест Вілкоксона (оскільки базовий розподіл не є нормальним). Щоб узагальнити цю процедуру на багатокласні проблеми, я спробував використати тест Фрідмана .
Однак значення p, отримані цими двома процедурами у випадку двійкового IV, різко змінюються, при цьому тест Вілкоксона давав p < .001
тоді, як p = .25
для тесту Фрідмана. Це змушує мене повірити, що я маю принципове нерозуміння структури тесту Фрідмана.
Чи не доцільно в цьому випадку використовувати тест Фрідмана для порівняння результатів повторних заходів точності для всіх предметів?
Мій код R для отримання цих результатів ( subject
це ідентифікатор предмета, acc
точність DV та expected
клас спостереження 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
робить тест на підписаний ранг, порівнюючи точність за двох умов, оскільки ви ніколи не повідомляєте йому змінну пари. Принаймні, це небезпечний спосіб проведення тесту, оскільки він спирається на впорядкування рядків у вхідних даних.