Cómo manejar los valores de NA en el método de contracción (Lazo) usando glmnet


12

Estoy usando "glmnet" para la regresión de lazo en GWAS. Algunas variantes e individuos tienen valores perdidos y parece que glmnet no puede manejar los valores perdidos.

¿Hay alguna solución para esto? ¿O hay otro paquete que pueda manejar los valores faltantes en la regresión de lazo?

Aquí están mis guiones.

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

Respuestas:


12

Omitir casos con valores de NA podría conducir a un sesgo. Una alternativa sería realizar múltiples imputaciones de los datos faltantes, por ejemplo con mice, y luego hacer un lazo en cada una de las imputaciones. Lasso probablemente devolverá diferentes conjuntos de variables seleccionadas para las imputaciones, pero podría examinar con qué frecuencia se selecciona cada variable, entre los conjuntos de datos imputados, para identificar sus mejores variables candidatas.

La imputación, por supuesto, no es aplicable si la probabilidad de que falte un punto de datos está relacionada con su valor real. Por lo tanto, antes de hacer la imputación, asegúrese de que al menos sea poco probable, según el conocimiento del tema.


3

Use complete.casesy / o na.omitpara identificar aquellas filas que no tienen NA.

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

glmnet(geno61, pheno61, ...)    

1

Sé que esta es una vieja pregunta, pero quería agregar, más allá de la imputación con ratones, para obtener una lista más confiable de covariables, el lazo podría realizarse después de apilar todos los conjuntos de datos imputados (como si fuera un conjunto de datos) pero ponderar los registros por la fracción de variables que faltan. Ver: Wood et. Alabama. 2008

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.