Come gestire i valori NA nel metodo di restringimento (Lazo) usando glmnet


12

Sto usando "glmnet" per la regressione del lazo in GWAS. Alcune varianti e individui hanno valori mancanti e sembra che glmnet non sia in grado di gestire valori mancanti.

C'è qualche soluzione per questo? o esiste un altro pacchetto in grado di gestire i valori mancanti nella regressione del lazo?

Ecco i miei script.

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

Risposte:


12

L'omissione di casi con valori NA potrebbe causare distorsioni. Un'alternativa sarebbe quella di eseguire più imputazioni dei dati mancanti, ad esempio con mice, e quindi fare lazo su ciascuna delle imputazioni. Probabilmente Lasso restituirà diversi insiemi di variabili selezionate per le imputazioni, ma potresti esaminare la frequenza con cui ogni variabile viene selezionata, tra le serie di dati imputate, per identificare le migliori variabili candidate.

L'imputazione, ovviamente, è inapplicabile se la probabilità che manchi un punto dati è correlata al suo vero valore. Quindi, prima di fare l'imputazione, assicurati almeno che sia improbabile, in base alla conoscenza della materia.


3

Utilizzare complete.casese / o na.omitper identificare quelle righe che non hanno NA.

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

glmnet(geno61, pheno61, ...)    

1

So che questa è una vecchia domanda - ma volevo aggiungere, oltre all'imputazione con i topi, per ottenere un elenco più affidabile di covariate, il lazo poteva essere eseguito dopo aver impilato tutti i set di dati imputati (come se fosse 1 set di dati) ma soppesare i record dalla frazione di variabili mancanti. Vedi: Wood et. al. 2008

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.