Standardfehler für die Lasso-Vorhersage mit R


60

Ich versuche, ein LASSO-Modell für die Vorhersage zu verwenden, und ich muss Standardfehler abschätzen. Sicher hat schon jemand ein Paket dazu geschrieben. Aber meines Erachtens gibt keines der CRAN-Pakete, die mit einem LASSO Vorhersagen treffen, Standardfehler für diese Vorhersagen zurück.

Meine Frage lautet also: Gibt es ein Paket oder einen R-Code, um Standardfehler für LASSO-Vorhersagen zu berechnen?


3
Um die zugrunde liegende Natur dieser Frage zu verdeutlichen (da sie von CV zu SO hin und her springt), frage ich mich, ob wir den Titel vielleicht bearbeiten könnten, Rob. Wie wäre es mit "Warum scheint es kein Paket für LASSO-Standardfehler zu geben, sind sie schwer zu berechnen?" Ich denke, das würde das Thema des Lebenslaufs klarer machen, so dass diese Unklarheit nicht auftaucht und wir nicht hin und her gehen müssen.
gung - Wiedereinsetzung von Monica

3
Ich könnte die Frage nach der statistischen Methodik stellen, aber das wollte ich eigentlich nicht wissen. Im Lebenslauf sollte es einen Platz für Fragen darüber geben, welche Software eine bestimmte Methode implementiert. Weitere Diskussion unter meta.stats.stackexchange.com/q/2007/159
Rob Hyndman

1
Sie können dies einfach in einem Bayesianischen Framework mit package tun monomvn, siehe meine Antwort unten.
Fabians

Antworten:



20

In einem verwandten Punkt, der hilfreich sein könnte, haben Tibshirani und Kollegen einen Signifikanztest für das Lasso vorgeschlagen. Das Papier ist verfügbar und trägt den Titel "Ein Signifikanztest für das Lasso". Eine kostenlose Version des Papiers finden Sie hier



13

Die Antwort von Sandipan Karmakar sagt Ihnen, was Sie tun sollen. Dies sollte Ihnen beim "Wie" helfen:

> library(monomvn)
>
> ## following the lars diabetes example
> data(diabetes)
> str(diabetes)
'data.frame':   442 obs. of  3 variables:
 $ x : AsIs [1:442, 1:10] 0.038075.... -0.00188.... 0.085298.... -0.08906.... 0.005383.... ...
      ..- attr(*, "dimnames")=List of 2
      .. ..$ : NULL
  .. ..$ : chr  "age" "sex" "bmi" "map" ...

 $ y : num  151 75 141 206 135 97 138 63 110 310 ...

[...]

> ## Bayesian Lasso regression
> reg_blas <- with(diabetes, blasso(x, y))
t=100, m=8
t=200, m=5
t=300, m=8
t=400, m=8
t=500, m=7
t=600, m=8
t=700, m=8
t=800, m=8
t=900, m=5
> 
> ## posterior mean beta (setting those with >50% mass at zero to exactly zero)
> (beta <- colMeans(reg_blas$beta) * (colMeans(reg_blas$beta != 0)  > 0.5))
      b.1       b.2       b.3       b.4       b.5       b.6       b.7       b.8 
   0.0000 -195.9795  532.7136  309.1673 -101.1288    0.0000 -196.4315    0.0000 
      b.9      b.10 
 505.4726    0.0000 
> 
> ## n x nsims matrix of realizations from the posterior predictive:
> post_pred_y <- with(reg_blas, X %*% t(beta))
> 
> ## predictions:
> y_pred <- rowMeans(post_pred_y)
> head(y_pred)
[1]  52.772443 -78.690610  24.234753   9.717777 -23.360369 -45.477199
> 
> ## sd of y:
> sd_y <- apply(post_pred_y, 1, sd)
> head(sd_y)
[1] 6.331673 6.756569 6.031290 5.236101 5.657265 6.150473
> 
> ## 90% credible intervals
> ci_y <- t(apply(post_pred_y, 1, quantile, probs=c(0.05, 0.95)))
> head(ci_y)
             5%       95%
[1,]  42.842535  62.56743
[2,] -88.877760 -68.47159
[3,]  14.933617  33.85679
[4,]   1.297094  18.01523
[5,] -32.709132 -14.13260
[6,] -55.533807 -35.77809

13

Das Bayes'sche LASSO ist die einzige Alternative zum Problem der Berechnung von Standardfehlern. Standardfehler werden in Bayesian LASSO automatisch berechnet ... Sie können Bayesian LASSO sehr einfach mit dem Gibbs-Sampling-Schema implementieren ...

Bayesian LASSO benötigt vorherige Verteilungen, um den Parametern des Modells zugeordnet zu werden. Im LASSO-Modell haben wir die Zielfunktion mit als Regularisierungsparameter. Da wir hier für haben, wird hierfür eine spezielle Art der Vorverteilung benötigt, LAPLACE-Verteilung eine Skalenmischung der Normalverteilung mit Exponentialverteilung als Mischungsdichte. Ausgehend von den vollständigen bedingten posterioren Parametern sind die einzelnen Parameter abzuleiten.||yXβ||22+λ||β||1λ1β

Dann kann man Gibbs Sampling verwenden, um die Kette zu simulieren. Siehe Park & ​​Cassella (2008), "The Bayesian Lasso", JASA , 103 , 482 .

Es gibt drei inhärente Nachteile des frequentistischen LASSO:

  1. Man muss durch Kreuzvalidierung oder andere Mittel auswählen .λ

  2. Standardfehler sind schwierig zu berechnen, da das LARS und andere Algorithmen Punktschätzungen für erstellen .β

  3. Die hierarchische Struktur des vorliegenden Problems kann nicht mithilfe eines frequentistischen Modells codiert werden, das im Bayes'schen Rahmen recht einfach ist.


11

Um die obigen Antworten zu ergänzen, scheint das Problem zu sein, dass sogar ein Bootstrap wahrscheinlich unzureichend ist, da die Schätzung des bestraften Modells verzerrt ist und das Bootstrapping nur die Varianz anspricht - wobei die Verzerrung der Schätzung ignoriert wird. Dies ist schön in der Vignette für das Strafpaket auf Seite 18 zusammengefasst .

Wenn dies jedoch für die Vorhersage verwendet wird, warum ist dann ein Standardfehler aus dem Modell erforderlich? Können Sie Validierung oder Bootstrap nicht ordnungsgemäß kreuzen und einen Standardfehler um eine Metrik herum erzeugen, die sich auf Vorhersagen wie MSE bezieht?


3
Durch Bootstrapping können Verzerrungen geschätzt und korrigiert werden, obwohl die Stichproben relativ groß sein müssen.
Glen_b

3

Es gibt das selectiveInference-Paket in R, https://cran.r-project.org/web/packages/selectiveInference/index.html , das Konfidenzintervalle und p-Werte für Ihre vom LASSO angepassten Koeffizienten auf der Grundlage des folgenden Papiers bereitstellt :

Stephen Reid, Jerome Friedman und Rob Tibshirani (2014). Eine Studie zur Schätzung der Fehlervarianz bei der Lasso-Regression. arXiv: 1311,5274

PS: nur erkennen , dass diese Fehlerschätzungen für Ihre Parameter, nicht sicher für den Fehler auf der endgültigen Vorhersage erzeugt, wenn das , was Sie nach ... Ich nehme an, Sie verwenden könnte „Bevölkerungsprognoseintervalle“ für Sie , dass (wie durch Resampling-Parameter entsprechend der Anpassung nach einer multivariaten Normalverteilung).

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.