Umgang mit NA-Werten in der Schrumpfungsmethode (Lasso) mit glmnet


12

Ich verwende "glmnet" für die Lasso-Regression in GWAS. Einige Varianten und Personen haben fehlende Werte und es scheint, dass glmnet fehlende Werte nicht verarbeiten kann.

Gibt es dafür eine Lösung? oder gibt es ein anderes Paket, das fehlende Werte in der Lasso-Regression verarbeiten kann?

Hier sind meine Skripte.

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

Antworten:


12

Das Weglassen von Fällen mit NA-Werten kann zu Verzerrungen führen. Eine Alternative wäre, mehrere Imputationen der fehlenden Daten durchzuführen, zum Beispiel mit mice, und dann bei jeder der Imputationen Lasso zu machen. Lasso wird wahrscheinlich verschiedene Sätze ausgewählter Variablen für die Imputationen zurückgeben. Sie können jedoch untersuchen, wie häufig jede Variable unter den unterstellten Datensätzen ausgewählt wird, um Ihre besten Kandidatenvariablen zu identifizieren.

Eine Imputation ist natürlich nicht anwendbar, wenn die Wahrscheinlichkeit, dass ein Datenpunkt fehlt, mit seinem wahren Wert zusammenhängt. Stellen Sie daher vor der Imputation sicher, dass dies zumindest aufgrund der Kenntnis des Themas unwahrscheinlich ist.


3

Verwenden Sie complete.casesund / oder na.omit, um die Zeilen zu identifizieren, die keine NAs haben.

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

glmnet(geno61, pheno61, ...)    

1

Ich weiß, dass dies eine alte Frage ist - aber ich wollte hinzufügen, dass über die Imputation mit Mäusen hinaus, um eine zuverlässigere Liste von Kovariaten zu erhalten, Lasso durchgeführt werden kann, nachdem alle unterstellten Datensätze gestapelt wurden (als wäre es 1 Datensatz), aber die Datensätze gewichtet würden durch den Bruchteil fehlender Variablen. Siehe: Wood et. al. 2008

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.