lmFit 中的缺失值 [limma R 包]

Missing values in lmFit [limma R package]

[此题专门针对生物信息学。其他地方有post,但我找不到满意的答案。]

如果我有一个 gene/protein 表达式数据缺少值 (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))

如果您发现任何可以提供帮助的网站/post,请随时分享 post 或发表评论。

This post in CrossValidated 详细回答了我自己的问题。简而言之,lmFit 处理缺失值的方式与 lm 类似。具有缺失值的行受制于 na.exclude 或 "case-wise deletion."

或者:虽然这不是一个理想的解决方案,但只估算缺失的 gene-expression 值可能是合适的。例如,使用 impute Bioconductor 包中的 knn.impute 函数。