예측을 위해 LASSO 모델을 사용하려고하는데 표준 오류를 추정해야합니다. 분명히 누군가가 이미 이것을하기 위해 패키지를 작성했습니다. 그러나 내가 알 수있는 한, LASSO를 사용하여 예측을 수행하는 CRAN의 패키지는 해당 예측에 대한 표준 오류를 반환하지 않습니다.
그래서 내 질문은 : 패키지 또는 일부 R 코드가 LASSO 예측에 대한 표준 오류를 계산할 수 있습니까?
monomvn
. 아래 답변을 참조하십시오.
예측을 위해 LASSO 모델을 사용하려고하는데 표준 오류를 추정해야합니다. 분명히 누군가가 이미 이것을하기 위해 패키지를 작성했습니다. 그러나 내가 알 수있는 한, LASSO를 사용하여 예측을 수행하는 CRAN의 패키지는 해당 예측에 대한 표준 오류를 반환하지 않습니다.
그래서 내 질문은 : 패키지 또는 일부 R 코드가 LASSO 예측에 대한 표준 오류를 계산할 수 있습니까?
monomvn
. 아래 답변을 참조하십시오.
답변:
Kyung et al. (2010), "Penalized regression, standard errors, & Bayesian lassos", Bayesian Analysis, 5 , 2 는 올가미 예측에 대한 표준 오차를 계산하는 통계적으로 유효한 방법에 대한 합의가 없을 수 있다고 제안합니다. Tibshirani 는 표준 오류가 여전히 해결되지 않은 문제라는 데 동의합니다 (슬라이드 43) .
Sandipan Karmakar의 답변은 무엇 을 해야하는지 알려줍니다 . "방법"에 도움이됩니다.
> 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
베이지안 LASSO는 표준 오차 계산 문제에 대한 유일한 대안입니다. 표준 오류는 Bayesian LASSO에서 자동으로 계산됩니다 ... Gibbs 샘플링 구성표를 사용하여 Bayesian LASSO를 매우 쉽게 구현할 수 있습니다 ...
베이지안 LASSO는 모형의 모수에 사전 분포를 할당해야합니다. LASSO 모델에는 목적 함수 with 정규화 매개 변수로 여기서 우리는 대해 -norm을 때문에이를 위해 특별한 유형의 사전 분포가 필요합니다. 각 매개 변수의 전체 조건부 사후를 기반으로 추론됩니다.
그런 다음 체인 시뮬레이션을 위해 Gibbs Sampling을 사용할 수 있습니다. 참조 공원 및 Cassella (2008), "베이지안 올가미 ', JASA , 103 , 482 .
잦은 LASSO에는 다음과 같은 세 가지 단점이 있습니다.
교차 검증 또는 다른 수단으로 를 선택해야합니다 .
LARS 및 기타 알고리즘이 대한 점 추정치를 생성하므로 표준 오류를 계산하기가 어렵습니다 .
당면한 문제의 계층 구조는 잦은 모델을 사용하여 인코딩 할 수 없으므로 베이지안 프레임 워크에서는 매우 쉽습니다.
위의 답변에 추가하기 위해 문제는 불이익을받은 모델의 추정치가 바이어스되고 부트 스트랩이 분산에 대해서만 이야기하므로 추정치의 편향을 무시하고 부트 스트랩조차 불충분 할 수 있습니다. 이것은 벌칙 적용 패키지의 비 네트에 잘 요약되어 있습니다 ( 18 페이지) .
그러나 예측에 사용되는 경우 왜 모델의 표준 오차가 필요합니까? 적절하게 교차 검증 또는 부트 스트랩 할 수 없으며 MSE와 같은 예측 관련 메트릭에 대한 표준 오류를 생성 할 수 없습니까?
R ( https://cran.r-project.org/web/packages/selectiveInference/index.html) 에 selectiveInference 패키지가 있으며 ,이 백서는 다음 문서를 기반으로 LASSO에 적합한 계수에 대한 신뢰 구간 및 p 값을 제공합니다. :
PS : 그냥 당신이 당신이 사용할 수있는 가정 후 ...있어 무엇 경우,이 최종 예측에 오류를 들어, 매개 변수에 대한 확인 오류 추정치를하지 생산 실현 "인구 예측 간격을" 당신이 좋아하는 경우에 의해 (그것을 위해 다변량 정규 분포에 따른 적합도에 따른 리샘플링 매개 변수).