Problemhintergrund: Im Rahmen meiner Forschung habe ich zwei Algorithmen geschrieben, mit denen eine Reihe von Merkmalen aus einem Datensatz ausgewählt werden können (Genexpressionsdaten von Krebspatienten). Diese Merkmale werden dann getestet, um festzustellen, wie gut sie eine unsichtbare Probe entweder als Krebs oder als Nichtkrebs klassifizieren können. Für jeden Lauf des Algorithmus wird eine Lösung (eine Reihe von Merkmalen) generiert und an Z unsichtbaren Proben getestet. Die prozentuale Genauigkeit der Lösung wird wie folgt berechnet : (correct classifications / Z) * 100
.
Ich habe zwei Algorithmen: Algorithmus X & Algorithmus Y.
Ich habe drei separate (verschiedene Krebs-) Datensätze: Datensatz A, Datensatz B und Datensatz C. Diese Datensätze unterscheiden sich stark voneinander. Sie haben nicht die gleiche Anzahl von Proben oder die gleiche Anzahl von Messungen (Merkmalen) pro Probe.
Ich habe jeden Algorithmus 10 Mal für jeden Datensatz ausgeführt. Algorithmus X hat also 10 Ergebnisse aus Datensatz A, 10 aus Datensatz B und 10 aus Datensatz C. Insgesamt hat Algorithmus X 30 Ergebnisse.
Mein Problem: Ich würde gerne sehen, ob sich die kombinierte Leistung von Algorithmus X über alle drei Datensätze statistisch signifikant von der kombinierten Leistung von Algorithmus Y unterscheidet.
Kann ich die Ergebnisse für Algorithmus X aus jedem Datensatz zu einem einzigen Ergebnissatz kombinieren? Auf diese Weise hätte ich 30 standardisierte Ergebnisse für Algorithmus X und 30 standardisierte Ergebnisse für Algorithmus Y. Ich kann dann den t-Test verwenden, um festzustellen, ob es einen signifikanten Unterschied zwischen den beiden Methoden gibt.
Bearbeiten - Dies sind evolutionäre Algorithmen, sodass sie bei jeder Ausführung eine etwas andere Lösung zurückgeben. Wenn eine Stichprobe jedoch ein Merkmal enthält, das, wenn vorhanden, die Stichprobe stark als Krebs oder Nichtkrebs klassifizieren kann, wird dieses Merkmal fast jedes Mal ausgewählt, wenn der Algorithmus ausgeführt wird.
Ich erhalte aus folgenden Gründen für jeden der 10 Läufe leicht unterschiedliche Ergebnisse:
- Diese Algorithmen werden zufällig ausgesät.
- Ich verwende die wiederholte zufällige Validierung von Teilstichproben (10 Wiederholungen).
- Die von mir verwendeten Datensätze (DNA-Microarray und Proteomics) sind sehr schwierig zu bearbeiten, da es viele lokale Optima gibt, in denen der Algorithmus stecken bleiben kann.
- Es gibt viele Interaktionen zwischen Funktionen und Teilmengen, die ich erkennen möchte.
- Ich trainiere 50 Chromosomen und sie sind nicht auf eine bestimmte Länge beschränkt. Sie können frei wachsen und schrumpfen (obwohl der Selektionsdruck sie zu kürzeren Längen führt). Dies führt auch zu Abweichungen vom Endergebnis.
Allerdings wählt der Algorithmus fast immer eine bestimmte Teilmenge von Merkmalen aus!
Hier ist ein Beispiel meiner Ergebnisse (hier werden nur 4 von 10 Läufen für jeden Algorithmus angezeigt):
Datensatz / Lauf-Algorithmus X Algorithmus 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
Wie Sie sehen können, habe ich Ergebnisse für zwei Algorithmen aus drei Datensätzen zusammengestellt. Ich kann Kruskal-Wallis-Tests mit diesen Daten durchführen, aber sind sie gültig? Ich frage dies, weil:
- Ich bin mir nicht sicher, ob die Genauigkeit in verschiedenen Datensätzen angemessen ist. Wenn dies nicht der Fall ist, wäre es bedeutungslos, sie wie ich zusammenzusetzen, und jeder statistische Test, der an ihnen durchgeführt wird, wäre ebenfalls bedeutungslos.
- Wenn Sie die Genauigkeiten so zusammenstellen, ist das Gesamtergebnis anfällig für Ausreißer. Die hervorragende Leistung eines Algorithmus für einen Datensatz kann die durchschnittliche Leistung für einen anderen Datensatz maskieren.
Ich kann t-test auch in diesem Fall nicht verwenden, weil:
- Commensurability - Der T-Test ist nur dann sinnvoll, wenn die Unterschiede zwischen den Datensätzen angemessen sind.
- t-test erfordert, dass die Unterschiede zwischen den beiden verglichenen Algorithmen normal verteilt sind. In meinem Fall gibt es keine Möglichkeit (zumindest ist mir dies bekannt), diesen Zustand zu garantieren.
- t-test wird von Ausreißern beeinflusst, die die Teststatistik verzerren und die Leistung des Tests verringern, indem sie den geschätzten Standardfehler erhöhen.
Was denken Sie? Wie kann ich in diesem Fall einen Vergleich zwischen Algorithmus X & Y durchführen?