Intento evaluar el rendimiento de un algoritmo de clasificación de aprendizaje automático supervisado. Las observaciones caen en clases nominales (2 por el momento, sin embargo, me gustaría generalizar esto a los problemas de varias clases), extraídas de una población de 99 sujetos.
Una de las preguntas que me gustaría poder responder es si el algoritmo presenta una diferencia significativa en la precisión de la clasificación entre las clases de entrada. Para el caso de la clasificación binaria estoy comparando la precisión media entre las clases a través de los sujetos utilizando un emparejado Wilcoxon (ya que la distribución subyacente no es normal). Para generalizar este procedimiento a los problemas multiclase He intentado utilizar un Friedman prueba.
Sin embargo, los valores de p obtenidos por estos dos procedimientos en el caso de un IV binario varían enormemente, y la prueba de Wilcoxon arroja p < .001
mientras que p = .25
para la prueba de Friedman. Esto me lleva a creer que tengo un malentendido fundamental de la estructura de la prueba de Friedman.
Es ¿no es apropiado utilizar una prueba de Friedman en este caso para comparar el resultado de las medidas repetidas de la precisión en todos los sujetos?
Mi código R para obtener esos resultados ( subject
es el identificador del sujeto, acc
la precisión DV y expected
la clase de observación 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