Jak obsługiwać wartości NA metodą kurczliwości (Lasso) przy użyciu glmnet


12

Używam „glmnet” do regresji lasso w GWAS. Niektóre warianty i pojedyncze osoby mają brakujące wartości i wydaje się, że glmnet nie może obsłużyć brakujących wartości.

Czy jest na to jakieś rozwiązanie? czy jest jakiś inny pakiet, który może obsłużyć brakujące wartości w regresji lasso?

Oto moje skrypty.

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

Odpowiedzi:


12

Pominięcie przypadków z wartościami NA może prowadzić do stronniczości. Alternatywą byłoby wykonanie wielu imputacji brakujących danych, na przykład za pomocą mice, a następnie wykonanie lasso na każdej z tych imputacji. Lasso prawdopodobnie zwróci różne zestawy wybranych zmiennych dla imputacji, ale możesz zbadać, jak często każda zmienna jest wybierana spośród przypisanych zbiorów danych, aby zidentyfikować najlepsze zmienne kandydujące.

Imputacja oczywiście nie ma zastosowania, jeśli prawdopodobieństwo braku punktu danych jest powiązane z jego prawdziwą wartością. Dlatego przed dokonaniem imputacji upewnij się, że jest to mało prawdopodobne, w oparciu o znajomość przedmiotu.


3

Użyj complete.casesi / lub, na.omitaby zidentyfikować wiersze, które nie mają NA.

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

glmnet(geno61, pheno61, ...)    

1

Wiem, że to stare pytanie - ale chciałem dodać, poza przypisaniem myszom, aby uzyskać bardziej niezawodną listę zmiennych towarzyszących, lasso można wykonać po ułożeniu wszystkich przypisanych zestawów danych (tak jakby to był 1 zestaw danych), ale ważenie rekordów przez ułamek brakujących zmiennych. Zobacz: Wood i in. glin. 2008

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.