Detect outliers in mixture of Gaussians I have a ton of univariate samples ($x_i \in \mathbb{R}^+$).  I'd like an automated method to check for outliers and identify the outliers, if any are present.  A reasonable model for the distribution of the non-outliers is a mixture of Gaussians.  The number of Gaussians in the mixture and their parameters are not known a priori.  Can you suggest a simple method for identifying outliers?  Do you have any recommendations?  It'd be nice if it were simple to code up in Python.
Something quick and dirty -- say, easy to understand, easy to implement, and pretty effective-- beats something complex but optimal.  For example, I'm a bit reluctant to wade into something fancy based upon expectation maximization.
Example parameters: I might have 10,000 samples or so.  The distribution of non-outliers might be a mixture of 2 Gaussians; or I might have a mixture of a few hundred Gaussians.
Update: People have asked how anything could possibly be an outlier, given these assumptions.  (Presumably, the unstated concern is that this problem may be unsolvable: if every data set is always explainable by some mixture model, then there's no basis to ever identify anything as an outlier.)  That's a fair question, so let me try to respond.  In my application domain, I can reasonably assume that there will be dozens of samples from each component Gaussian.  e.g., I might have 40,000 samples from a mixture of 100 Gaussians, where each Gaussian component has a probability no lower than 0.001 (so it is almost guaranteed that I have at least 10 samples from each Gaussian).  I realize I didn't state this assumption earlier, and I apologize for that.  However, with this additional assumption, I believe the problem is solvable.  There exist examples of data sets where one or more points can be considered outliers (they cannot reasonably be explained by any mixture model).  For example, consider a data set that has a single isolated point that is very far from all others: if it's far enough away, it can't be explained by the Gaussian mixture model and thus can be recognized as an outlier.  In conclusion, I believe that the problem is well-defined and is solvable (given the additional assumption stated here): there do exist example situations where some points can reasonably be identified as outliers.
Note that I'm not trying to propose a special or unusual definition of outlier.  I am happy to use the standard notion of outlier (e.g., a point that cannot reasonably be explained as having been generated by the hypothesized process, because it is too unlikely to have been generated by that process).
 A: I'm not sure I understand the issue here, but the MAD-Median rule:
$\frac{|X-M|}{MADN}>2.24$, where $M$ is the median and $MADN$ is the $\frac{\text{median absolute deviation from the median}}{0.6745}$
is pretty commonly used.  Wilcox's WRS package in R has an out() function that fits this and returns the cases to keep and cases to drop, and I'm sure it would be easy to code in other languages.  On the face of it this would be an answer to your question - one of many of course because there is a vast literature on outliers.
You may need a more restrictive definition of "outlier", of course.  If you are happy with any observations that are consistent with a mixed distribution of 100s of Gaussian variables it is hard to imagine anything being ruled an outlier.
A: If your range of possible distributions of non-outliers is so broad, I don't think you can have any outliers. But perhaps you can impose some restrictions on the mixture?
For example, if N = 10,000 and it's a mixture of $\mathcal{N}~(9900, 10, 10)$ and $\mathcal{N}~(100, 50, 100)$ then some very large values would be non-outliers. 
In addition, in general, automated searching for outliers can only be a first step. 
A: The most elegant solution I can think of is a mixture of Gaussians model, in which you have k Gaussians corresponding to your signal (with a prior encouraging their variances to be reasonably small), and 1 diffuse Gaussian capturing the outliers ("diffuse" means huge variance), where you specify the prior proportion of outliers (e.g. 1%) in a Dirichlet prior.  If you don't want to do EM, you may consider using k-means as a warm-start, and then optimize iteratively, where the slow step is the optimization of the discrete cluster assignments.  But if the (co)variances of the signal Gaussians are approximately equal, this means that most reassignments will be to/from neighboring clusters, or to/from the outlier cluster.
