Reduzieren der Anzahl von Variablen in einer multiplen Regression

9

Ich habe einen großen Datensatz, der aus den Werten mehrerer hundert Finanzvariablen besteht, die in einer multiplen Regression verwendet werden könnten, um das Verhalten eines Indexfonds im Zeitverlauf vorherzusagen. Ich möchte die Anzahl der Variablen auf etwa zehn reduzieren und dabei so viel Vorhersagekraft wie möglich behalten. Hinzugefügt: Die reduzierte Menge von Variablen muss eine Teilmenge der ursprünglichen Variablenmenge sein, um die wirtschaftliche Bedeutung der ursprünglichen Variablen zu erhalten. So sollte ich zum Beispiel nicht mit linearen Kombinationen oder Aggregaten der ursprünglichen Variablen enden.

Einige (wahrscheinlich naive) Gedanken dazu:

  1. Führen Sie mit jeder Variablen eine einfache lineare Regression durch und wählen Sie die zehn mit den größten Werten. Natürlich gibt es keine Garantie dafür, dass die zehn besten Einzelvariablen zusammen die beste Zehnergruppe sind.R2
  2. Führen Sie eine Hauptkomponentenanalyse durch und versuchen Sie, die zehn ursprünglichen Variablen mit den größten Assoziationen zu den ersten Hauptachsen zu finden.

Ich glaube nicht, dass ich eine hierarchische Regression durchführen kann, da die Variablen nicht wirklich verschachtelt sind. Das Ausprobieren aller möglichen Kombinationen von zehn Variablen ist rechnerisch nicht möglich, da es zu viele Kombinationen gibt.

Gibt es einen Standardansatz, um dieses Problem der Reduzierung der Anzahl von Variablen in einer multiplen Regression anzugehen?

Es scheint, dass dies ein hinreichend häufiges Problem wäre, dass es einen Standardansatz geben würde.

Eine sehr hilfreiche Antwort wäre eine, die nicht nur eine Standardmethode erwähnt, sondern auch einen Überblick darüber gibt, wie und warum sie funktioniert. Wenn es alternativ keinen Standardansatz gibt, sondern mehrere mit unterschiedlichen Stärken und Schwächen, wäre eine sehr hilfreiche Antwort eine, in der die Vor- und Nachteile erörtert werden.

Der folgende Kommentar von whuber weist darauf hin, dass die Anfrage im letzten Absatz zu weit gefasst ist. Stattdessen würde ich als gute Antwort eine Liste der wichtigsten Ansätze akzeptieren, vielleicht mit einer sehr kurzen Beschreibung von jedem. Sobald ich die Bedingungen habe, kann ich die Details zu jedem selbst herausfinden.

Mike Spivey
quelle
1
Mike, Sie können Kapitel 3 von ESL durchblättern , wenn Sie damit nicht vertraut sind. Die Seite unter dem angegebenen Link verweist auf ein kostenloses, legales PDF des Textes.
Kardinal
Können Sie klarstellen, ob Sie beispielsweise nur zehn der ursprünglichen Variablen beibehalten möchten oder ob Sie auch an Methoden interessiert sind, die eine kleine Teilmenge linearer Kombinationen der ursprünglichen Variablen verwenden (letztere sind so etwas wie eine traditionelle Hauptkomponenten-Regression?) würde dir geben).
Kardinal
3
Diese Antwort gibt ein konkretes Beispiel für eines der (vielen) Probleme mit Methode 1. Ein Kommentar von @cardinal zu Frank Harrells Antwort bringt den Kern des Problems mit Methode 2 auf den Punkt: Alles, was Sie nur mit den unabhängigen Variablen tun, ohne deren zu berücksichtigen Beziehungen zur abhängigen Variablen, wobei das Risiko irrelevant oder schlechter ist. Was Standard- oder "kanonische" Antworten angeht, ist das Nachfragen hier ein bisschen wie das Nachfragen aller Methoden, um rationale Punkte auf elliptischen Kurven mit ihren Vor- und Nachteilen zu finden :-).
whuber
2
Wie von anderen hier angemerkt, führt Methode 1 zu Problemen. Um eine intuitiv zugängliche Beschreibung des Grundes
gung - Reinstate Monica
1
Vielen Dank an whuber und gung für die Erklärungen der Probleme mit der ersten Idee.
Mike Spivey

Antworten:

1

Dieses Problem wird normalerweise als Teilmengenauswahl bezeichnet, und es gibt einige verschiedene Ansätze. In Google Scholar finden Sie eine Übersicht über verwandte Artikel .

Florian Brucker
quelle
Vielen Dank. Den Namen des Problems zu kennen ist sehr hilfreich!
Mike Spivey
6

Methode 1 funktioniert nicht. Methode 2 hat Hoffnung, je nachdem, wie Sie es tun. Es ist besser, die Hauptkomponenten in absteigender Reihenfolge der erklärten Varianz einzugeben. Ein besser interpretierbarer Ansatz besteht darin, ein variables Clustering durchzuführen, dann jeden Cluster auf eine einzelne Punktzahl zu reduzieren (ohne Y zu verwenden) und dann ein Modell mit den Cluster-Punktzahlen anzupassen.

Frank Harrell
quelle
+1. Mit "Variablenclustering" meinen Sie die Faktoranalyse - das ist eine Strategie, die ich verwenden könnte (auch bevor ich mir y anschaue). Ich betrachte die Clusteranalyse eher als Gruppierung von Beobachtungen als als als Variablen, aber ich habe nur oberflächliche Kenntnisse über Clusteranalysen.
Gung - Reinstate Monica
1
Es scheint keinen a priori Grund zu der Annahme zu geben, dass die Richtungen der maximalen Varianz der Prädiktoren notwendigerweise stark mit der Antwort korrelieren . Vielleicht irre ich mich oder habe Ihren Kommentar falsch verstanden. Könnten Sie das klarstellen?
Kardinal
1
Es hört sich auch so an, als würde das OP die Regression der Hauptkomponenten in seiner Methode 2 nicht (ganz) beschreiben.
Kardinal
Ich war in meinem ursprünglichen Beitrag nicht ganz klar, aber ich brauche eine Teilmenge der ursprünglichen Variablen. Eine direkte Analyse oder Clusterbildung von Hauptkomponenten ist also nicht das, wonach ich suche.
Mike Spivey
1
Das Clustering von Variablen hängt mit der Faktoranalyse zusammen, ist jedoch einfacher. Variablen werden in ihrer Korrelation zueinander gruppiert. Siehe die varclusFunktion im R- HmiscPaket oder PROC VARCLUS in SAS. Datenreduktion kann bei der Teilmenge von Variablen hilfreich sein, wenn Sie etwas Vorsicht walten lassen. Sie können einen gesamten Cluster entfernen, wenn sein Wert 0,3 beträgt. Bei Hauptkomponenten gibt es Techniken wie die Reduzierung der Batterie, bei denen Sie die PCs im Wesentlichen mit einer Teilmenge ihrer konstituierenden Variablen approximieren. P
Frank Harrell
3

In Kapitel 5 von Data Mining mit R zeigt der Autor einige Möglichkeiten zur Auswahl der nützlichsten Prädiktoren. (Im Kontext der Bioinformatik, wo jede Beispielzeile mehr als 12.000 Spalten enthält!)

Er verwendet zunächst einige Filter, die auf der statistischen Verteilung basieren. Wenn Sie zum Beispiel ein halbes Dutzend Prädiktoren mit einem ähnlichen Mittelwert und SD haben, können Sie davonkommen, indem Sie nur einen von ihnen behalten.

Anschließend zeigt er, wie mithilfe einer zufälligen Gesamtstruktur ermittelt wird, welche Prädiktoren am nützlichsten sind. Hier ist ein in sich geschlossenes abstraktes Beispiel. Sie sehen, ich habe 5 gute Prädiktoren, 5 schlechte. Der Code zeigt, wie man einfach die besten 3 behält.

set.seed(99)

d=data.frame(
  y=c(1:20),
  x1=log(c(1:20)),
  x2=sample(1:100,20),
  x3=c(1:20)*c(11:30),
  x4=runif(20),
  x5=-c(1:20),
  x6=rnorm(20),
  x7=c(1:20),
  x8=rnorm(20,mean=100,sd=20),
  x9=jitter(c(1:20)),
  x10=jitter(rep(3.14,20))
  )

library(randomForest)
rf=randomForest(y~.,d,importance=T)
print(importance(rf))
#         %IncMSE IncNodePurity
# x1  12.19922383    130.094641
# x2  -1.90923082      6.455262
# ...

i=importance(rf)
best3=rownames(i)[order(i[,"%IncMSE"],decreasing=T)[1:3]]
print(best3)
#[1] "x1" "x5" "x9"

reduced_dataset=d[,c(best3,'y')]

Der letzte Ansatz des Autors besteht darin, einen hierarchischen Clustering-Algorithmus zu verwenden, um ähnliche Prädiktoren in beispielsweise 30 Gruppen zu gruppieren. Wenn Sie 30 verschiedene Prädiktoren wünschen, wählen Sie zufällig einen aus jeder dieser 30 Gruppen aus.

Hier ist ein Code, der dieselben Beispieldaten wie oben verwendet, um 3 der 10 Spalten auszuwählen:

library(Hmisc)
d_without_answer=d[,names(d)!='y']
vc=varclus(as.matrix(d_without_answer))
print(cutree(vc$hclust,3))
# x1  x2  x3  x4  x5  x6  x7  x8  x9 x10 
#  1   2   1   3   1   1   1   2   1   3 

Meine Beispieldaten passen überhaupt nicht zu diesem Ansatz, da ich 5 gute Prädiktoren und 5 nur Rauschen habe. Wenn alle 10 Prädiktoren leicht korreliert ywaren und eine gute Chance hatten, bei gemeinsamer Verwendung noch besser zu werden (was im Finanzbereich durchaus möglich ist), könnte dies ein guter Ansatz sein.

Darren Cook
quelle
2

Sie können eine Methode wie LASSO verwenden, die die kleinsten Quadrate reguliert, indem Sie eine Lösung auswählen, die die eine Norm des Parametervektors minimiert. Es stellt sich heraus, dass dies in der Praxis dazu führt, dass die Anzahl der Einträge ungleich Null im Parametervektor minimiert wird. Obwohl LASSO in einigen statistischen Kreisen beliebt ist, wurden in der Welt der Druckmessung viele andere verwandte Methoden in Betracht gezogen.

Brian Borchers
quelle
Vielen Dank. Ich werde LASSO nachschlagen. (Es sieht so aus, als ob es auch im Referenzkardinal erwähnt wird.)
Mike Spivey