glmnetを使用して収縮(なげなわ)メソッドでNA値を処理する方法


12

GWASの投げ縄回帰に「glmnet」を使用しています。一部のバリアントと個人には欠損値があり、glmnetは欠損値を処理できないようです。

これに対する解決策はありますか?または、投げ縄回帰で欠損値を処理できる他のパッケージはありますか?

これが私のスクリプトです。

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

回答:


12

NA値を持つケースを省略すると、バイアスが生じる可能性があります。別の方法としてはmice、たとえばを使用して、欠落しているデータの複数の代入を実行し、各代入についてなげなわを実行します。Lassoは、補完のために選択された変数の異なるセットを返す可能性がありますが、補完されたデータセットから各変数が選択される頻度を調べて、最適な候補変数を特定できます。

もちろん、データポイントが欠落している確率がその真の値に関連している場合、代入は適用できません。したがって、代入を行う前に、主題の知識に基づいて、少なくともそうなる可能性が低いことを確認してください。


3

complete.casesおよび/を使用して、na.omitNAがない行を識別します。

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

glmnet(geno61, pheno61, ...)    

1

私はこれが古い質問であることを知っています-しかし、マウスによる補完を超えて、共変量のより信頼できるリストを取得するために、すべての補完されたデータセット(1つのデータセットであるかのように)を積み重ねた後にラッソを実行できますが、レコードに重みを付けます不足している変数の割合によって。参照:ウッド他 al。2008年

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.