In general, I recommend against interpreting the fraction of variance explained by residuals. This fraction is driven by:
If you have additional variables that explain variation in measured gene expression, you should include them in order to avoid confounding with your variable of interest. But a particular residual fraction is not ‘good’ or ‘bad’ and is not a good metric of determining whether more variables should be included.
See GitHub page for up-to-date responses to users’ questions.
## R version 4.4.0 beta (2024-04-15 r86425)
## Platform: x86_64-pc-linux-gnu
## Running under: Ubuntu 22.04.4 LTS
## 
## Matrix products: default
## BLAS:   /home/biocbuild/bbs-3.19-bioc/R/lib/libRblas.so 
## LAPACK: /usr/lib/x86_64-linux-gnu/lapack/liblapack.so.3.10.0
## 
## locale:
##  [1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C               LC_TIME=en_US.UTF-8       
##  [4] LC_COLLATE=en_US.UTF-8     LC_MONETARY=en_US.UTF-8    LC_MESSAGES=en_US.UTF-8   
##  [7] LC_PAPER=en_US.UTF-8       LC_NAME=C                  LC_ADDRESS=C              
## [10] LC_TELEPHONE=C             LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C       
## 
## time zone: America/New_York
## tzcode source: system (glibc)
## 
## attached base packages:
## [1] stats     graphics  grDevices utils     datasets  methods   base     
## 
## other attached packages:
## [1] edgeR_4.2.0              pander_0.6.5             variancePartition_1.34.0
## [4] BiocParallel_1.38.0      limma_3.60.0             ggplot2_3.5.1           
## [7] knitr_1.46              
## 
## loaded via a namespace (and not attached):
##  [1] tidyselect_1.2.1    farver_2.1.1        dplyr_1.1.4         bitops_1.0-7       
##  [5] fastmap_1.1.1       digest_0.6.35       lifecycle_1.0.4     statmod_1.5.0      
##  [9] magrittr_2.0.3      compiler_4.4.0      rlang_1.1.3         sass_0.4.9         
## [13] tools_4.4.0         utf8_1.2.4          yaml_2.3.8          labeling_0.4.3     
## [17] plyr_1.8.9          KernSmooth_2.23-22  withr_3.0.0         purrr_1.0.2        
## [21] numDeriv_2016.8-1.1 BiocGenerics_0.50.0 grid_4.4.0          aod_1.3.3          
## [25] fansi_1.0.6         caTools_1.18.2      colorspace_2.1-0    scales_1.3.0       
## [29] gtools_3.9.5        iterators_1.0.14    MASS_7.3-60.2       cli_3.6.2          
## [33] mvtnorm_1.2-4       rmarkdown_2.26      generics_0.1.3      reshape2_1.4.4     
## [37] minqa_1.2.6         cachem_1.0.8        stringr_1.5.1       splines_4.4.0      
## [41] parallel_4.4.0      matrixStats_1.3.0   vctrs_0.6.5         boot_1.3-30        
## [45] Matrix_1.7-0        jsonlite_1.8.8      pbkrtest_0.5.2      locfit_1.5-9.9     
## [49] jquerylib_0.1.4     tidyr_1.3.1         snow_0.4-4          glue_1.7.0         
## [53] nloptr_2.0.3        codetools_0.2-20    stringi_1.8.3       gtable_0.3.5       
## [57] EnvStats_2.8.1      lme4_1.1-35.3       lmerTest_3.1-3      munsell_0.5.1      
## [61] tibble_3.2.1        remaCor_0.0.18      pillar_1.9.0        htmltools_0.5.8.1  
## [65] gplots_3.1.3.1      R6_2.5.1            Rdpack_2.6          evaluate_0.23      
## [69] lattice_0.22-6      Biobase_2.64.0      highr_0.10          rbibutils_2.2.16   
## [73] backports_1.4.1     RhpcBLASctl_0.23-42 broom_1.0.5         fANCOVA_0.6-1      
## [77] corpcor_1.6.10      bslib_0.7.0         Rcpp_1.0.12         nlme_3.1-164       
## [81] xfun_0.43           pkgconfig_2.0.3