Cara menangani nilai NA dalam metode shrinkage (Lasso) menggunakan glmnet


12

Saya menggunakan "glmnet" untuk regresi laso di GWAS. Beberapa varian dan individu memiliki nilai yang hilang dan tampaknya glmnet tidak dapat menangani nilai yang hilang.

Apakah ada solusi untuk ini? atau apakah ada paket lain yang dapat menangani nilai yang hilang dalam regresi laso?

Ini skrip saya.

> 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)**

Jawaban:


12

Menghilangkan kasus dengan nilai NA dapat menyebabkan bias. Alternatifnya adalah dengan melakukan beberapa imputasi dari data yang hilang, misalnya dengan mice, dan kemudian melakukan laso pada masing-masing imputasi. Lasso mungkin akan mengembalikan set variabel yang berbeda untuk imputasi, tetapi Anda dapat memeriksa seberapa sering setiap variabel dipilih, di antara set data yang dimasukkan, untuk mengidentifikasi variabel kandidat terbaik Anda.

Imputasi, tentu saja, tidak dapat diterapkan jika probabilitas suatu titik data hilang terkait dengan nilai sebenarnya. Jadi sebelum melakukan imputasi pastikan setidaknya itu tidak mungkin terjadi, berdasarkan pengetahuan tentang materi pelajaran.


3

Gunakan complete.casesdan / atau na.omituntuk mengidentifikasi baris-baris yang tidak memiliki NAs.

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

glmnet(geno61, pheno61, ...)    

1

Saya tahu ini adalah pertanyaan lama - tetapi saya ingin menambahkan, di luar imputasi dengan tikus, untuk mendapatkan daftar kovariat yang lebih andal, laso dapat dilakukan setelah menumpuk semua dataset yang terkait (seolah-olah itu adalah 1 set data) tetapi memberi bobot pada catatan. oleh sebagian kecil dari variabel yang hilang. Lihat: Wood et. Al. 2008

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.