# Finding out if your data belongs to normal distribution

Is there a way to find out if your data belongs to one or more (mixture) normal distributions?

I probably could calculate what is the standard deviation of my data, but I'm not sure what else to do to be sure.

Is there a way to find out if your data belongs to one or more (mixture) normal distributions?

If it's real data and the mixture has a small/fixed number of components, you can just about answer in the negative almost every time without even looking. What data are exactly normal? Or even a mixture of a few normals?

Aside some very exceptional situations, real data would be highly unlikely to exactly follow simple models, though simple models may in many cases provide excellent approximations.

George Box once said: "Remember that all models are wrong; the practical question is how wrong do they have to be to not be useful."

That's a much better question to ask.

You can start approaching this first by using exploratory data analysis (EDA). Assessing whether data follows normal distribution via EDA implies using methods such as determining skewness and kurtosis of the data set (you can use psych, e1071, moments or other R packages) and using normality heuristics for the corresponding ranges. You can also generate a Q-Q plot for the data to visualize univariate normality or Mahalanobis distance Q-Q plot for multivariate normality.

After that, you can use analytical approach to determine data normality. This is typically a two-step process: distribution fitting and goodness-of-fit (GoF) testing. As the first step, you will need to fit data to distribution. For that, you could use one of functions in R packages, such as fitdistr from MASS package, which uses maximum likelihood estimation (MLE).

Then, as a second step, you would need to perform one (or more) of GoF tests to validate results. If your data is not discrete, you can use Kolmogorov-Smirnov, Anderson-Darling or Lilliefors tests, otherwise those are not applicable to discrete distributions. However, fortunately, chi-square GoF test is applicable to both continuous and discrete distributions and in R is a matter of calling stats::chisq.test() function.

In regard to mixture analysis (also known as finite mixture models analysis), to prevent repeating myself, I refer you to my relevant answer here: https://stats.stackexchange.com/a/129028/31372.