Cross Validated is a question and answer site for people interested in statistics, machine learning, data analysis, data mining, and data visualization. It's 100% free, no registration required.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

Hello StackExchange users,

Background: I am a biostatistician presently wrestling with a dataset of cellular expression rates. The study exposed a host of cells, collected in groups from various donors, to certain peptides. Cells either express certain biomarkers in response, or they don't. The response rates are then recorded for each donor-group. Response rates (expressed as percentages) are the outcome of interest, and peptide exposure is the predictor.

Note that observations are clustered within donors.

Since I only have the summary data, I am treating the donor-wise response rates as continuous data (at least for now).

The complication arises from the fact that I have many zeroes in my data. Far too many to be ignored. I am considering a zero-inflated gamma model to deal with the fact that I have skewed continuous data coupled with an overabundance of zeroes. I have also considered the Tobit model, but this seems inferior since it assumes censoring at a lower bound, as opposed to genuine zeroes (econometricians might say the distinction is moot).

Question: Generally speaking, when is it appropriate to use a zero-inflated gamma model? That is, what are the assumptions? And how does one interpret its inferences? I would be grateful for links to papers that discuss this, if you have any.

I've found a link on SAS-L in which Dale McLerran provides NLMIXED code for a zero-inflated gamma model, so it appears to be possible. Nonetheless, I would hate to charge forth blindly.

Very much appreciated,

share|improve this question

First, you are not seeing genuine zeros in expression data. Your biologist is saying that, like all biologists do, but when a biologist says "it's zero" it actually means "it's below my detection threshold, so it doesn't exist." It's a language issue due to the lack of mathematical sophistication in the field. I speak from personal experience here.

The explanation of the zero inflated Gamma in the link you provide is excellent. The physical process leading to your data is, if I understand it, a donor is selected, then treated with a certain peptide, and the response is measured from that donor's cells. There are a couple layers here. One is the overall strength of the donor's response, which feeds into the expression level of each particular cell being measured. If you interpret your Bernoulli variable in the zero inflated Gamma as "donor's response is strong enough to measure", then it might be fine. Just note that in that case you're lumping the noise of the individual cell's expression with the variation between strongly responding donors. Since the noise in expression in a single cell is roughly gamma distributed, that may end up causing too much dispersion in your distribution -- something to check for.

If the additional variation from donors vs cells doesn't screw up your Gamma fit, and you're just trying to get expression vs applied peptide, then there's no reason why this shouldn't be alright.

If more detailed analysis is in order, then I would recommend constructing a custom hierarchical model to match the process leading to your measurements.

share|improve this answer

Hello StackExchange users,

I have found a solution that I find rather elegant. There is an excellent article in the literature entitled "Analysis of repeated measures data with clumping at zero" which demonstrates a zero-inflated lognormal model for correlated data. The authors provide a SAS macro which is based on PROC NLMIXED and is quite easy to implement. The good news is that this can simplify to cases without clustered observations by omission of the repeated statement in the macro. The bad news is that NLMIXED does not yet have the many correlation structures that we often need, such as autoregressive.

The macro is named MIXCORR, and has a very useful Wiki page that you can find here. The macro itself can be downloaded here.

I highly recommend all of these links. Hope you find them to be useful.

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

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