limma

9.5.2 交互作用
16.3.8 Differential expression

9.6.1 讨论的是时间序列

哪些gene随着处理发生了变化

9.6.2 时间序列:

样条差方

从这里面可以看到哪些有明显的交互作用

WT11.MT11 告诉你在第 11 天时,突变是否已经产生了影响。
Int (交互项) 则是 (P21mt - P11mt) - (P21wt - P11wt),它衡量的是“第 21 天的差异”与“第 11 天的差异”是否不相等。
正如你在之前的查询中所问,如果一个基因在 WT11.MT11 显著且在 Int 也显著,这意味着该基因在发育早期就受突变影响,且随着发育的进行,这种影响的程度或方向发生了显著改变。

  1. 针对多个对比(Contrasts)之间的校正
    当你像之前提到的代码那样定义了多个对比(如 5 个不同的比较逻辑)时,limma 通过 decideTests 函数提供了专门的处理策略:
    method=“separate”(默认): 对每个对比独立进行多重检验校正。这适用于你的不同对比是在回答互相独立的生物学问题时。
    method=“global”(高度推荐用于你的情况): 这种方法会将所有的对比和所有的基因合并成一个长向量进行统一校正。这样可以确保跨对比的显著性阈值是一致的,从而严格控制整个实验设计的总体错误率。
    method=“nestedF”: 这是一种更复杂的策略,它会先通过 F 检验判断基因在所有对比中是否显著,然后再下放到具体的对比中去,旨在提高检测同时在多个对比中显著的基因的效能。

在 limma 中,处理多因素多水平(例如 3 个因素或每个因素有多个水平)的实验设计,其核心逻辑与 析因设计是一致的。limma 建议将复杂的实验设计拆解为更直观的对比。

以下是处理多因素多水平交互作用的具体策略:

1. 将所有组合视为单因素(最通用且推荐的方法)

这是应对任意复杂度(多因素、多水平)最稳妥的方法。无论你有多少个因素(如:基因型、药物、时间点)和多少个水平,都可以将它们合并为一个单一的“组”因子。

  • 构建设计矩阵:
    将所有因素的所有水平组合在一起。例如,实验有“基因型”(WT, MT)和“时间点”(0h, 6h, 24h),则合并为 6 个组合水平。
    # 合并为:WT.0, WT.6, WT.24, MT.0, MT.6, MT.24
    Group <- factor(paste(targets$Genotype, targets$Time, sep="."))
    design <- model.matrix(~0+Group)
    colnames(design) <- levels(Group)
  • 定义交互作用(差异的差异):
    在多水平下,交互作用不再是一个单一的项,而是多个特定对比的集合。你需要明确你想问的具体生物学问题。
    • 问题 A: 基因型是否影响了从 0h 到 6h 的反应?
      Int_6h = (MT.6 - MT.0) - (WT.6 - WT.0)
    • 问题 B: 基因型是否影响了从 6h 到 24h 的反应?
      Int_24h = (MT.24 - MT.6) - (WT.24 - WT.6)
  • 执行全局检验:
    如果你想找出在任何时间点上反应受基因型影响的基因,可以将上述所有交互项放入 topTable 中进行 检验。

2. 使用回归样条处理连续型多水平因素

如果某个因素(如时间)有非常多的水平(如 10 个时间点),将其视为离散组会导致自由度浪费。此时可以使用**回归样条(Regression Splines)**来建模。

  • 构建设计矩阵:
    使用 splines 包中的 ns 函数对时间进行平滑建模,并与分组因素(如处理组 vs 对照组)做交互。
    library(splines)
    X <- ns(targets$Time, df=5) # 5个自由度的自然样条
    design <- model.matrix(~Group * X) # Group与时间趋势的交互
  • 交互项提取:
    这种模型生成的最后几列(对应 Group:X)直接代表了不同组别之间时间趋势曲线的差异。通过对这些列进行联合检验,可以筛选出随时间变化轨迹在组间不一致的基因。

3. 处理多层级变异(混合模型)

如果你的“多水平”是指实验中存在层级嵌套(例如:3 个病人,每个病人取了 2 种组织,每种组织做了 2 种处理),这涉及到了随机效应。

  • 策略:
    1. 将固定效应(组织、处理)合并为单一因子构建设计矩阵。
    2. 使用 duplicateCorrelation 函数来处理同一生物个体(病人)带来的层级相关性。
    3. 在 lmFit 中输入计算出的相关系数。
  • 结论: 这种方法允许你在同一模型中比较组织间的差异(受试者内变异)和病人间的差异(受试者间变异)。

总结

对于多因素多水平数据:

  • 组合法(Group-Mean): 最简单且定义最明确,适用于大多数生物学问题。
  • 统计量: 利用 limma 的收敛 检验来同时测试多个交互对比,确保整体错误率受控。
  • 校正策略: 当涉及多个对比时,建议在 decideTests 中使用 method="global" 以保持跨水平比较的统计一致性。

在因子设计中,明确研究关注的比较对象尤为重要。我们假设实验者关注以下三方面:

  1. 野生型细胞中哪些基因对刺激产生响应;
  2. 突变型细胞中哪些基因对刺激产生响应;
  3. 突变型细胞与野生型细胞中哪些基因的响应存在差异。

关注哪些gene的响应不同