Differential Expression Analysis with limma in R
John Blischak
Instructor
dim(eset)
Features Samples
11871 12
table(pData(eset)[, c("type", "temp")])
temp
type low normal
col 3 3
vte2 3 3
$$ Y = \beta_1 X_1 + \beta_2 X_2 + \beta_3 X_3 + \beta_4 X_4 + \epsilon $$
col
plants at low
temperaturecol
plants at normal
temperaturevte2
plants at low
temperaturevte2
plants at normal
temperaturegroup <- with(pData(eset),
paste(type, temp, sep = "."))
group <- factor(group)
design <- model.matrix(~0 + group)
colnames(design) <- levels(group)
head(design, 3)
col.low col.normal vte2.low vte2.normal
1 0 1 0 0
2 0 1 0 0
3 0 1 0 0
colSums(design)
col.low col.normal vte2.low vte2.normal
3 3 3 3
$\beta_1$ | $\beta_2$ | $\beta_3$ | $\beta_4$ | |
---|---|---|---|---|
type |
col | col | vte2 | vte2 |
temp |
low | normal | low | normal |
type
in normal temp
: $\beta_4 - \beta_2 = 0$type
in low temp
: $\beta_3 - \beta_1 = 0$temp
in vte2 type
: $\beta_3 - \beta_4 = 0$temp
in col type
: $\beta_1 - \beta_2 = 0$temp
between col and vte2 type
: $(\beta_3 - \beta_4) - (\beta_1 - \beta_2) = 0$library(limma)
cm <- makeContrasts(type_normal = vte2.normal - col.normal,
type_low = vte2.low - col.low,
temp_vte2 = vte2.low - vte2.normal,
temp_col = col.low - col.normal,
interaction = (vte2.low - vte2.normal) -(col.low - col.normal),
levels = design)
cm
Contrasts
Levels type_normal type_low temp_vte2 temp_col interaction
col.low 0 -1 0 1 -1
col.normal -1 0 0 -1 1
vte2.low 0 1 1 0 1
vte2.normal 1 0 -1 0 -1
library(limma)
# Fit coefficients
fit <- lmFit(eset, design)
# Fit contrasts
fit2 <- contrasts.fit(fit, contrasts = cm)
# Calculate t-statistics
fit2 <- eBayes(fit2)
# Summarize results
results <- decideTests(fit2)
summary(results)
type_normal type_low temp_vte2 temp_col interaction
-1 0 466 1635 1885 128
0 11871 10915 7635 6989 11640
1 0 490 2601 2997 103
dim(eset)
Features Samples
16172 12
table(pData(eset)[, c("type", "water")])
water
type drought normal
dn34 3 3
nm6 3 3
Differential Expression Analysis with limma in R