Skip to content

Why do not return shrunken dispersion as the ultimate overdispersion? #76

Description

@Truongphi20

Hi,

I have a few questions related to the overdispersion returned. Hope you have time to give it a look. Thank you so much for a robust package for normalizing scRNA-seq data.

Background

I'm working on the glmGamPoi package to fit my data to Negative Binomial distribution. The command I used:

fit <- glmGamPoi::glm_gp(data = umi,
                           design = '~1',
                           col_data = data,
                           offset = log_umi,
                           size_factors = FALSE)

According to what I read on the paper and codebase, there are several kinds of overdispersion ($\theta$) along the processing of the method. Specifically, the shrunken quasi-likelihood overdispersion ($\theta_{SQL}$) is mentioned as the cleanest one with noises removed. Although it is quite computationally expensive, ultimately the primary overdispersion returned is the rough overdispersion (disp_est) (line 171) , which comes from estimate_dispersions_roughly().

glmGamPoi/R/glm_gp_impl.R

Lines 169 to 176 in 95cffb7

# Return everything
list(Beta = Beta,
overdispersions = disp_est,
overdispersion_shrinkage_list = dispersion_shrinkage,
deviances = beta_res$deviances,
Mu = Mu, size_factors = size_factors,
Offset = offset_matrix,
ridge_penalty = ridge_penalty)

Question

  1. Why not return $\theta_{SQL}$ as final overdispersions?
  2. If returning the rough overdispersion on purpose, why have to spend resource to calculate $\theta_{SQL}$?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions