Yes, it's the Illumina HT12 array.
I was given this dataset after QC, so I don't have the code for that either, but it was Quantile Normalized and ComBat adjusted.
I didn't log2 transform, I thought this done automatically in limma?
Hi,
I'm trying to use limma for a differential expression analysis for a dichotomous trait. I'm unable to post the data here, but it's just a data frame for an expression microarray and a 0/1 designator for my trait. Every trait that I have run has had almost every probe reach significance after multiple test correction (which is not plausible). My code is posted below:
design<-pheno$trait
fit <- lmFit(edata1, design)
fit <- eBayes(fit)
a<-topTable(fit, n=Inf, adjust="fdr")
Can anyone point out where I'm making a mistake?
This is not easy to diagnose without more information from you, but things that would help include:
You don't have to provide the data, but you can show us the code you used to do the steps above.
The logFC's you are getting are insane, though, so something is clearly wrong. Is your data (at least) log2 transformed?
Yes, it's the Illumina HT12 array.
I was given this dataset after QC, so I don't have the code for that either, but it was Quantile Normalized and ComBat adjusted.
I didn't log2 transform, I thought this done automatically in limma?
Take a look at the help page for ?lmFit, where the documentation for the first parameter (your edata1 object) reads:
A matrix-like data object containing log-ratios or log-expression values for a series of arrays, with rows corresponding to genes and columns to samples. Any type of data object that can be processed by
getEAWPis acceptable.
(emphasis mine)
I don't know what type of data object your edata1 is, but ensure its data is log2 transformed before sending into lmFit. If it's just a matrix of numbers, then you can just log2(edata1) it.
It's unfortunate you don't have access to the raw data, but it would be good to find out how it was normalized from the person who gave it to you, as well as running basic QC to see how your data looks before (or after) you do your differential expression stats.
Thanks for all your help. I did the log transformation, and it was still significant so I finally realized I was calling coef for the intercept instead of the trait, and now things look reasonable.
I'm glad that you found your mistake, however I just want to mention that the code you provided in your original post could never have resulted in calling the "coef for the intercept". You said your call to topTable was like so:
a <- topTable(fit, n=Inf, adjust="fdr")
and if you don't explicitly pass in a value for the coef parameter, you will by default get the data for the last coef in your design (which isn't the intercept).
This is all to point out the importance of providing a minimally reproducible sample we can work from. As I originally stated, you could have done that without providing the data and we all would have gotten to the bottom of this much sooner.
Log in to answer this question.
the design should be a matrix while looks like you are using a vector... maybe you want to try;
with the little code you gave I'm not sure but that's a start.
btw, if you are adding info, pls edit the original post, do not write a new one below or in a comment unless you have a direct reply to this comment
Thanks for the suggestion. I tried that and it ended up making everything even more significant:
what platform it is ? Illumina HT12 v4 bead arrays?