Teste de Friedman vs teste de Wilcoxon

11

Estou tentando avaliar o desempenho de um algoritmo de classificação de aprendizado de máquina supervisionado. As observações se enquadram em classes nominais (2 por enquanto, no entanto, eu gostaria de generalizar isso para problemas de várias classes), extraídos de uma população de 99 indivíduos.

Uma das perguntas que eu gostaria de responder é se o algoritmo exibir uma diferença significativa na precisão da classificação entre as classes de entrada. Para o caso de classificação binária, estou comparando a precisão média entre as classes entre os sujeitos, usando um teste de Wilcoxon emparelhado (uma vez que a distribuição subjacente não é normal). Para generalizar esse procedimento para problemas com várias classes, pretendi usar um teste de Friedman .

No entanto, os valores de p obtidos por esses dois procedimentos no caso de um IV binário variam muito, com o teste de Wilcoxon rendendo, p < .001enquanto p = .25que no teste de Friedman. Isso me leva a acreditar que tenho um mal-entendido fundamental da estrutura do teste de Friedman.

Não é apropriado usar um teste de Friedman neste caso para comparar o resultado das medidas repetidas da precisão em todos os sujeitos?

Meu código R para obter esses resultados ( subjecté o identificador do sujeito, acca precisão DV e expecteda classe de observação 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
fonte
Não tenho certeza de que sua chamada para wilcox.testfaça um teste de classificação assinado comparando a precisão nas duas condições, porque você nunca diz a variável de emparelhamento. No mínimo, essa é uma maneira insegura de executar o teste, porque depende da ordem das linhas nos dados de entrada.
Aniko

Respostas:

11

O teste de Friedman não é a extensão do teste de Wilcoxon; portanto, quando você tem apenas duas amostras relacionadas, não é o mesmo que o teste de classificação assinado por Wilcoxon . Este último explica a magnitude da diferença dentro de um caso (e depois a classifica entre casos), enquanto Friedman classifica apenas dentro de um caso (e nunca entre casos): é menos sensível.

Friedman é na verdade quase a extensão do teste de sinal . Com 2 amostras, seus valores de p são muito próximos, com Friedman sendo apenas um pouco mais conservador (esses dois testes tratam os laços de maneiras um pouco diferentes). Essa pequena diferença desaparece rapidamente conforme o tamanho da amostra aumenta. Portanto, para duas amostras relacionadas, esses dois testes são realmente alternativas iguais.

O teste equivalente a Wilcoxon - no mesmo sentido que Friedman assina - não é um teste Quade muito conhecido , mencionado por exemplo aqui: http://www.itl.nist.gov/div898/software/dataplot/refman1/ auxillar / friedman.htm .

ttnphns
fonte