R kullanarak serbest tahmin için standart hatalar


60

Tahmin için bir LASSO modeli kullanmaya çalışıyorum ve standart hataları tahmin etmem gerekiyor. Elbette birileri bunu yapmak için zaten bir paket yazmıştır. Ancak görebildiğim kadarıyla, bir LASSO kullanarak tahmin yapan CRAN paketlerinin hiçbiri bu tahminler için standart hatalar getirmeyecek.

Öyleyse sorum şu: LASSO tahminlerinde standart hataları hesaplamak için bir paket veya bir R kodu var mı?


3
Bu sorunun altında yatan konuyu açıklığa kavuşturmak için (ileri geri b / t CV & SO geri döndüğü için), başlığını değiştirebilir miyiz, Rob. “Neden LASSO standart hataları için bir paket yok gibi görünüyor, hesaplamaları zor mu?”, Ya da bunun gibi bir şey, belki de bazı küçük düzenlemeleri tutarlı kılmak için vücuda bağlı. Bunun CV'de konuyla ilgili daha net bir sonuç vereceğini düşünüyorum, böylece bu belirsizlik ortaya çıkmaz ve ileri geri gitmemize gerek kalmaz.
dediklerinin - Monica Yeniden

3
İstatistiğe ilişkin metodoloji hakkında daha fazla soru yapabilirdim, ama aslında bilmek istediğim de bu değildi. Hangi yazılımın belirli bir yöntemi uyguladığına ilişkin CV hakkında sorular için bir yer olmalıdır. Meta.stats.stackexchange.com/q/2007/159
Rob Hyndman

1
Paketi kullanarak bir Bayesian çerçevesinde bunu kolayca yapabilirsiniz monomvn, aşağıdaki cevaba bakınız.
Fabians

Yanıtlar:


46

Kyung ve diğ. (2010), "Cezalandırılmış regresyon, standart hatalar ve Bayesian lassos", Bayesian Analysis, 5 , 2 , kement tahminleri için standart hataların hesaplanmasında istatistiksel olarak geçerli bir yöntem üzerinde bir fikir birliği olamayacağını öne sürüyor. Tibshirani , standart hataların hala çözülmemiş bir sorun olduğu konusunda hemfikirdir (43. slayt) .


7
Bu, paketlerin neden standart hatalar uygulamadığını açıklar.
Rob Hyndman


13

Sandipan Karmakar cevabı ne yapacağını söyler , bu "nasıl" konusunda sana yardım etmeli:

> 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

Bayesian LASSO standart hataların hesaplanmasında tek alternatiftir. Standart hatalar Bayesian LASSO'da otomatik olarak hesaplanır ... Gibes Sampling şemasını kullanarak Bayesian LASSO'yu kolayca uygulayabilirsiniz ...

Bayesian LASSO, modelin parametrelerine atanacak önceki dağıtımlara ihtiyaç duyuyor. LASSO modelinde, nesnel işlevimiz ile Düzenleme parametresi olarak. Burada için -norm'a sahip olduğumuzdan, bunun için özel bir önceki dağıtım türüne ihtiyaç vardır, LAPLACE dağıtımı, dağılım yoğunluğu olarak üssel dağılımlı normal dağılım ölçekli bir karışımını dağıtır. Parametrelerin her birinin koşullu posteriorları esas alınarak hesaplanacaktır.||yXβ||22+λ||β||1λ1β

Daha sonra zinciri simüle etmek için Gibbs Sampling kullanabilirsiniz. Bkz. Park & ​​Cassella (2008), "Bayesian Lasso", JASA , 103 , 482 .

Sık kullanılan LASSO'nun üç doğal dezavantajı vardır:

  1. Birinin çapraz doğrulama veya başka yollarla seçmesi gerekir .λ

  2. LARS ve diğer algoritmalar için nokta tahminleri ürettiğinden, standart hataların hesaplanması zordur .β

  3. Eldeki problemin hiyerarşik yapısı, Bayesian çerçevesinde oldukça kolay olan frekansçı model kullanılarak kodlanamaz.


11

Yukarıdaki cevaplara ek olarak, sorun, bir önyüklemenin bile, cezalandırılmış modelden yapılan tahminin önyargılı olması ve önyüklemenin yalnızca sapmanın önyargısını göz ardı ederek sapmasıyla konuşacağı için yetersiz olması gibi görünüyor. Bu güzel üzerinde cezalandırılmış paket için skeç özetlenmiştir Sayfa 18 .

Bununla birlikte, tahmin için kullanılıyorsa, neden modelin standart bir hatası gerekli? Doğrulamayı geçemez veya önyüklemeyi engelleyemez ve MSE gibi bir tahminle ilgili bir ölçüm etrafında standart bir hata üretemez misiniz?


3
Bootstrapping, örneklerin oldukça büyük olması gerekmesine rağmen, önyargı için hem tahmini hem de doğru olabilir.
Glen_b

3

Aşağıdaki makaleye dayanarak, LASSO tarafından yerleştirilen katsayılarınız için güven aralıkları ve p değerleri sağlayan R, https://cran.r-project.org/web/packages/selectiveInference/index.html adresindeki selectiveInference paketi bulunmaktadır. :

Stephen Reid, Jerome Friedman ve Rob Tibshirani (2014). Kement regresyonunda hata varyansı tahmin çalışması. arXiv: 1311.5274

Not: Bunun parametreleriniz için hata tahminleri ürettiğinin farkına varın, nihai öngörünüzdeki hatadan emin değilsiniz, eğer peşindeyseniz ... Sanırım bunun için "nüfus tahmini aralıklarını" kullanabilirsiniz . Çok değişkenli normal dağılımın ardından parametreleri uygun şekilde yeniden örnekleme).

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.