Дифференциальное выражение с очень несбалансированными группами - PullRequest
0 голосов
/ 01 июля 2019

Я пытаюсь выполнить дифференциальную экспрессию гена в R, используя общедоступные данные RNA-seq.Однако у меня большой дисбаланс в размере группы (случай N = 10, снова контроль N> 800).Это приводит к перекосу в вулканоплоте.Это похоже на описанный здесь случай https://bioinformatics.stackexchange.com/questions/2570/very-unbalanced-group-sizes-for-de

Я попытался проанализировать данные, используя edgeR и DESeq2.Но (1) я продолжаю склоняться к понижающей регуляции генов, что не имеет биологического смысла, и (2) дифференциально экспрессируемые гены из двух методов перекрываются только между 25-40%, остальные называют только значимымиодин из двух.

Мой начальник предложил мне создать искусственный сбалансированный план, взяв 10 случайных контрольных выборок против моих 10 случаев, рассчитав дифференциальное выражение и выполнив это 1000 раз.Но как я могу суммировать результаты такой случайной выборки?Кроме того, мне кажется неправильным не использовать все доступные образцы все время?

Я также нашел другое обсуждение дисбаланса классов, такое как https://support.bioconductor.org/p/87507/. Но они обсуждают только случаи, когда одна группанемного больше, и не почти на 2 порядка.

Для DESeq я использовал это, с 'counts.raw', являющимся необработанными счетчиками чтения, и 'сгруппировав' мои выборки.

dds <- DESeqDataSetFromMatrix(round(counts.raw), colData=data.frame(group), design=~group)
des.test <- DESeq(dds, test="Wald", fitType="mean")
res.des <- results(des.test)

Для edgeR я сделал это, где f - коэффициент масштабирования, рассчитанный с использованием всех кодирующих белок генов:

dge.list <- DGEList(counts=counts.raw, lib.size=f,group=group)
design <- model.matrix(~group)
dge.list2 <- estimateDisp(dge.list, design=design)
dge.test <- exactTest(dge.list2)
res.edger <- dge.test$table
...