# Discrimination between multivariate populations when variables are non-normal?

I'm analyzing chemical profiles of amphetamine samples, and each sample has 26 numerical variables describing the relative quantity of some chemical constituent. Only a few of the 26 variables have pretty Gaussian distributions, the rest are amorphous (e.g. one very large "0" bin and a small Gaussian-like hill to the right).

I'd like to test whether populations differ by geographical origin (or some other ordinal variable), but I'm not sure how to test against this null hypothesis because the underlying assumption of multivariate normality is violated. Can I perform a Hotelling's T-square test via permutation, or am I looking for something like the Kullback-Leibler divergence?

My training is in biology and most certainly did not prepare me for this, so I apologize in advance for having missed obvious things. Thanks a lot.

-
Some points: (1) Those zeros are probably nondetects; there's always some quantity of everything in any sample. Knowing the limits of detection (and how they were determined) can be crucial. This is a left censoring problem. (2) Chemical concentrations frequently are best analyzed in terms of their logarithms (which have important interpretations in chemical kinetics). (3) Many people have successfully used PCA (on the logs) for addressing such problems. –  whuber Jun 8 '12 at 14:24
Wow, thanks for the insight. The "0" bins are indeed non-detects, and the 0 value has been replaced by an a priori limit of detection value that I got from the chemists. I just wrote 0 to spare people the explanation. The log thing is news to me and I'll give that a shot. I've used a 1/4 root transform (x^(1/4)) until now on recommendation from my supervisor, but PCA has not been fruitful. –  user1134516 Jun 8 '12 at 14:34

You can do what is called kernel discriminant analysis if your data is smooth and the class distributions can be represented as densities. This amounts to applying kernel density estimation to the class conditional densities based on the training data. Then you apply the Bayes rule using these density estimates to get the decision boundary. In the equal cost for error case for a two class problem it is: Chose class 1 if f* $^1$(x) /f* $^2$(x) >1 and chose class 2 otherwise.