Antecedentes do problema: Como parte da minha pesquisa, escrevi dois algoritmos que podem selecionar um conjunto de recursos de um conjunto de dados (dados de expressão gênica de pacientes com câncer). Esses recursos são então testados para ver quão bem eles podem classificar uma amostra invisível como câncer ou não-câncer. Para cada execução do algoritmo, uma solução (um conjunto de recursos) é gerada e testada em Z amostras não vistas. Precisão percentual da solução é calculada assim: (correct classifications / Z) * 100
.
Eu tenho dois algoritmos: algoritmo X e algoritmo Y
Eu tenho três conjuntos de dados separados (cânceres diferentes): conjunto de dados A, conjunto de dados B e conjunto de dados C. Esses conjuntos de dados são muito diferentes entre si. Eles não têm o mesmo número de amostras ou o mesmo número de medidas (recursos) por amostra.
Eu executei cada algoritmo 10 vezes em cada conjunto de dados. Portanto, o algoritmo X possui 10 resultados do conjunto de dados A, 10 do conjunto de dados B e 10 do conjunto de dados C. No geral, o algoritmo X possui 30 resultados.
Meu problema: gostaria de ver se o desempenho combinado do algoritmo X em todos os três conjuntos de dados é estatisticamente significativamente diferente do desempenho combinado do algoritmo Y.
É possível combinar resultados do algoritmo X de cada conjunto de dados em um único conjunto de resultados? Dessa forma, eu teria 30 resultados padronizados para o algoritmo X e 30 resultados padronizados para o algoritmo Y. Em seguida, posso usar o teste t para verificar se há uma diferença significativa entre os dois métodos.
Editar - Estes são algoritmos evolutivos, portanto, eles retornam uma solução ligeiramente diferente cada vez que são executados. No entanto, se houver um recurso em uma amostra que, quando presente, puder classificá-lo fortemente como sendo câncer ou não-câncer, esse recurso será selecionado quase sempre que o algoritmo for executado.
Recebo resultados ligeiramente diferentes para cada uma das 10 execuções devido aos seguintes motivos:
- Esses algoritmos são semeados aleatoriamente.
- Eu uso a validação aleatória de subamostragem repetida (10 repetições).
- Os conjuntos de dados que eu uso (microarray de DNA e Proteomics) são muito difíceis de trabalhar, no sentido de que existem muitas ótimas locais nas quais o algoritmo pode ficar preso.
- Há muitas interações entre recursos e entre subconjuntos que eu gostaria de detectar.
- Treino 50 cromossomos e eles não se restringem a um determinado comprimento. Eles são livres para crescer e encolher (embora a pressão de seleção os guie em comprimentos mais curtos). Isso também introduz alguma variação no resultado final.
Dito isto, o algoritmo quase sempre seleciona um subconjunto específico de recursos!
Aqui está uma amostra dos meus resultados (apenas quatro em cada dez são mostradas aqui):
Conjunto de dados / executar o 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 você pode ver, reuni resultados para dois algoritmos de três conjuntos de dados. Posso fazer o teste de Kruskal-Wallis com esses dados, mas será válido? Eu pergunto isso porque:
- Não tenho certeza se as precisões em diferentes conjuntos de dados são comensuráveis. Se não estiverem, reuni-los como eu fiz não teria sentido e qualquer teste estatístico feito neles também não teria sentido.
- Quando você reúne precisão assim, o resultado geral é suscetível a discrepâncias. O excelente desempenho de um algoritmo em um conjunto de dados pode mascarar seu desempenho médio em outro conjunto de dados.
Também não posso usar o teste t neste caso, porque:
- Comensurabilidade - o teste t só faz sentido quando as diferenças nos conjuntos de dados são proporcionais.
- O teste t requer que as diferenças entre os dois algoritmos comparados sejam distribuídas normalmente, não há como garantir (pelo menos que eu saiba) essa condição no meu caso.
- O teste t é afetado por valores discrepantes que distorcem as estatísticas do teste e diminuem o poder do teste aumentando o erro padrão estimado.
O que você acha? Como posso fazer uma comparação entre o algoritmo X & Y neste caso?