I have already used the logit transform on my outcome variables (which are displayed in percentages). However, this obviously gives me -INF values and since my data includes a lot of zeros in some instances, this makes it hard to analyse.

I have now tried an empirical logit transform, adding the smallest non-zero promotion to the numerator and denominator of my variables to remove the -INF values (as suggested in http://www.esajournals.org/doi/abs/10.1890/10-0340.1).

However, now my data are very non-normal again. I have tried experimenting with error terms to add to the logit transform but since have had no luck.

Is there any way I can find a value to add to my transformation to ensure normality?

  • 3
    A worthy option for your consideration is a generalized linear model. Please search our site for threads on GLMs. If you still want to transform the response, then search for threads about transformations, logarithms, and regression: many of them explicitly discuss whether and how to add a "start value" to the data before re-expressing them. – whuber Jul 30 '14 at 19:13
  • If your outcome variables are 'displayed in percentages' this suggests that they aren't originally percentages. Presumably they are counts. @whuber is suggesting starting instead with a logistic (or multinomial logistic) regression model, for which even conditional normality is not a requirement. – conjugateprior Jul 30 '14 at 22:36
  • Thanks for these. However, although I do have the raw counts, the particular research I am carrying out means that I would expect that the raw counts would increase with my predictor variables. Therefore, percentages are giving me a more reliable measure in my analyses. – user3237820 Jul 31 '14 at 21:27
  • As per @whuber... Are you sure this isn't a binomial process? I would pick a trials count for each record and model it as success and failures. glm binomial supports this. If it isn't binomial in nature, perhaps try inverse hyperbolic sine transformations worthwhile.typepad.com/worthwhile_canadian_initi/2011/07/… – Chris Dec 11 '17 at 18:27
up vote 10 down vote accepted

I've had luck with setting epsilon to half of the smallest non-zero value and replacing all 0 values with epsilon and all 1 values with 1-epsilon. Then apply the logit transformation.

This method keeps the original form of the logit transformation, but allows 1 and 0 to be transformed to values that match the overall shape of the intended transformation (note the black dots in the figure at raw=0 and 1). In particular, it preserves the quality that 0.5 is transformed to 0, and the rest of the values are symmetric.

On the other hand, adding the smallest non-zero value as described in the paper changes the shape of the curve and destroys the symmetry.

Comparing two methods of ways to adjust the logit transformation to deal with zeros

  • 1
    Welcome to our site! This thoughtful, well-illustrated post is a useful contribution. – whuber Jul 30 '14 at 19:14
  • Thanks! I will give this a go, although I have been experimenting with zero/one inflated beta regression too. – user3237820 Jul 31 '14 at 21:28

One approach, which would solve the problem you are having, is to use a robust regression method on the raw, untransformed values. For example, in R, you could do the following:

example = data.frame(outcome = c(0,0,0.3,0.7,1), 
                     predictor = c('left','left','left','right','right'))
m = glm(outcome ~ predictor,example,family=quasibinomial())

Your Answer

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

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