我对R很陌生,我正在尝试在331 x 89基因表达值矩阵上的R sva库中使用ComBat脚本。我的数据由5个批次组成,并且按这种方式排序,因此前106行对应于批次1,接下来的106行对应于批次2,依此类推。

 batch1 <- rep(1,times=106)
 batch2 <- rep(2,times=106)
 batch3 <- rep(3,times=39)
 batch4 <- rep(4,times=26)
 batch5 <- rep(5,times=54)
 batch.type <- as.factor(c(batch1,batch2,batch3,batch4,batch5))

然后,我尝试通过以下命令使用ComBat:
 ComBat(data,batch=batch.type,mod=NULL)

我得到以下读取和错误消息:
"Found 5 batches
Found 0  categorical covariate(s)
Standardizing Data across genes
Error in solve(t(design) %*% design) %*% t(design) %*% t(as.matrix(dat)) :
  non-conformable arguments"

最佳答案

大约在一年前,我已经在两个sva软件包中使用了ComBat(就在今天早上!)InSilicoDb软件包中,并且在两个软件包中使用ComBat方法都遇到了类似的错误。尽管有其他线程处于相似状态,但错误消息可能有所不同。我遇到了“resolve(t(design)%% design)%% t(design)%*%t(as.matrix(dat)):不一致的参数中的错误,以及“while(change中while的错误> conv){:在我所有样本的方差都不够高的情况下,这两种情况都需要“TRUE/FALSE”的情况下缺少值。

后一个错误会有所帮助:您会发现“变化”带来的直觉不够大,以至于发生了一些变化。我经常使用编写的脚本来过滤非常低变的基因。方差系数可能是更好的(标准)度量标准,但是如果我主动设定阈值,以删除方差小于1的所有基因,则ComBat然后可靠地运行(我只是尝试将阈值设定为.5较低,它给出了错误消息找到。可能还取决于数据。)

奇怪的是,更严格的方差阈值已为我解决了这两个错误消息。我认为这必须与代码如何遍历直到收敛的过程有关。也许低变的基因会导致它在程序中的某些点停止?

以下是“更改>转换”消息中的主题。但是仅删除恒定(方差= 0)基因对于我像该用户那样运行ComBat而言还远远不够。他/她的数据集在所有样本中必须具有方差= 0或方差=大量:

https://groups.google.com/forum/#!msg/combat-user-forum/_z8DxYQNFJ8/7UI_a2nCoUEJ

我不喜欢仅仅因为样本变化少而滤除样本,但是我还没有找到一种可以将样本与噪声区分开的好方法。

让我知道这是否有帮助-非常高兴知道 sample 中的基因(或您具有的任何特征)低变是否是100%!

关于r - 使用ComBat时出错,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21532998/

10-12 17:59