2017-01-26 9 views
1

[Этот вопрос специфичен для биоинформатики. Есть сообщения в другом месте, но я не мог найти удовлетворительный ответ.]Отсутствующие значения в lmFit [пакет limma R]

Если у меня есть/экспрессия белка гена данные с пропущенными значениями (NA), как же lmFit из limma пакета обрабатывать эти значения? Обратите внимание, что недостающие значения отсутствуют в матрице проектирования, а скорее только в матрице данных.

Вот моделируемый, рабочий пример, который иллюстрирует мой вопрос:

library(limma) 
my_genes <- matrix(rnorm(9000, -10, 10), ncol=4) 
my_genes <- as.data.frame(my_genes) 
rownames(my_genes) <- paste("Gene", 1:nrow(my_genes)) 
## Randomly introducing NAs 
purrr::map_df(my_genes, function(x) {x[sample(c(TRUE, NA), prob = c(0.95, 0.05), size = length(x), replace = TRUE)]}) 
tx <- 1:2 #suppose treatment is columns 1 & 2 
ctrls <- 3:4 #suppose controls is columns 3 & 4 
my_design <- model.matrix(~factor(c(1,1,0,0))) 
my_design 
fit <- lmFit(my_genes, my_design) 
fit <- eBayes(fit) 
plot(fit$logFC, -log10(fit$p.value)) 

Если вы нашли какие-либо сайты/сообщения, которые могут помочь, не стесняйтесь поделиться с постом или комментарием.

ответ

1

This post in CrossValidated отвечает на мой собственный вопрос подробно. Короче говоря, способ, которым lmFit имеет дело с отсутствующими значениями, аналогичен тому, как это делает lm. Строки с отсутствующими значениями подвергаются na.exclude или «случайному удалению».

Альтернативно: хотя это не идеальное решение, может быть целесообразно просто приписать отсутствующие значения генной экспрессии. Например, используя функцию knn.impute в пакете Bioconductor impute.