# Normality tests for histograms

I understand that one quick way to test for normality is to create a histogram from my data and see if it "looks bell-curved". Alternatively, I can use some normality test like Pearson's chi-squared.

But what if all the data I have is a histogram? Are there any numerical tests to evaluate if the underlying data is a sample drawing from a normally distributed random variable?

• (1)There's a distinction between "testing for normality" and "visually assessing normality". Those two things are different, and useful for different things. (2) neither can tell you that the underlying variable is normal. (3) You can visually assess normality by looking at a histogram, with caveats as the answers have noted. (4) You can also test normality on the basis of the histogram in several different ways, including using a chi-square - but beware, the chi-square lacks power and there are better alternatives that don't ignore cell-ordering; smooth tests are one possibility. – Glen_b May 22 '14 at 3:29

The Chi-squared goodness of fit test starts by binning data, then comparing the observed count in each bin to the theoretical or expected count. So if you can work out the number of points represented by each histogram bar and where the breaks are, then you have the input you need for the Chi-squared goodness of fit test. But note that the choices on how to bin a histogram can greatly influence perception. Look at @glen_b's answer to this question

Another approach is as described in:

 Buja, A., Cook, D. Hofmann, H., Lawrence, M. Lee, E.-K., Swayne,
D.F and Wickham, H. (2009) Statistical Inference for exploratory
data analysis and model diagnostics Phil. Trans. R. Soc. A 2009
367, 4361-4383 doi: 10.1098/rsta.2009.0120


where you do a "line up" by generating several histograms of known normal data, but otherwise matching your histogram of interest (same breaks, sample size, etc.) then you present these normal histograms and your histogram to people not familiar with the original and see if they can pick out the one that is different from others. If everyone has an easy time picking out the original histogram then that would indicate that it is clearly not normal, but if people can't pick out the original then it is probably normal enough.

Of course, as Nick Stauner points out, most of the time normality testing is essentially useless, either giving a meaningless answer to a meaningful question, or a meaningful answer to a meaningless question.

If all you have is a histogram, then you could just read the histogram. I.e., if the histogram represents frequencies of observations within binned ranges of a variable, you could just reproduce the dataset from this, albeit inexactly (you lose some precision due to the binning involved in a histogram). If the histogram is hard to read, you might make the process a little easier by digitizing it. For a list of software options, see "Software needed to scrape data from graph". I've personally used WebPlotDigitizer to reproduce data from a histogram with counts over one hundred, and found it to be accurate within roughly ±1 (i.e., less than 1% error) when I'm careful enough.

Of course, once you have reproduced the data, ordinary methods apply, as do their caveats.
For more on those, see, "Is normality testing 'essentially useless'?" While I'm at it, I should probably emphasize that histograms can be very misleading depending on the data and the way they're binned; see "Assessing approximate distribution of data based on a histogram".

• Thanks for the reply. Yes, the histogram represents frequencies within binned ranges. I'm assuming that the choice of ranges is independent of the data. If there ranges were narrow enough, I guess I could reproduce the dataset by picking the middle of the ranges, distributing uniformly over the range, or something like that. But if the ranges are wider or open (as in one bin for X<k), that doesn't work. I guess my question is whether there's any test which works directly on the histogram instead of creating dummy data first. – dainichi May 22 '14 at 3:17
• That I would be interested to know as well...but since the shape of a histogram is just as subject to obfuscation as the data it represents, I doubt any such method would solve the inherent problems. – Nick Stauner May 22 '14 at 3:26
• Yes, there are such tests. The point is that one can contemplate creating a test based on generating data consistent with the histogram, as Nick describes here, and then work out (mathematically) the distribution of the test statistic, which will necessarily depend only on the information available in the original histogram. For instance, a simple powerful test could be based on the maximum achievable value of the Kolmogorov-Smirnov statistic among all datasets consistent with the histogram (its "p-box"). That statistic is easily computed from the histogram cutpoints and heights. – whuber May 22 '14 at 16:23