[R] detect if data is normal or skewed (without a boxplot)

Ben Bolker bolker at ufl.edu
Mon Aug 11 18:42:09 CEST 2008

Felipe Carrillo <mazatlanmexico <at> yahoo.com> writes:

> Hello all:
> Is there a way to detect in R if a dataset is normally distributed or skewed
without graphically seeing it?
> The reason I want to be able to do this is because I have developed and
application with Visual Basic where
> Word,Access and Excel "talk" to each other and I want to integrate R to this
application to estimate
> confidence intervals on fish sizes (mm). I basically want to automate the
process from Excel by detecting
> if my data has a normal distribution then use t.test, but if my data is skewed
then use wilcox.test.
> Something like the pseudo code below:
> fishlength <- c(35,32,37,39,42,45,37,36,35,34,40,42,41,50)
>    if fishlength= "normally distributed" then
>  t.test(fishlength)
> else
> wilcox.text(fishlength)
> I hope this isn't very confussing
> Felipe D. Carrillo  
> Supervisory Fishery Biologist  
> Department of the Interior  
> US Fish & Wildlife Service  
> California, USA

  There's a whole package (nortest) devoted to tests of normality,
BUT: I would suggest that your procedure is not a good idea.
It's often hard to detect non-normality, and "fail to reject"
shouldn't mean "accept".  If you're concerned about non-normality,
you should probably just use the Wilcoxon test all the time
(it has about 95% of the power of the t-test if the data are
normal: http://en.wikipedia.org/wiki/Mann-Whitney_U ), or 
use robust statistics (e.g. rlm in the MASS package).

  Ben Bolker

More information about the R-help mailing list