[BioC] using offsets from EDASeq and cqn

Michael Love love at molgen.mpg.de
Thu Feb 14 17:21:20 CET 2013


hi,

I could have things totally mixed up here.  I was thinking that GLM 
offsets would be positively correlated with log counts.

for instance in edgeR, mglmLS.R:

mu <- exp(beta %*% t(X) + offset)

but it seems offsets from packages EDASeq and cqn are negative 
correlated with log counts.

for example some poisson data:

 > n <- 1000
 > covariate <- rnorm(n,6,.5)
 > counts <- replicate(2,rpois(n,exp(covariate)))

 > library(EDASeq)
 > edaseq.offset <- 
withinLaneNormalization(x=counts,y=covariate,which="full",offset=TRUE)
 > cor(edaseq.offset[,1],log(counts[,1]+1))
[1] -0.9765923

 > library(cqn)
 > cqn.offset <- 
cqn(counts,x=covariate,lengths=rep(1,n),lengthMethod="fixed",sizeFactors=c(1,1))$offset
 > cor(cqn.offset[,1],log(counts[,1]+1))
[1] -0.9950717


So EDASeq and cqn are giving similar results here:

 > cor(edaseq.offset[,1],cqn.offset[,1])
[1] 0.9847672

If I give these to the standard glm function as offsets I would expect 
the coefficient for 'covariate' to go from 1 to 0.  But it gives me 
something like a coefficient of 2, and to get zero I have to give it -1 
* offset:

without offset:

 > coef(glm(counts[,1] ~ covariate, family="poisson"))
(Intercept)   covariate
-0.02735053  1.00467285

with offset:

 > coef(glm(counts[,1] ~ covariate, offset=edaseq.offset[,1], 
family="poisson"))
(Intercept)   covariate
   -5.860094    1.954997
 > coef(glm(counts[,1] ~ covariate, offset=cqn.offset[,1], 
family="poisson"))
(Intercept)   covariate
   -8.752786    2.457637

with -1 * offset:

 > coef(glm(counts[,1] ~ covariate, offset=-edaseq.offset[,1], 
family="poisson"))
(Intercept)   covariate
   5.8253511   0.0498681
 > coef(glm(counts[,1] ~ covariate, offset=-cqn.offset[,1], 
family="poisson"))
(Intercept)   covariate
   8.6975896  -0.4482184


thanks for any guidance,

Mike



More information about the Bioconductor mailing list