Sind robuste Methoden wirklich besser?

17

Ich habe zwei Gruppen von Probanden, A und B, jede mit einer Größe von ungefähr 400 und ungefähr 300 Prädiktoren. Mein Ziel ist es, ein Vorhersagemodell für eine binäre Antwortvariable zu erstellen. Mein Kunde möchte das Ergebnis der Anwendung des von A auf B erstellten Modells sehen. (In seinem Buch "Regression Modeling Strategies" (Strategien zur Regressionsmodellierung) erwähnt @FrankHarrell, dass es besser ist, die beiden Datensätze zu kombinieren und ein Modell darauf aufzubauen, da dies hinzugefügt wird Kraft und Präzision - siehe Seite 90, Externe Validierung. Ich stimme ihm eher zu, da das Sammeln der Daten, über die ich verfüge, sehr teuer und zeitaufwändig ist. Aber ich habe keine Wahl darüber, was der Kunde möchte .) Viele meiner Prädiktoren sind stark korreliert und auch sehr verzerrt. Ich verwende logistische Regression, um mein Vorhersagemodell aufzubauen.

Meine Prädiktoren kommen hauptsächlich aus der Mechanik. Zum Beispiel die Gesamtzeit , während der das Subjekt für die Zeitperiode einer Belastung ausgesetzt war, die höher als der Schwellenwert , für verschiedene Werte von und . Es ist klar, dass nur aus ihren Definitionen viele dieser Gesamtzeiten algebraisch miteinander zusammenhängen. Viele der nicht algebraisch verwandten Prädiktoren sind aufgrund ihrer Natur verwandt: Probanden, die während eines Zeitraums stark neigen dazu, während des Zeitraums , selbst wennα[t1,t2]α>00t1<t2[t1,t2][t3,t4][t1,t2][t3,t4]=. Um die Dimension der Daten zu reduzieren, habe ich zusammengehörige Prädiktoren geclustert (zum Beispiel alle Gesamtspannungszeiten zusammen) und die Hauptkomponentenanalyse verwendet, um jeden Cluster darzustellen. Da die Variablen verzerrt waren, habe ich zwei alternative Pfade ausprobiert:

  • Vor der Durchführung der PCA habe ich eine logarithmische Transformation verwendet, um den Versatz in Variablen zu reduzieren.
  • Ich habe Mia Huberts ROBPCA-Algorithmus verwendet, wie er im Paket rrcov in R (PcaHubert) implementiert ist, um die robusten Hauptkomponenten zu finden.

Ich verwende die Gesamtform der ROC-Kurve, die Form der Precision-Recall-Kurve und die Fläche unter der ROC-Kurve (AUC) als Leistungsmaß und möchte für die Datensätze A und B ähnliche Ergebnisse erhalten Ich hatte erwartet, mit den robusten Hauptkomponenten ein viel besseres Ergebnis zu erzielen, aber zu meiner Überraschung schlug sich die erste Methode besser: Besserer AUC-Wert für die Datensätze A und B, mehr Ähnlichkeit zwischen ROC-Kurven und ähnlicherer Präzisionsrückruf Kurven.

Was ist die Erklärung dafür? Und wie kann ich robuste Hauptkomponenten verwenden, anstatt zu versuchen, meine Daten wie normal aussehen zu lassen? Gibt es bestimmte robuste PCA-Methoden, die Sie anstelle von ROBPCA empfehlen würden?

user765195
quelle
"Ich habe zusammengehörige Prädiktoren geclustert" können Sie besser erklären, welche Schritte dazu gehören? "Ich hatte erwartet, mit den robusten Hauptkomponenten ein viel besseres Ergebnis zu erzielen." Können Sie erklären, wie Sie die Ergebnisse messen?
User603
Warum ist es Ihrer Meinung nach besser, die Datensätze zu kombinieren? Ich stimme überhaupt nicht zu. Eine Schwierigkeit, die diese Art von Problem hat, besteht darin, sich zu sehr auf die bestimmten Daten zu stützen. Das Testen des Modells an einem anderen Datensatz ist eine gute Idee.
Peter Flom - Wiedereinsetzung von Monica
Inwiefern war die reguläre PCA für die Protokollvariablen "besser"? Hat es intuitiver Sinn gemacht? Hat es im zweiten Datensatz ein besseres Ergebnis gegeben?
Peter Flom - Wiedereinsetzung von Monica
Vielen Dank an PeterFlom für Ihre Kommentare! Ich habe die Frage gemäß Ihren Kommentaren aktualisiert.
User765195
Vielen Dank @ user603 für Ihren Kommentar! Ich habe die Frage aktualisiert, um Ihren Kommentar wiederzugeben.
User765195

Antworten:

17

Kurz gesagt, und aus Ihrer Beschreibung heraus, vergleichen Sie Apfel mit Orangen ... auf zwei Arten.

Log

Betrachten Sie dieses Beispiel:

library("MASS")
library("copula")
library("rrcov")
p<-2;n<-100;

eps<-0.2
l1<-list()
l3<-list(rate=1)
#generate assymetric data
model<-mvdc(claytonCopula(1,dim=p),c("unif","exp"),list(l1,l3));
x1<-rMvdc(ceiling(n*(1-eps)),model);
#adding 20% of outliers at the end:
x1<-rbind(x1,mvrnorm(n-ceiling(n*(1-eps)),c(7,3),1/2*diag(2))) 

Daten

Nun passen die beiden Modelle (ROBPCA und classic pca beide auf das Protokoll der Daten):

x2<-log(x1)
v0<-PcaClassic(x2)
v1<-PcaHubert(x2,mcd=FALSE,k=2)

Betrachten Sie nun die Achse der kleinsten Variation, die mit jeder Methode gefunden wurde (der Einfachheit halber zeichne ich sie im log-transformierten Raum auf, aber Sie würden dieselben Schlussfolgerungen für den ursprünglichen Raum ziehen).

Modell-

Sichtbar macht ROBPCA eine bessere Arbeit im Umgang mit dem nicht kontaminierten Teil der Daten (den grünen Punkten):

Aber jetzt komme ich zu meinem zweiten Punkt.

Huzichwich

Sie haben das (dies ist in der obigen Handlung ruhig zu sehen):

ichHu(zich)2<ichHu(wich)2(1)

Aber Sie scheinen überrascht zu sein, dass:

ich=1n(zich)2>ich=1n(wich)2(2)

- So wie Sie Ihr Testverfahren beschrieben haben, berechnen Sie das Anpassungsbewertungskriterium für den gesamten Datensatz. Daher ist Ihr Bewertungskriterium eine monotone Funktion von (2), wobei Sie eine monotone Funktion von (1) verwenden sollten. -

Mit anderen Worten, erwarten Sie nicht, dass eine robuste Anpassung eine geringere Summe von quadratischen orthogonalen Residuen aufweist als eine nicht robuste Prozedur für Ihren vollständigen Datensatz: Der nicht robuste Schätzer ist bereits der eindeutige Minimierer der SSOR für den vollständigen Datensatz.

user603
quelle
1
Danke für Ihre Antwort. Ich habe eine Weile gebraucht, um mit anderen Daten zu experimentieren und über Ihre Antwort nachzudenken, um sie wirklich zu verstehen.
user765195