Antecedentes del problema: como parte de mi investigación, he escrito dos algoritmos que pueden seleccionar un conjunto de características de un conjunto de datos (datos de expresión génica de pacientes con cáncer). Estas características luego se prueban para ver qué tan bien pueden clasificar una muestra invisible como cancerosa o no cancerosa. Para cada ejecución del algoritmo, se genera una solución (un conjunto de características) y se prueba en Z muestras no vistas. Porcentaje precisión de la solución se calcula de esta manera: (correct classifications / Z) * 100
.
Tengo dos algoritmos: algoritmo X y algoritmo Y
Tengo tres conjuntos de datos separados (diferentes tipos de cáncer): conjunto de datos A, conjunto de datos B y conjunto de datos C. Estos conjuntos de datos son muy diferentes entre sí. No tienen el mismo número de muestras o el mismo número de mediciones (características) por muestra.
He ejecutado cada algoritmo 10 veces en cada conjunto de datos. Entonces, el algoritmo X tiene 10 resultados del conjunto de datos A, 10 del conjunto de datos B y 10 del conjunto de datos C. En general, el algoritmo X tiene 30 resultados.
Mi problema: me gustaría ver si el rendimiento combinado del algoritmo X en los tres conjuntos de datos es estadísticamente significativamente diferente del rendimiento combinado del algoritmo Y.
¿Es posible para mí combinar resultados para el algoritmo X de cada conjunto de datos en un solo conjunto de resultados? De esta manera, tendría 30 resultados estandarizados para el algoritmo X y 30 resultados estandarizados para el algoritmo Y. Luego, puedo usar la prueba t para ver si hay una diferencia significativa entre los dos métodos.
Editar: estos son algoritmos evolutivos, por lo que devuelven una solución ligeramente diferente cada vez que se ejecutan. Sin embargo, si hay una característica en una muestra que, cuando está presente, puede clasificar fuertemente la muestra como cancerosa o no cancerosa, entonces esa característica se seleccionará casi cada vez que se ejecute el algoritmo.
Obtengo resultados ligeramente diferentes para cada una de las 10 ejecuciones debido a las siguientes razones:
- Estos algoritmos se siembran al azar.
- Uso validación de submuestreo aleatorio repetido (10 repeticiones).
- Los conjuntos de datos que uso (microarrays de ADN y Proteómica) son muy difíciles de trabajar en el sentido de que hay muchos óptimos locales en los que el algoritmo puede quedarse atrapado.
- Hay muchas interacciones entre funciones y entre subconjuntos que me gustaría detectar.
- Entreno 50 cromosomas y no están restringidos a ninguna longitud en particular. Son libres de crecer y encogerse (aunque la presión de selección los guía hacia longitudes más cortas). Esto también introduce alguna variación en el resultado final.
¡Dicho esto, el algoritmo casi siempre selecciona un subconjunto particular de características!
Aquí hay una muestra de mis resultados (aquí solo se muestran 4 ejecuciones de 10 para cada algoritmo):
Conjunto de datos / ejecutar Algoritmo X Algoritmo Y A 1 90.91 90.91 A 2 90.91 95.45 A 3 90.91 90.91 A 4 90.91 90.91 B 1 100 100 B 2 100 100 B 3 95.65 100 B 4 95.65 86.96 C 1 90.32 87.10 C 2 70.97 80.65 C 3 96.77 83.87 C 4 80.65 83.87
Como puede ver, he reunido resultados para dos algoritmos de tres conjuntos de datos. Puedo hacer la prueba de Kruskal-Wallis con estos datos, pero ¿será válido? Pregunto esto porque:
- No estoy seguro de que las precisiones en diferentes conjuntos de datos sean conmensurables. Si no lo son, entonces juntarlos como lo he hecho no tendría sentido y cualquier prueba estadística realizada en ellos tampoco tendría sentido.
- Cuando se juntan precisiones como esta, el resultado general es susceptible de valores atípicos. El excelente rendimiento de un algoritmo en un conjunto de datos puede enmascarar su rendimiento promedio en otro conjunto de datos.
No puedo usar t-test en este caso tampoco, esto es porque:
- Conmensurabilidad: la prueba t solo tiene sentido cuando las diferencias sobre los conjuntos de datos son proporcionales.
- La prueba t requiere que las diferencias entre los dos algoritmos comparados se distribuyan normalmente, no hay forma (al menos que yo sepa) de garantizar esta condición en mi caso.
- La prueba t se ve afectada por valores atípicos que sesgan las estadísticas de la prueba y disminuyen la potencia de la prueba al aumentar el error estándar estimado.
¿Qué piensas? ¿Cómo puedo hacer una comparación entre el algoritmo X e Y en este caso?