Normal Q-Q plot and normality tests
Draw a normal Q-Q plot of your numbers and check them with the Jarque-Bera, D’Agostino-Pearson and Anderson-Darling tests.
A clear answer. Here’s how.
Sorts the n values and plots the i-th smallest against the standard normal quantile of its plotting position (Blom’s (i − 3/8) ÷ (n + 1/4) by default). Normal data fall near a straight line; the reference line passes through the first and third quartiles (type 7) of the data and of the normal, so outliers do not tilt it. The optional band is ± 1.96 × (slope ÷ φ(z)) × √(p(1 − p) ÷ n) around the line, a pointwise interval for each order statistic, not a simultaneous one. Skewness G1 and excess kurtosis G2 are the adjusted sample estimates (as in SPSS and Excel); g1 and g2, the plain moment ratios, feed the tests. Jarque–Bera = n/6 × (g1² + g2²/4) has an exact χ²(2) tail, p = exp(−JB/2), but the statistic itself is only roughly χ² below a few hundred values. D’Agostino–Pearson K² adds the squares of D’Agostino’s (1970) skewness z and Anscombe and Glynn’s (1983) kurtosis z and compares the sum with χ²(2); it needs n ≥ 8 and its kurtosis part is rough below 20. Anderson–Darling A² compares the empirical distribution with a normal of the sample mean and SD, with Stephens’ modification A²(1 + 0.75/n + 2.25/n²) and the D’Agostino and Stephens (1986) p-value formula (as in R’s nortest), for n ≥ 8. A p-value of 0.05 or more means no evidence against normality, never proof of it. It does not run the Shapiro–Wilk test or test other distributions. It is a calculator, not a substitute for a statistician when decisions depend on the answer.
How this is checked
4 reference checks passed These 4 cases were run when this page was built, on 20 October 2026, and all reproduce within the stated tolerance. The same cases are part of the automated tests that run on every change to Toolmoz. Engine version 1.
See the checks and where each expected answer comes from
Case 1
- Inputs
- The tool’s default inputs
- Expected, and what Toolmoz gave
- Mean expected 20.933333333333334, Toolmoz 20.933333333333334Standard deviation expected 37.7443783262898, Toolmoz 37.7443783262898Skewness (G1, adjusted) expected -1.105907092394467, Toolmoz -1.1059070923944676Excess kurtosis (G2, adjusted) expected 1.408241396038813, Toolmoz 1.4082413960388156Jarque–Bera statistic expected 2.689946127614293, Toolmoz 2.6899461276142977P-value (Jarque–Bera) expected 0.26054672590231176, Toolmoz 0.26054672590231115D’Agostino–Pearson K² expected 5.211780661095492, Toolmoz 5.2117806610955P-value (D’Agostino–Pearson) expected 0.07383736825932662, Toolmoz 0.07383736825932632Anderson–Darling A² expected 0.6175124619999703, Toolmoz 0.6175124619999739P-value (Anderson–Darling) expected 0.08757741459198046, Toolmoz 0.08757741459197858
- Where the expected answer comes from
- Darwin’s 15 Zea mays differences (Fisher 1935): moments in exact fractions, then the D’Agostino, Anscombe–Glynn and Anderson–Darling formulas evaluated in an independent Python script with Φ from math.erfc
- Allowed difference
- ±1e-9 relative
Case 2
- Inputs
- Values 1 2 3 4 5 6 7 8 9
- Expected, and what Toolmoz gave
- Skewness (G1, adjusted) expected 0, Toolmoz 0Excess kurtosis (G2, adjusted) expected -1.2, Toolmoz -1.2000000000000004Jarque–Bera statistic expected 0.5673375, Toolmoz 0.5673375000000003P-value (Jarque–Bera) expected 0.7530160399610638, Toolmoz 0.7530160399610637Skewness z (D’Agostino) expected 0, Toolmoz 0
- Where the expected answer comes from
- Symmetric data have zero skewness. For 1 to 9, m2 = 60/9 and m4 = 708/9, so g2 = 1.77 − 3 = −1.23, G2 = (10 × −1.23 + 6) × 8 ÷ 42 = −1.2 and JB = 9/6 × (−1.23)²/4 = 0.5673375 with p = exp(−JB/2), by hand
- Allowed difference
- ±1e-12
Case 3
- Inputs
- Values 0.1 0.2 0.2 0.3 0.4 0.5 0.7 0.9 1.2 1.6 2.2 3.5 5.0 8.0
- Expected, and what Toolmoz gave
- Jarque–Bera statistic expected 9.256894457769818, Toolmoz 9.256894457769812P-value (D’Agostino–Pearson) expected 0.0011263392069829948, Toolmoz 0.0011263392069829968Anderson–Darling A² expected 1.4201733650179431, Toolmoz 1.4201733650179431P-value (Anderson–Darling) expected 0.0006762587308528132, Toolmoz 0.0006762587308528132
- Where the expected answer comes from
- A right-skewed sample of 14 values: the same formulas evaluated in an independent Python script
- Allowed difference
- ±1e-9 relative
Case 4
- Inputs
- Plotting positions weibullReference line moments
- Expected, and what Toolmoz gave
- Anderson–Darling A² expected 0.6175124619999703, Toolmoz 0.6175124619999739Jarque–Bera statistic expected 2.689946127614293, Toolmoz 2.6899461276142977
- Where the expected answer comes from
- Plotting positions and the reference line change only the picture: the tests on Darwin’s data are the same as with the defaults (independent Python script)
- Allowed difference
- ±1e-9 relative
What this shows: the engine reproduces independently worked values for these cases. It does not prove every possible input is right. To test an answer you were given, see how to check a number; to see what is and is not checked across Toolmoz, see the accuracy ledger.
See a worked example
Worked example
A fixed demonstration, separate from the values you enter above.
- Values
- 49, -67, 8, 16, 6, 23, 28, 41, 14, 29, 56, 24, 75, 60, -48
- Plotting positions
- Blom, (i − 3/8) ÷ (n + 1/4)
- Reference line
- Through the quartiles (robust, as R’s qqline)
- Pointwise 95% band
- Show
Example result
- Values used
- 15
- Values skipped (missing)
- 0
- Mean
- 20.93333
- Standard deviation
- 37.74438
- Skewness (G1, adjusted)
- -1.1059
- Excess kurtosis (G2, adjusted)
- 1.4082
- Jarque–Bera statistic
- 2.6899
- P-value (Jarque–Bera)
- 0.2605
- Jarque–Bera
- No evidence against normality at the 5% level
- D’Agostino–Pearson K²
- 5.2118
- P-value (D’Agostino–Pearson)
- 0.07384
- D’Agostino–Pearson
- No evidence against normality at the 5% level
- Skewness z (D’Agostino)
- -1.8899
- Kurtosis z (Anscombe–Glynn)
- 1.2806
- Anderson–Darling A²
- 0.6175
- A² with Stephens’ modification
- 0.6546
- P-value (Anderson–Darling)
- 0.08758
- Anderson–Darling
- No evidence against normality at the 5% level
Plotting positions: Blom, p = (i − 3/8) ÷ (n + 1/4). A p-value at or above 0.05 means no evidence against normality, not proof that the data are normal: small samples rarely reject anything, and large samples reject trivial departures, so read the plot first. Jarque–Bera uses n/6 × (g1² + g2²/4) against χ²(2), which is unreliable below a few hundred values. D’Agostino–Pearson needs n ≥ 8 and its kurtosis part is rough below 20; Anderson–Darling uses the estimated mean and SD with Stephens’ correction and the D’Agostino and Stephens (1986) p-value approximation.