If I have highly skewed positive data I often take logs. But what should I do with highly skewed non-negative data that include zeros? I have seen two transformations used:


$\log(x+1)$ which has the neat feature that 0 maps to 0.
$\log(x+c)$ where c is either estimated or set to be some very small positive value.


Are there any other approaches? Are there any good reasons to prefer one approach over the others?

It seems to me that the most appropriate choice of transformation is contingent on the model and the context. 

The '0' point can arise from several different reasons each of which may have to be treated differently:


Truncation (as in Robin's example): Use appropriate models (e.g., mixtures, survival models etc)
Missing data: Impute data / Drop observations if appropriate.
Natural zero point (e.g., income levels; an unemployed person has zero income): Transform as needed
Sensitivity of measuring instrument: Perhaps, add a small amount to data?


I am not really offering an answer as I suspect there is no universal, 'correct' transformation when you have zeros.
