[BioC] Testing main effects and interactions in edgeR without contrasts
Gordon K Smyth
smyth at wehi.EDU.AU
Sat Dec 14 08:34:09 CET 2013
Dear David,
Here's a toy example showing how to use edgeR to test for interactions and
main effects. I'll generate Poisson counts so we can compare with glm()
in the stats package. Generate counts for two genes and two replicates
per treatment combination:
y <- matrix(rpois(24,lambda=20),2,12)
A <- gl(2,3,12)
B <- gl(3,1,12)
Assume library sizes are all equal to 10,000.
lib.size <- rep(10000,12)
offset <- log(lib.size)
The standard factorial analysis for the first gene would be as follows:
out <- glm(y[1,] ~ A*B, family="poisson", offset=offset)
anova(out, test="Chi")
When I ran the above code, it gave me the following Analysis of Deviance
Table:
Df Deviance Resid. Df Resid. Dev Pr(>Chi)
NULL 11 25.538
A 1 0.7016 10 24.837 0.4023
B 2 1.4055 8 23.431 0.4952
A:B 2 8.6404 6 14.790 0.0133 *
For the second gene, I got:
Df Deviance Resid. Df Resid. Dev Pr(>Chi)
NULL 11 9.2948
A 1 2.1341 10 7.1607 0.1441
B 2 1.4481 8 5.7127 0.4848
A:B 2 1.4377 6 4.2750 0.4873
Now test for interactions using edgeR:
design <- model.matrix(~A*B)
fit <- glmFit(y,design,offset=offset,dispersion=0)
lrt <- glmLRT(fit,coef=5:6)
topTags(lrt)
This gives:
Coefficient: A2:B2 A2:B3
logFC.A2.B2 logFC.A2.B3 logCPM LR PValue FDR
1 -0.78611 0.59857 11.108 8.6404 0.013297 0.026594
2 0.36661 -0.22905 10.910 1.4377 0.487313 0.487313
Notice that edgeR gives the identical chisquare statistics (8.6404 and
1.4377) and the identical p-values (0.0133 and 0.4873) as does anova() for
the interaction A:B.
To test for main effects, you would fit the additive model:
design <- model.matrix(~A+B)
fit <- glmFit(y,design,offset=offset,dispersion=0)
Then
topTags(glmLRT(fit,coef=3:4))
Coefficient: B2 B3
logFC.B2 logFC.B3 logCPM LR PValue FDR
1 -0.20769 -0.245411 11.108 1.4055 0.49521 0.49521
2 -0.23739 0.039259 10.910 1.4481 0.48479 0.49521
gives the exactly the same statistics for B as in the ANODEV tables.
Best wishes
Gordon
> Date: Fri, 13 Dec 2013 02:25:36 -0800 (PST)
> From: "David Shuker [guest]" <guest at bioconductor.org>
> To: bioconductor at r-project.org, david.shuker at st-andrews.ac.uk
> Subject: [BioC] Testing main effects and interactions in edgeR without
> contrasts
>
> Dear friends,
>
> We are very interested in testing main effects and interactions for a
> 2x3 factorial RNA-seq project we have been running (we have reasonable
> replication: 7 biological replicates per treatment combination, i.e. 42
> libraries in total).
>
>> From our reading of the edgeR Users guide and various posts on-line, it
>> looks as though the package is set-up to test effects via contrasts.
>> Although a contrasts-approach allows the testing of differences between
>> specific treatment combinations, we would like to test interactions and
>> main effects in a more traditional glm/anova format. (We note that
>> testing whether the two contrasts associated with a three-level main
>> effect - a, b, c - are significant is not the same question as testing
>> whether the main effect itself is significant, or of course vice
>> versa.)
>
> We would like outputs and tests along the lines of glm() or anova(), not
> "anova-like" tests that use the results of one or more contrasts to ask
> similar, but not exactly the same, questions of the data.
>
> We apologise in advance if we have either missed something obvious in
> the user guide or relevant discussion somewhere online. If edgeR does
> not have this functionality, we will probably use edgeR in conjunction
> with other packages.
>
> As with all the community, we remain in awe of the work the edgeR
> developers have done, and thank them in advance.
>
> Best wishes,
>
> Dave Shuker
>
> -- output of sessionInfo():
>
> NA
>
> --
> Sent via the guest posting facility at bioconductor.org.
______________________________________________________________________
The information in this email is confidential and intend...{{dropped:4}}
More information about the Bioconductor
mailing list