这个问题是生物信息学特有的。其他地方也有帖子,但我找不到满意的答案。
如果我有一个带有缺失值(NA)的基因/蛋白质表达数据,那么limma包的lmFit如何处理这些值?注意,缺少的值不是在设计矩阵中,而是在数据矩阵中。
下面是一个模拟的工作示例,说明了我的问题:
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))如果你找到任何可以帮助你的网站/帖子,可以随时与别人分享或评论。
发布于 2017-01-26 02:01:49
This post in CrossValidated 详细回答了我自己的问题。简而言之,lmFit处理缺失值的方式类似于lm的处理方式。缺少值的行将受到na.exclude,或“按情况删除”。
或者:虽然这不是一个理想的解决方案,但它可能是适当的,只是估算缺失的基因表达值。例如,在knn.impute生物导体包中使用impute函数。
https://stackoverflow.com/questions/41864774
复制相似问题