Ich habe einen Datensatz mit 9 kontinuierlichen unabhängigen Variablen. Ich versuche, unter diesen Variablen auszuwählen, um ein Modell an eine einzelne prozentuale (abhängige) Variable anzupassen Score
. Leider weiß ich, dass es ernsthafte Kollinearität zwischen mehreren Variablen geben wird.
Ich habe versucht, die stepAIC()
Funktion in R für die Variablenauswahl zu verwenden, aber diese Methode scheint seltsamerweise abhängig von der Reihenfolge zu sein, in der die Variablen in der Gleichung aufgeführt sind ...
Hier ist mein R-Code (da es sich um Prozentdaten handelt, verwende ich eine Logit-Transformation für Score):
library(MASS)
library(car)
data.tst = read.table("data.txt",header=T)
data.lm = lm(logit(Score) ~ Var1 + Var2 + Var3 + Var4 + Var5 + Var6 + Var7 +
Var8 + Var9, data = data.tst)
step = stepAIC(data.lm, direction="both")
summary(step)
Aus irgendeinem Grund stellte ich fest, dass die am Anfang der Gleichung aufgelisteten Variablen von der stepAIC()
Funktion ausgewählt werden und das Ergebnis durch Auflisten, z. B. Var9
zuerst (nach der Tilde) , manipuliert werden kann .
Was ist eine effektivere (und weniger kontroverse) Möglichkeit, hier ein Modell anzupassen? Eigentlich bin ich nicht auf lineare Regression fixiert: Ich möchte nur verstehen können, welche der 9 Variablen die Variation in der Score
Variablen wirklich beeinflusst . Dies wäre vorzugsweise eine Methode, die das starke Kollinearitätspotential dieser 9 Variablen berücksichtigt.
Score
Variablen wirklich antreibt ", was der Satz ist, auf den ich mich möglicherweise zu sehr konzentriert habe. Bei starker Kollinearität wird das Lasso dabei nicht helfen, zumindest bei einer strengeren Interpretation der Bemerkung des OP.Antworten:
Zunächst einmal ist T. Keith, Multiple Regression and Beyond, eine sehr gute Ressource für dieses Problem. Das Buch enthält viel Material über die Modellierung von Pfaden und die Auswahl von Variablen, und ich denke, Sie werden dort umfassende Antworten auf Ihre Fragen finden.
Eine Möglichkeit, die Multikollinearität anzugehen, besteht darin, die Prädiktoren zu zentrieren, dh den Mittelwert einer Reihe von jedem Wert zu subtrahieren. Die Ridge-Regression kann auch verwendet werden, wenn die Daten stark kollinear sind. Schließlich kann die sequentielle Regression beim Verständnis der Ursache-Wirkungs-Beziehungen zwischen den Prädiktoren in Verbindung mit der Analyse der zeitlichen Abfolge der Prädiktorereignisse hilfreich sein.
Zeigen alle 9 Variablen Kollinearität? Für die Diagnose können Sie den Varianzinflationsfaktor von Cohen 2003 verwenden. Ein VIF-Wert> = 10 zeigt eine hohe Kollinearität und aufgeblasene Standardfehler an. Ich verstehe, Sie interessieren sich mehr für die Ursache-Wirkungs-Beziehung zwischen Prädiktoren und Ergebnissen. Wenn nicht, wird Multikollinearität nicht als ernstes Problem für die Vorhersage angesehen, da Sie durch Überprüfen der MAE der nicht erfassten Daten anhand von Modellen, die jeweils mit Ihren Prädiktoren erstellt wurden, bestätigen können. Wenn Ihre Prädiktoren eine marginale Vorhersagekraft haben, werden Sie feststellen, dass die MAE auch bei Vorhandensein von Modell-Multikollinearität abnimmt.
quelle
Da es so schwierig ist zu bestimmen, welche Variablen gelöscht werden sollen, ist es oft besser, keine Variablen zu löschen. Sie können auf zwei Arten vorgehen: (1) Verwenden Sie eine Datenreduktionsmethode (z. B. Variablenclustering oder Hauptkomponenten), und fügen Sie anstelle einzelner Variablen Zusammenfassungsbewertungen in das Modell ein. (2) Fügen Sie alle Variablen in das Modell ein, aber testen Sie sie nicht für den Effekt einer Variablen, angepasst an die Effekte konkurrierender Variablen. Für (2) sind Chunk-Tests von konkurrierenden Variablen leistungsstark, da kollineare Variablen sich beim Assoziationstest mit mehreren Freiheitsgraden zusammenschließen, anstatt miteinander zu konkurrieren, wie wenn Sie Variablen einzeln testen.
quelle
and put summary scores into the model
Wenn Sie eine variable Auswahl bei hoher Kollinearität durchführen möchten , kann ich das l0ara-Paket empfehlen , das mit einem iterativen adaptiven Ridge-Verfahren für L0-bestrafte GLMs geeignet ist . Da diese Methode letztendlich auf einer kammregulierten Regression basiert, kann sie sehr gut mit Kollinearität umgehen, und in meinen Simulationen hat sie viel weniger falsch-positive Ergebnisse erzielt, während sie weiterhin eine große Vorhersageperformance bietet, verglichen mit zB LASSO, elastischem Netz oder adaptivem LASSO. Alternativ können Sie auch das L0Learn-Paket ausprobierenmit einer Kombination aus einer L0- und einer L2-Strafe. Die L0-Strafe begünstigt dann die Sparsity (dh kleine Modelle), während die L2-Strafe die Kollinearität reguliert. Das elastische Netz (das eine Kombination aus einer L1- und einer L2-Strafe verwendet) wird ebenfalls häufig vorgeschlagen, aber in meinen Tests wurden auf diese Weise mehr falsch-positive Ergebnisse erzielt, und die Koeffizienten werden stark voreingenommen sein. Diese Verzerrung können Sie beseitigen, wenn Sie stattdessen L0-bestrafte Methoden (auch als beste Teilmenge bezeichnet) verwenden. Dies ist ein sogenannter Orakelschätzer, der gleichzeitig konsistente und unverzerrte Parameterkoeffizienten ermittelt. Die Regularisierungsparameter bei all diesen Methoden müssen über eine Kreuzvalidierung optimiert werden, um eine optimale Prognoseleistung außerhalb der Stichprobe zu erzielen. Wenn Sie auch Signifikanzniveaus und Konfidenzintervalle für Ihre Parameter erhalten möchten, können Sie dies auch über nichtparametrisches Bootstrapping tun.
Der iterative adaptive Kammalgorithmus von
l0ara
(manchmal als gebrochener adaptiver Kamm bezeichnet) besitzt wie das elastische Netz einen Gruppierungseffekt, der dazu führt, dass hoch korrelierte Variablen in Gruppen ausgewählt werden, sobald sie in Ihr Modell eingehen. Dies ist sinnvoll - wenn Sie beispielsweise zwei nahezu kollineare Variablen in Ihrem Modell hätten, würde dies den Effekt gleichmäßig auf beide aufteilen.Wenn Sie Anteilsdaten analysieren, sind Sie mit einem logistischen Regressionsmodell übrigens besser dran - das
l0ara
Paket ermöglicht es Ihnen, dies in Kombination mit einer L0-Strafe zu tun. für dasL0Learn
Paket wird dies in Kürze unterstützt.quelle