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.

  • 1
    $\begingroup$ 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. $\endgroup$ – whuber Jun 8 '12 at 14:24
  • $\begingroup$ 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. $\endgroup$ – 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.


PCA is really designed for (approximately multinormal) data. When data are not multinormal, it could be helpful to try projection pursuit --- searching for "interesting" projections. In a sense PCA is a projection pursuit method, searching for linear combinations (projections) with maximal variance, as this is an proper thing to do for multinormal data. When using projection pursuit proper, one is searching for information which a PCA cannot find, such as non-normality.

One first does a "sphere transform", transforming the data linearly to have covariance matrix equal to the identity matrix. Then one can for instance try to find the "least normal" projection. ¿How define that? One idea is to observe that the normal distribution, among all distributions with zero mean and unit variance, maximizes the entropy, so one common idea is to minimize the entropy. If the projection minimizing entropy really looks normal (look at its histogram!), the data probably are multinormal. If not, that histogram could be interesting. Remove this projection from the data, repeat, ...


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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