Wie kann man die Ergebnisse eines Lassos mit glmnet darstellen?


40

Ich würde gerne Prädiktoren für eine stetige abhängige Variable aus einer Menge von 30 unabhängigen Variablen finden. Ich verwende die Lasso-Regression, wie sie im glmnet- Paket in R implementiert ist. Hier ist ein Dummy-Code:

# generate a dummy dataset with 30 predictors (10 useful & 20 useless) 
y=rnorm(100)
x1=matrix(rnorm(100*20),100,20)
x2=matrix(y+rnorm(100*10),100,10)
x=cbind(x1,x2)

# use crossvalidation to find the best lambda
library(glmnet)
cv <- cv.glmnet(x,y,alpha=1,nfolds=10)
l <- cv$lambda.min
alpha=1

# fit the model
fits <- glmnet( x, y, family="gaussian", alpha=alpha, nlambda=100)
res <- predict(fits, s=l, type="coefficients")
res 

Meine Fragen sind, wie man die Ausgabe interpretiert:

  • Ist es richtig zu sagen, dass in der endgültigen Ausgabe alle Prädiktoren, die einen von Null verschiedenen Koeffizienten anzeigen, mit der abhängigen Variablen verknüpft sind?

  • Wäre das ein ausreichender Bericht im Rahmen einer Zeitschriftenveröffentlichung? Oder soll es Teststatistiken für die Signifikanz der Koeffizienten geben? (Der Kontext ist Humangenetik)

  • Ist es sinnvoll, p-Werte oder andere Teststatistiken zu berechnen, um die Signifikanz zu beanspruchen? Wie wäre das möglich? Ist eine Prozedur in R implementiert?

  • Wäre ein einfaches Regressionsdiagramm (mit einer linearen Anpassung geplottete Datenpunkte) für jeden Prädiktor eine geeignete Möglichkeit, diese Daten zu visualisieren?

  • Vielleicht kann jemand ein paar einfache Beispiele für veröffentlichte Artikel liefern, die die Verwendung von Lasso im Kontext einiger realer Daten zeigen und wie man dies in einer Zeitschrift meldet?


Warum führen Sie glmnet im Abschnitt "An das Modell anpassen" aus? Könnten Sie das nicht auch cvfür den Vorhersageschritt verwenden?
Bourbaki4481472

Antworten:


22

Meines Wissens kann man nicht unbedingt sagen, welche Variablen "wichtig" sind oder "echte" Effekte haben, je nachdem, ob ihre Koeffizienten ungleich Null sind. Um ein extremes Beispiel zu geben: Wenn Sie zwei Prädiktoren haben, die perfekt kollinear sind, wählt das Lasso einen davon im Wesentlichen zufällig aus, um das volle Gewicht zu erhalten, und der andere erhält das Gewicht Null.

In diesem Artikel, zu dem einer der Autoren von glmnet gehört, werden einige glmnet-basierte Analysen vorgestellt (siehe insbesondere: Einleitung, Abschnitte 2.3 und 4.3 sowie Tabellen 4 und 5). Es sieht so aus, als hätten sie den P-Wert nicht direkt aus dem glmnet-Modell berechnet. Sie haben zwei verschiedene Arten von P-Werten mit anderen Methoden berechnet, aber es sieht nicht so aus, als ob sie beiden vollständig vertrauen.

Ich bin mir nicht hundertprozentig sicher, was Sie in Bezug auf die Plotmethoden vorschlagen, aber ich denke, das hört sich vernünftig an.

Ich hoffe, das hilft.


1
Hallo David! Danke für die Antwort. Würde irgendetwas dagegen sprechen, das LASSO für die Auswahl von Prädiktoren mit Koeffizienten ungleich Null zu verwenden und dann nur diese Prädiktoren in einem linearen Regressionsmodell zu verwenden, um p-Werte bezüglich der Signifikanz der Prädiktoren zu erhalten. ZB wie dieses Papier: ncbi.nlm.nih.gov/pmc/articles/PMC3412288
jokel

4
@jokel Ich denke, was Sie vorschlagen, ist ein Sonderfall des "entspannten Lassos", und es kann für einige Zwecke sehr gut funktionieren. Ich bin mir nicht sicher, ob Sie den p-Werten vertrauen können, die Sie durch die beschriebene Prozedur erhalten würden, da Ihre F-Statistik oder T-Statistik nicht über den Variablenauswahlschritt Bescheid weiß, den Sie durchgeführt haben, und Ihre Die Typ-I-Fehlerrate wird erhöht. Eine Möglichkeit, darüber nachzudenken: Was wäre die richtige Anzahl von Freiheitsgraden für eine F-Statistik? Die Gesamtzahl der Variablen in der LASSO-Regression? Die Anzahl der Variablen in der sekundären Regression? Etwas dazwischen?
David J. Harris

Richtig - das scheint also auch kein gültiger Ansatz zu sein. Haben Sie eine andere Idee, wie Sie signifikante Prädiktoren aus 300 unabhängigen Variablen finden können (n >> p wie im obigen Beispiel)? Damit ich am Ende behaupten kann: "Prädiktor X ist signifikant mit abhängiger Variable Y verbunden"?
Jokel

Meine Antwort auf alles, wo ich nicht weiß, wie man die Berechnungen macht, ist Randomisierung. Eine Möglichkeit wäre das erneute Abtasten der Zeilen Ihres Datensatzes (z. B. mit Bootstrapping) und das wiederholte Ausführen der LASSO-Analysen. Je öfter die Variable in das Modell einbezogen wird, desto wahrscheinlicher ist es, dass sie wichtig ist. Eine noch bessere Option könnte das Abtasten der Zeilen und Spalten sein, um Maskierungseffekte zu vermeiden. Breiman schlägt in [diesem pdf] (in der Nähe von Abbildung 2) etwas Ähnliches vor ( faculty.smu.edu/tfomby/eco5385/lecture/… ).
David J. Harris

9

Ich wollte nur darauf hinweisen, dass in letzter Zeit versucht wird, eine Teststatistik speziell für das LASSO zu entwickeln, die die durchgeführte Featureauswahl berücksichtigt:

Ein Signifikanztest für das Lasso. Richard Lockhart, Jonathan Taylor, Ryan J. Tibshirani und Robert Tibshirani. http://arxiv.org/abs/1301.7161

Ich habe dies jedoch noch nicht in der angewandten Arbeit gesehen, wohingegen Bootstrapping sicherlich verwendet wird.


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.