I have been working on RNA-Seq data from two different cohorts, and they show very strong batch effect (~35% variance explained by 1st component in PCA). Since I am trying to do a class discovery from a data set with the subtype of only some samples are known, the only methods I have been using are ComBat and pSVA from SVA package. I would like to compare them with more methods to make the clustering result more trust-worthy.

I found that some papers used sva package, but not citing the paper on pSVA, meaning perhaps there are some other ways to use sva for this type of data that I am not aware of. Is there a method to construct a null model and a full model for sva only by knowing the batch the samples are from?

Any other suggestion of batch effect correction tools for a data set with no known phenotype/subtype are also welcome.


1 Answer 1


You can just remove the first component from the dataset by setting the first eigenvalue to 0 in the diagonal matrix and then multiplying the SVD matrices.

I am not sure which R code you are using to estimate the components (I have a comparison of PCA code in R on https://github.com/aedin/ODSC_2018/tree/master/PCA_vignette)

In ade4 R package, there is a function reconst() which reconstructs data from a selection of components: https://rdrr.io/rforge/ade4/man/reconst.html

Happy to provide code to do this in other PCA versions if needed Aedin Culhane

  • $\begingroup$ Thank you for your suggestion. I am more of a molecular biologist so I don't quite know how to do it. I understand vaguely the concept but not the actually steps. Or is it what ade4 does to remove the first component? $\endgroup$
    – Kent
    Commented Jan 22, 2019 at 17:55

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.