hi,
I am doing DEG analysis between two sample (Normal vs Treated) without replicates using edgeR. I know there is no significance of analysis without replicates, but i have no other choice.
I have gone through some literature and found some normalization methods, of which i decided to chose calcNormFactors method (which normalization method should i choose : TMM or RLE). I am not able to convert it into logfold change, what could be applied for this purpose: exact test?. in my current analysis i have applied exact test but this test:
Compute genewise exact tests for differences in the means between two groups of negative-binomially distributed counts.
The count matrix was generated by Corset, which gives the count matrix in Poisson distribution while i am applying exactTest which takes count matrix as negative binomial distribution. Should i carry on with this analysis only or use another test equivalent to exactTest for Poisson distributed count matrix? If there is any other test then what it is? THere is fisher.exact test equivalent to exact test but it takes 2X2 matrix into consideration.
library(edgeR)
y = read.table("counts.txt", header=T, row.names=1, com='')
sampleinfo <- read.delim("sample.txt")
group <- paste(sampleinfo$Status,sampleinfo$CellType,sep=".")
group
group <- factor(group)
table(group)
keep <- rowSums(y > 0.5)>=2
table(keep)
y <- DGEList(y, group=group, genes=y[,1])
y <- y[keep, ,keep.lib.sizes = FALSE]
y$samples
#no normalization
no_norm <- exactTest(y, dispersion=bcv^2)
table(p.adjust(no_norm$table$PValue, method="BH")<0.05)
#normalize
TMM <- calcNormFactors(y, method = "TMM")
bcv <- 0.2
TMM <- exactTest(TMM, dispersion=bcv^2)
table(p.adjust(TMM$table$PValue, method="BH")<0.05)
RLE <- calcNormFactors(y, method = "RLE")
bcv <- 0.2
RLE <- exactTest(RLE, dispersion=bcv^2)
table(p.adjust(RLE$table$PValue, method="BH")<0.05)
uq <- calcNormFactors(y, method = "upperquartile")
bcv <- 0.2
uq <- exactTest(uq, dispersion=bcv^2)
table(p.adjust(uq$table$PValue, method="BH")<0.05)
library(gplots)
get_de <- function(x, pvalue){
my_i <- p.adjust(x$PValue, method="BH") < pvalue
row.names(x)[my_i]
}
my_no_norm <- get_de(no_norm$table, 0.05)
my_tmm <- get_de(TMM$table, 0.05)
my_rle <- get_de(RLE$table, 0.05)
my_uq <- get_de(uq$table, 0.05)
gplots::venn(list(no_norm = my_no_norm, TMM = my_tmm, RLE = my_rle, UQ = my_uq))
I need help.
Thankyou for your suggestion and to clear my doubts about distribution... I'll go with the exact test after
CalcNormFactors
with TMM normalization.... Is it ok to setdispersion=0
inexactTest
?No, it is not ok to set
dispersion=0
. Settingdispersion=0
is a Poisson test, which I advised you not to do