灵活的线性模型

在 R 中使用 limma 进行差异表达分析

John Blischak

Instructor

复杂研究设计的模型

$$ Y = \beta_0 + \beta_1 X_1 + \epsilon $$

  • $\beta_0$:ER 阴性组的均值
  • $\beta_1$:ER 阳性与阴性的均值差
  • 检验:$\beta_1 = 0$

$$ Y = \beta_0 + \beta_1 X_1 + \beta_2 X_2 + \epsilon $$

  • $\beta_0$:第 1 组的均值
  • $\beta_1$:第 2 组与第 1 组的均值差
  • $\beta_2$:第 3 组与第 1 组的均值差
  • 检验:$\beta_1 = 0$,$\beta_2 = 0$,???
在 R 中使用 limma 进行差异表达分析

组均值参数化

$$ Y = \beta_1 X_1 + \beta_2 X_2 + \epsilon $$

  • $\beta_1$:ER 阴性组的均值
  • $\beta_2$:ER 阳性组的均值
  • 检验:$\beta_2 - \beta_1 = 0$

$$ Y = \beta_1 X_1 + \beta_2 X_2 + \beta_3 X_3 + \epsilon $$

  • $\beta_1$:第 1 组的均值
  • $\beta_2$:第 2 组的均值
  • $\beta_3$:第 3 组的均值
  • 检验:
    • $\beta_2 - \beta_1 = 0$
    • $\beta_3 - \beta_1 = 0$
    • $\beta_3 - $\beta_2 = 0$
在 R 中使用 limma 进行差异表达分析

组均值的设计矩阵

design <- model.matrix(~0 + er, data = pData(eset))

head(design)
      ernegative erpositive
VDX_3          1          0
VDX_5          0          1
VDX_6          1          0
VDX_7          1          0
VDX_8          1          0
VDX_9          0          1
colSums(design)
ernegative erpositive 
       135        209
在 R 中使用 limma 进行差异表达分析

对比矩阵

library(limma)
cm <- makeContrasts(status = erpositive - ernegative,
                    levels = design)
cm
            Contrasts
Levels       status
  ernegative     -1
  erpositive      1
在 R 中使用 limma 进行差异表达分析

检验组均值参数化

fit <- lmFit(eset, design)
head(fit$coefficients, 3)
          ernegative erpositive
1007_s_at  11.725148  11.823936
1053_at     8.126934   7.580204
117_at      7.972049   7.798623
fit2 <- contrasts.fit(fit, contrasts = cm)
head(fit2$coefficients, 3)
           Contrasts
                 status
  1007_s_at  0.09878782
  1053_at   -0.54673000
  117_at    -0.17342654
在 R 中使用 limma 进行差异表达分析

参数化不改变结果

# 计算 t 统计量
fit2 <- eBayes(fit2)
# 计数差异表达基因数
results <- decideTests(fit2)
summary(results)
   status
-1   6276
0   11003
1    5004
在 R 中使用 limma 进行差异表达分析

Vamos praticar!

在 R 中使用 limma 进行差异表达分析

Preparing Video For Download...