continuous response variable with lots of zero values

I'm trying to determine the effects of four treatments on flowers on the volume of nectar available to pollinators. Problem is, I have about 50% zero volumes across treatment categories. What is the best approach to comparing mean volumes between treatments?

• If there are "lots of zeros" ... how is it continuous? And if it's continuous, why is "Poisson" one of your tags? – Glen_b Oct 7 '13 at 23:18
• @Glen_b There could be lots of zeroes and continuous data. E.g. if you asked "total number of miles traveled by air in last 12 months" of a random sample of people (technically, I guess 'miles' is a count, but it would certainly be treated as continuous). I don't know why 'Poisson' is a tag here though – Peter Flom Oct 7 '13 at 23:51
• @PeterFlom That would be an example of a mixture distribution, not an actually continuous distribution. The portion that is above zero is continuous, certainly, but the distribution overall is not. – Glen_b Oct 8 '13 at 0:00
• @Glen_b OK, technically you are right, but I bet this is the sort of thing that busybee means. He said "continuous response variable", which I think this is, even if it's from a mixture distribution, but I also think this gets a bit pedantic about the semantics. – Peter Flom Oct 8 '13 at 0:03
• @PeterFlom It often makes a difference; for example, if one proposes to use a rank-based technique (it is stated to be continuous, so it must be okay, right?) ... but in fact that spike at zero is a problem. Better to be crystal clear about the properties of the random variables are that are at hand than let sloppiness lead us into otherwise easily-avoided errors. For example, if someone really is analyzing flight miles and for those that travel at all, a gamma distribution is a reasonable model, a zero-inflated distribution may work quite well for the overall data, ... (ctd) – Glen_b Oct 8 '13 at 0:08

There is finite mixture model regression. In SAS you can do this with PROC FMM, see this article; in particular, example 1 deals with excess zeroes in a Poisson model (ZIP) but because of the structure of FMM you can substitute normal for poisson in the code, e.g. something like :
proc fmm data= dataset;

In R there is the flexmix package, which seems to provide similar with the function FLXMRziglm.