This is a test version of Biostars. For the public version, visit https://www.biostars.org.
Partial NA coefficients warning message using svaseq and deseq

Hi,

I'm trying to remove the batch effect from my dataset. I've used the following code:

create deseq object. In the design matrix, I have the patient variable with 'cancer' or 'healthy' samples. And the sex variable with male/M or female/F

dds<-DESeqDataSetFromMatrix(dataset,colData =metadata, design = ~Patientgroup+sex)
dds <- estimateSizeFactors(dds)
dds<-DESeq(dds)

create surrogate variable

dat  <- counts(dds, normalized = TRUE)
idx  <- rowMeans(dat) > 1
dat  <- dat[idx, ]
mod  <- model.matrix(~ Patient.group+sex, colData(dds))
mod0 <- model.matrix(~1, colData(dds))
svseq <- svaseq(dat, mod, mod0, n.sv = 1)
ddssva$SV1 <- svseq$sv[,1]
ddssva$SV2 <- svseq$sv[,2]
design(ddssva) <- ~ SV1 + Patient.group + sex

remove surrogate batch effect

rld <- vst(ddssva, blind=FALSE)
mat <- assay(rld)
mm <- model.matrix(~Patient.group + sex, colData(rld))
mat <- limma::removeBatchEffect(mat, batch=vsd$SV1, design=mm)

However, the 'mat line' at the end gives me this warning: Coefficients not estimable: batch173. Warning message: Partial NA coefficients for 3741 probe(s)

I believe this is because the 'mm' object looks like this, with patient group column only containing 1's. This is part of the 'mm' dataset:

                        (Intercept) Patient.groupcancer sexM
sample.001                        1                             1    0          
sample.002                        1                             1    1          
sample.003                        1                             1    1          
sample.004                        1                             1    0          
sample.005                        1                             1    0          
sample.007                        1                             1    1          
sample.008                        1                             1    0          

However, I don't understand why the patient group suddenly only has 1's. Can anyone explain?

deseq sva

I'm still stuck on this problem, can someone help out? I have heard that it can be because my dataset contains NA values but this is not the case, I have checked this. Also, it can be because some variables in the design formula such as sex are not important and have to be removed, however, I am still getting this error message after removal of the sex variable.

1 answer

I think the problem is that in removeBatchEffect the batch argument is intended for vectors or factors, so categorical batches but the estimated SVs are numeric and continuous. So you must feed them into limma with covariates, which would be:

mat <- limma::removeBatchEffect(mat, design=mm, covariates=svseq$sv)

You're absolutely correct, thanks!

Log in to answer this question.