glmnet을 사용하여 수축 (NAS) 방법으로 NA 값을 처리하는 방법


12

GWAS에서 올가미 회귀에 "glmnet"을 사용하고 있습니다. 일부 변형 및 개체에는 결 측값이 있으며 glmnet이 결 측값을 처리 할 수없는 것 같습니다.

이에 대한 해결책이 있습니까? 또는 올가미 회귀에서 누락 된 값을 처리 할 수있는 다른 패키지가 있습니까?

여기 내 스크립트가 있습니다.

> library(glmnet)
> geno6<-read.table("c6sigCnt.geno")
> geno6[1:10,1:10] #genotype file (0,1,2 for minor allele counts)

   V1 V2 V3 V4 V5 V6 V7 V8 V9 V10
1   1  1  1  1  1  1  1  1  1   0
2   NA NA 1  1  1  1  1  1  1   1
3   0  0  0  0  0  0  0  0  0   2
4   0  1  0  0  0  0  0  0  0   1
5   1  0  1  1  1  1  1  1  1   1
6   0  2  0  0  0  0  0  0  0   0
7   0  0  0  0  0  0  0  0  0   2
8   0 NA  0  0  0  0  0  0  0   0
9   1  0  1  1  1  1  1  1  1   1
10  1  1  1  1  1  1  1  1  1   0

> pheno6<-read.table("c6sigCnt.pheno")
> head(pheno6) #case-control (1,2 for affection status)

  V1
1  2
2  2
3  2
4  2
5  2

> geno61<-as.matrix(geno6) 
> pheno61<-pheno6[,1] 
> fit_lasso <- glmnet(geno61,pheno61,family="binomial",alpha=1,nlambda=100) 

**Error in lognet(x, is.sparse, ix, jx, y, weights, offset, alpha, nobs,  : 
  NA/NaN/Inf in foreign function call (arg 5)**

답변:


12

NA 값을 가진 사례를 생략하면 편향이 발생할 수 있습니다. 대안은 누락 된 데이터의 여러 대치 (예 :)를 수행 mice한 다음 각 대치에 올가미를 수행하는 것입니다. 올가미는 아마도 대치에 대해 선택된 변수의 다른 세트를 반환 할 것이지만, 가장 좋은 후보 변수를 식별하기 위해 대치 된 데이터 세트 중에서 각 변수가 얼마나 자주 선택되는지 조사 할 수 있습니다.

물론 데이터 포인트가 누락 될 확률이 실제 값과 관련이있는 경우에는 대치가 적용되지 않습니다. 따라서 대치하기 전에 주제에 대한 지식을 바탕으로 최소한 그렇지 않은지 확인하십시오.


3

NA가없는 행을 사용 complete.cases및 / 또는 na.omit식별 하십시오 .

cc <- complete.cases(geno6) & complete.cases(pheno6)
geno61 <- as.matrix(geno6[cc, ])
pheno61 <- pheno6[cc, 1]

glmnet(geno61, pheno61, ...)    

1

나는 이것이 오래된 질문이라는 것을 알고 있지만 마우스로 대치하지 않고 공변량의보다 안정적인 목록을 얻으려면 올가미를 모든 대치 된 데이터 세트를 쌓은 후 수행 할 수 있지만 (1 개의 데이터 세트 인 것처럼) 레코드에 가중치를 부여 할 수 있습니다 누락 된 변수의 비율로 참고 : Wood et. 알. 2008 년

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