我是R的新手,我正在尝试在R sva库中使用331 x 89基因表达值矩阵的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))
Run Code Online (Sandbox Code Playgroud)
然后我尝试使用此命令使用ComBat:
ComBat(data,batch=batch.type,mod=NULL)
Run Code Online (Sandbox Code Playgroud)
我收到以下读数和错误消息:
"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"
Run Code Online (Sandbox Code Playgroud)
kpl*_*ney 10
我已经在sva包中使用了ComBat(就在今天早上!)一年前的InSilicoDb软件包,并且在两个软件包中使用ComBat方法都遇到了类似的错误.虽然还有其他类似的线程,但错误消息可能不同.我遇到了"解决中的错误(t(设计)%%设计)%% t(设计)%*%t(as.matrix(dat)):不一致的参数"和"错误的同时(更改) > conv){:缺少需要TRUE/FALSE的值",在两种情况下,当我的所有样本的方差都不够高时.
后一个错误更有帮助:你看到"变化"的直觉不够大,以至于某些东西在这里发生变化.我经常使用我写的脚本来过滤掉变化很小的基因.方差系数可能是一个更好的(标准化)度量标准,但是如果我相当积极地阈值,要删除方差为1以下的所有基因,那么ComBat可靠地运行(我只是尝试了一个较低的阈值.5并且它给出了错误信息你发现.也可能有点数据依赖.)
奇怪的是,更严格的方差阈值已经为我解决了这两个错误消息.我认为它必须与代码如何经过迭代直到收敛; 也许低变化的基因会导致它在程序中的几个点停止?
下面是"change> conv"消息的一个帖子.但是,仅删除常量(方差= 0)基因对我来说就不足以像这个用户一样运行ComBat.他/她的数据集必须在所有样本中具有方差= 0或方差=大数:
https://groups.google.com/forum/#!msg/combat-user-forum/_z8DxYQNFJ8/7UI_a2nCoUEJ
我不喜欢过滤样品只是因为它们变化很小,但我还没有找到一种能够将这些与噪音区别开来的好方法.
让我知道这是否有帮助 - 很高兴知道它是100%由于样本中的低变异基因(或任何你有的功能)!