glmnet을 사용하여 올가미의 결과를 제시하는 방법?


40

30 개의 독립 변수 세트에서 연속 종속 변수에 대한 예측 변수를 찾고 싶습니다. R 의 glmnet 패키지에 구현 된대로 Lasso 회귀를 사용하고 있습니다. 더미 코드는 다음과 같습니다.

# 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 

내 질문은 출력을 해석하는 방법입니다.

  • 최종 출력에서 ​​0과 다른 계수를 나타내는 모든 예측 변수가 종속 변수와 관련이 있다고 말하는 것이 맞습니까?

  • 저널 출판의 맥락에서 충분한 보고서가 될 것입니까? 아니면 계수의 중요성에 대한 검정 통계량을 제공 할 것으로 예상됩니까? (상황은 인간 유전학이다)

  • 유의성을 주장하기 위해 p- 값 또는 기타 검정 통계량을 계산하는 것이 합리적입니까? 어떻게 가능할까요? 절차는 R로 구현 되었습니까?

  • 모든 예측 변수에 대한 간단한 회귀 그림 (선형 적합도로 그려진 데이터 점)이이 데이터를 시각화하는 데 적합한 방법입니까?

  • 어쩌면 누군가가 실제 데이터의 맥락에서 올가미를 사용하는 방법과 저널에 이것을보고하는 방법을 보여주는 출판 기사의 쉬운 예를 제공 할 수 있습니까?


"모델에 맞게"섹션에서 glmnet을 실행하는 이유는 무엇입니까? cv예측 단계에도 사용할 수 없습니까?
bourbaki4481472

답변:


22

내 이해는 계수가 0이 아닌지 여부에 따라 어떤 변수가 "중요"하거나 "실제"영향을 미치는지에 대해 많은 것을 말할 수는 없다는 것입니다. 극단적 인 예를 들기 위해 완벽하게 공선 인 예측 변수가 두 개인 경우 올가미는 본질적으로 전체 가중치를 얻기 위해 무작위로 하나를 선택하고 다른 하나는 가중치가 0이됩니다.

glmnet의 저자 중 한 명을 포함하는 이 논문 은 일부 glmnet 기반 분석을 제공합니다 (특히 소개, 섹션 2.3 및 4.3, 표 4 및 5 참조). 이를 통해 glmnet 모델에서 직접 P- 값을 계산하지 않은 것처럼 보입니다. 그들은 다른 방법을 사용하여 두 가지 다른 종류의 P- 값을 계산했지만 그중 하나를 완전히 신뢰하는 것처럼 보이지 않습니다.

플로팅 방법과 관련하여 제안하는 내용을 100 % 확신 할 수는 없지만 합리적이라고 생각합니다.

희망이 도움이됩니다.


1
안녕 데이비드! 답변 해주셔서 감사합니다. 계수가 0이 아닌 예측 변수를 선택하기 위해 LASSO를 사용하는 것에 반대하는 말을하고 선형 회귀 모델의 예측 변수 만 사용하여 preditors의 중요성에 관한 p- 값을 구하십시오. 예를 들어이
jokel

4
@ jokel 나는 당신이 제안하는 것이 "이완 된 올가미"의 특별한 경우라고 생각하며, 어떤 목적을 위해 매우 잘 작동 할 수 있습니다. F 통계 또는 t 통계는 수행 한 변수 선택 단계에 대해 "알지 못하기 때문에"설명 된 절차에서 얻은 p- 값을 신뢰할 수 있는지 확실하지 않습니다. 제 1 종 오류율이 증가합니다. 이것을 생각하는 한 가지 방법 : F 통계에 대한 올바른 자유도는 얼마입니까? LASSO 회귀 분석의 총 변수 수는? 이차 회귀 분석의 변수 수는? 그 사이에 뭔가?
David J. Harris

사실-이것은 유효한 접근 방법이 아닌 것 같습니다. 300 개의 독립 변수 중 위의 예와 같이 n >> p에서 유의 한 예측 변수를 찾는 방법에 대한 다른 아이디어가 있습니까? 결국 "예측 자 X는 종속 변수 Y와 크게 관련이 있습니다"라고 주장 할 수 있을까요?
jokel

계산 방법을 모르는 모든 것에 대한 나의 대답은 무작위 화하는 것입니다. 한 가지 가능성은 데이터 세트의 행을 리샘플링하고 (예 : 부트 스트랩) LASSO 분석을 반복적으로 실행하는 것입니다. 변수가 모델에 더 자주 포함 될수록 중요 할 가능성이 높습니다. 더 나은 옵션은 행 열을 샘플링하는 것과 관련이 있으며 "마스킹"효과를 피하는 데 도움이 될 수 있습니다. Breiman은 [this pdf] (그림 2 근처) ( faculty.smu.edu/tfomby/eco5385/lecture/… ) 와 비슷한 맥락에서 무언가를 제안합니다 .
David J. Harris

9

방금 LASSO에 대한 테스트 통계를 개발하려는 최근의 작업이 있음을 지적하고 싶었습니다.이 기능은 수행중인 기능 선택을 고려합니다.

올가미에 대한 유의성 검정. Richard Lockhart, Jonathan Taylor, Ryan J. Tibshirani, Robert Tibshirani. http://arxiv.org/abs/1301.7161

부트 스트랩이 확실히 사용되는 반면, 나는 이것이 적용된 작업에서 아직 사용 된 것을 보지 못했습니다.


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.