在受试者之间和受试者内部进行批量校正
1
0
进入编辑模式
demisa•0
@demisa - 22970
最后一次出现是1天前
美国

你好,

我一直在搜索关于它的战利品,如果我错过了一个解决方案,我很抱歉。

我正在尝试在DESeq2中做配对分析,这意味着有一个配对的样本设计。

我有一个数据集,有两个组(这是我的批处理),每个组的主题数量不均匀,每个主题只能在其中一个组中,并且有一个或两个样本(所以是一个或两个条件)。请注意,我的计数是用kallisto估算的。只是一个玩具的例子如何我的colData看起来像:

1 A S1 2样品2 1 B S1 3样品3 1 A S2 4样品4 1 B S2 5样品5 1 A S3 6样品6 1 B S3 7样品7 1 A S4 8样品8 1 B S4 9样品9 1 A S5 10样品10 1 B S5 11样品11 2 A S6 12样品12 2 B S6 13样品13 2 A S7 14样品14 2 B S7 15样品15 2 A S8

在这个例子中,batch == 1有5个主题,每个主题都有两个条件,而batch == 2有3个主题,其中一个只有一个条件。我简化了保持平衡的成对样本的条件,所以我过滤了sample15。

我的目标是在控制主题效果的同时测试条件效果。

所以最初我认为我的模型应该是~批处理+主题+条件。我将查看resultName以查看条件效果(同时已控制批次和主题效果)是“condition_B_vs_A”。这种模型设计导致了“模型矩阵不满秩”的误差。

dds = DESeqDataSetFromMatrix(countData =计数。mat, colData = sample.summary。balanced, design = ~ batch + subject + condition) dds <- DESeq(dds) Error in checkFullRank(modelMatrix):模型矩阵不是满秩的,因此模型不能按指定拟合。设计公式中的一个或多个变量或交互项是其他变量或交互项的线性组合,必须删除。

问题是批次和主题的线性。小插图中的线性例子并不完全符合我的理解。

虽然我在这里尝试了一些对话的想法(比如我最后的方法是先应用批量更正,转换为正整数,然后用~ subject + condition运行DESeq2,结果是零deg),但我所尝试的都不奏效。

顺便说一下,如果我不做配对设计,只是有~批处理+条件的模型工作得很好。但我想利用每门课都有这两种条件的事实。

任何见解都将非常感激!

RNASeqDataBatchEffect配对DESeq2•230个视图
添加评论
0
进入编辑模式
@mikelove
最后一次出现是6小时前
美国

这部分:

每个受试者只能属于其中一个组并且有一个或两个样本(所以是一种或两种情况)

在之前的文章中已经讨论过。在DESeq2中,我们使用固定效果,所以对pair和条件有固定效果,但limma的duplicateCorrelation方法更灵活,所以你可以研究一下。它将使用所有配对或未配对的样本,并对主题内部相关性进行建模。

在DESeq2中,我建议使用成对的样本,对于组内嵌套的成对样本,可以使用小插图中的策略。

0
进入编辑模式

谢谢Michael的回复。

虽然我已经看到了使用duplicateCorrelation推荐limma的讨论,但我想知道我是否可以用DESeq2来做。

我的困惑恰恰是在小插图“群体特定条件的影响,群体中嵌套的个体”的部分,因为我认为主体。n是将两个不同的科目分组,但我现在已经意识到它到底是做什么的,所以没关系。但我并不是在寻找特定于群体(在我的情况下是特定于批次)的条件效应,而是在调整群体/批次和受试者差异时的条件效应。所以我在添加主题后尝试了下面的模型。n变量:

~ batch + batch:主语。N +条件

但让我再往前走一步,在简单模型中,我遇到了一个收敛问题,为此我尝试了两种方法,但都没有解决问题。首先,将DESeq函数分解为步骤并增加maxit,其次,过滤更多的低表达基因。

#对象构造的简化模型:dds = DESeqDataSetFromMatrix(countData = counts. frommatrix)mat, colData = sample.summary。平衡,设计= ~受试者+条件)dds <- DESeq(dds) *估计大小因子估计分散基因方面的色散估计均值-色散关系最终的色散估计拟合模型和测试21行不收敛于beta,标记为mcols(对象)$betaConv。使用更大的maxit参数与nbinomWaldTest* #所以我重复分成步骤和过滤更多的低表达基因:dds = DESeqDataSetFromMatrix(countData =计数。mat, colData = sample.summary。平衡,设计= ~受试者+条件)dds <- estimateSizeFactors(dds) nc <- counts(dds,归一化=TRUE) filter <- rowsum (nc >= 10) >= 4 dds <- dds[filter,] dds <- estimatedispersion (dds) *基因色散估计均值-色散关系最终色散估计* dds <- nbinomWaldTest(dds, maxit=2000) *23行未在beta中收敛,标记在mcols(object)$betaConv。使用更大的maxit参数nbinomWaldTest* #没有解决收敛问题,我尝试继续前进。#添加组合变量dds ColData: dds$subject。N = ifelse(dds$batch == 1, factor(rep(rep(1:batch1.subjects,each=2),2)), factor(rep(rep(1:batch2.subjects,each=2),2)))N = as.factor(dds$subject. N)样本批处理条件n 1 1 sample1 S1 2 sample2 1 B S1 1 3 sample3 1 S2 2 4 sample4 1 B S2 2 5 1 sample5 S3 3 1 6 sample6 1 B S3 3 7 sample7 S4 4 8 sample8 1 B S4 4 9 sample9 1 S5 5 10 sample10 1 B S5 5 11 sample11 2 S6 1 12 sample12 2 B S6 1 13 sample13 2 S7 2 14 sample14 2 B S7 2 #饲料新colData DESeqDataSet和编辑设计:dds = DESeqDataSetFromMatrix (countData =。mat, colData = colData(dds), design = ~ batch + batch*subject。N +条件) *converting counts to integer mode Error in checkFullRank(modelMatrix) : the model matrix is not full rank, so the model cannot be fit as specified. One or more variables or interaction terms in the design formula are linear combinations of the others and must be removed.* # This is because I have unbalanced data in respect to batch: uneven subjects in the two batches. # So I removed the levels without samples, like for example phase2:subject.n3: m = model.matrix(~batch + batch:subject.n + condition, colData(dds)) all.zero <- apply(m, 2, function(x) all(x==0)) length(all.zero[all.zero == TRUE]) idx <- which(all.zero) m <- m[,-idx] # Feed clean model matrix to DESeq: dds = DESeq(dds, full = m) *using supplied model matrix using pre-existing size factors estimating dispersions gene-wise dispersion estimates mean-dispersion relationship final dispersion estimates fitting model and testing 121 rows did not converge in beta, labelled in mcols(object)$betaConv. Use larger maxit argument with nbinomWaldTest* resultsNames(dds) [1] "Intercept" "batch2" "conditionB" [4] "batch1.subject.n2" "batch2.subject.n2" "batch1.subject.n3" [7] "batch1.subject.n4" "batch1.subject.n5"

如何解决收敛问题?我甚至重复了单独的步骤,并添加了useOptim选项:

dds <- estimateSizeFactors(dds) dds <- estimateDispersions(dds) dds <- nbinomWaldTest(dds, maxit=2000, useOptim = T)

另外,为了校正批次和受试者的差异,是res1还是res2?

res2 = results(dds, contrast= c("condition", "B", "A"))n2”、“batch2.subject。n2”、“batch1.subject。n3”、“batch1.subject。陶瓷”、“batch1.subject。N5 ", "batch2")))
添加回复
0
进入编辑模式

跳转到顶部,如果你不想要组特定的条件效果,那么只需使用~sample + condition。你不能(也不能)控制在比样本更高的分辨率。

0
进入编辑模式

如果我们所说的组特定指的是批特定(在本例中),那么我肯定不这么认为。我只需要改正这批货。

当你说“你不能(也不能)控制在比样本更高的分辨率”时,你是指在DESeq2中还是在一般情况下?如果我的模型是~sample + condition,那么我如何考虑sample1和sample2来自同一个主题?或者sample1和sample14是不同批次的?

添加回复
0
进入编辑模式

抱歉,上面有主题.使用~主语+条件.您不需要额外控制嵌套主题的任何内容。

0
进入编辑模式

嗯,我也有过这样的想法,但这不就是学科之间和学科内部的问题吗?所以对于中间部分,我不需要纠正批次吗?你说“嵌套在哪个主题中”是什么意思?现在它是嵌套的吗批处理:subject.n不在这个模型中?

还有,还有~主语+条件(这是我从上面开始的模型)有一些基因不收敛。

添加回复
1
进入编辑模式

主题是在批处理中——也许与统计学家讨论这是如何发生的。

关于收敛,我建议如下:

keep <- rowsum (counts(dds) >= 10) >= x dds <- dds[keep,] # then下面的DESeq()

对于x选择避免有很多0的基因,可能是7。

0
进入编辑模式

谢谢你迈克尔,现在一切都清楚了。

事实上,这种趋同是通过提高来解决的X =样本的2/3.非常感谢!

添加回复
0
进入编辑模式

如果我可以再问一个问题,为什么即使我达到了收敛,我也没有发现deg ?

dds = DESeqDataSetFromTximport(counts, sample.summary.)平衡,~受试者+条件)min.cutoff = round(nrow(sample.summary.balanced)/1.2) keep <- rowsum (counts(dds) >= min.cutoff) >= min.cutoff dds <- dds[keep,] dds <- DESeq(dds) *估计大小因子估计分散基因分散估计均值-分散关系最终分散估计拟合模型和测试* res =结果(dds,对比= c("条件","B", "A"), pAdjustMethod = "BH",alpha = 0.05)总结(res) *出10735,非零总读计数调整p值< 0.05 LFC > 0(上):1,0.0093% LFC < 0(下):0,0%异常值[1]:0,0%低计数[2]:0,0%(平均计数< 145)*

我得到deg的唯一方法是单独用p值进行过滤。甚至FC也不行。这里是log2FC, padj和p值的范围,以及具有p值和log2FC分布的火山。

summary(res$log2FoldChange)最小第一曲。中位数。平均第三曲。最大值。-0.654707 -0.110581 -0.004492 -0.007384 0.097655 0.668882 summary(res$padj)最小第1段,平均第3段,最大值0.02358 0.69443 0.77172 0.79575 0.89926 0.99999 summary(res$pvalue)最小第1段,平均第3段,最大值0.0000022 0.1736602 0.3860016 0.4302314 0.6745380 0.9999893

用p值绘制火山图

添加回复
0
进入编辑模式

数据集中没有大的变化。你不能拒绝这些基因的null。

您可能希望与统计学家讨论如何为未来的数据集提供动力。

0
进入编辑模式

我完全同意。但当我不做配对分析时,我使用简单的~批处理+条件模型,功率非常好。我用FDR和4FC进行过滤,得到了数百个deg。我想知道为什么配对的人这么穷。

添加回复
0
进入编辑模式

对不起,我在你最初的帖子中错过了这部分。

好吧,我猜你可能在100的意义的边缘,通过添加所有额外的协变量的主题术语,你失去了自由度。

我要指出的是,考虑到患者基线,这些LFC相当小。所以当数据告诉你变化很小的时候我不会强迫你。

0
进入编辑模式

我理解你的观点,同意你的观点。

但当我使用1/10的样本进行配对分析时,我得到1000个deg, p0.01和4FC阈值。不过fdr还是不够好。但我确实期望有更多的样本会增加功率,而不是相反。我觉得很奇怪。但也许你是对的,也许把所有这些主题术语加在一起会使影响最小化。

你觉得利马会更合适吗?

我当然不想把数据推得太紧,只是想确保我的方法是正确的。

添加回复
0
进入编辑模式

在软件问题方面,我没有更多的建议。

0
进入编辑模式

非常感谢您的评论,谢谢

添加回复

登录在回答之前。

流量:最近一小时内有184个用户访问

使用本网站即表示接受我们的用户协议和隐私政策

2.3.6版本