Normality decision, W statistic and software steps
Shapiro-Wilk Test: p-Value Interpretation, Excel & SPSS
Shapiro-Wilk tests normality: a p-value below .05 indicates evidence against a normal distribution, while p ≥ .05 does not reject normality. Learn how to interpret W and p, run the test in Excel and SPSS, and confirm results in R and Python.
Quick Answer: Shapiro-Wilk Test Result
The verified SPSS output checks normality for five numeric variables: G3, G2, G1, age, and absences. Each variable has N = 649 valid cases. The Shapiro-Wilk Test is significant for every variable, with SPSS displaying Sig. = .000, which should be reported as p < .001. Therefore, the formal normality decision is to reject the null hypothesis of normality for all five variables.
Hypothesis-style decision: The null hypothesis says the variable follows a normal distribution, meaning H0: the data are normally distributed. The alternative hypothesis says the variable does not follow a normal distribution, meaning H1: the data are not normally distributed. Since all Shapiro-Wilk p-values are below .05, the formal decision is to reject H0 for G3, G2, G1, age, and absences.
Final interpretation: The Shapiro-Wilk Test rejects normality for all five variables. However, practical severity differs. G1 has the highest W statistic at .986, so it is closest to normal among the listed variables. Absences has the lowest W statistic at .772, so it shows the strongest non-normality. The result should be interpreted with Q-Q plots, detrended Q-Q plots, histograms, skewness, kurtosis, and sample-size context.
Important note: In large samples such as N = 649, the Shapiro-Wilk Test can reject normality even when a variable is only mildly non-normal. Therefore, the test result should not be used alone. Always combine the Shapiro-Wilk p-value with the Q-Q plot, histogram, skewness, kurtosis, sample size, and the purpose of the statistical analysis.
Table of Contents
- What Is the Shapiro-Wilk Test?
- Shapiro-Wilk Test Formula and W Statistic
- Null and Alternative Hypothesis for Shapiro-Wilk Test
- Dataset and Variables Used
- Verified SPSS Output Interpretation
- Python Chart-by-Chart Interpretation
- R Chart-by-Chart Validation
- SPSS, R, Python and Excel Workflows
- Code Blocks for Shapiro-Wilk Test
- APA Reporting Wording
- Common Mistakes
- When to Use Shapiro-Wilk Test
- Downloads and Resources
- Related Guides
- FAQs
What Is the Shapiro-Wilk Test?
The Shapiro-Wilk Test is a formal normality test. It checks whether the observed values of a variable are consistent with a normal distribution. The test produces a W statistic and a p-value. The W statistic is usually between 0 and 1. Values closer to 1 indicate that the sample distribution is closer to normal shape, while lower values indicate stronger departure from normality.
The Shapiro-Wilk Test is widely used because it is sensitive to distribution shape. It can detect skewness, heavy tails, outliers, and other departures from normality. In SPSS, it is commonly produced through Analyze > Descriptive Statistics > Explore, together with the Kolmogorov-Smirnov test, histograms, Q-Q plots, and descriptive statistics.
In this guide, the Shapiro-Wilk Test checks normality for G3, G2, G1, age, and absences. The results show that every variable is formally non-normal at p < .001. But the W statistic reveals practical differences: G1 is closest to normal, while absences is the most non-normal.
Practical meaning: A significant Shapiro-Wilk Test means the data are not perfectly normal according to the test. It does not automatically mean the analysis is invalid. Many parametric procedures are robust in large samples, especially when residuals and group sizes are acceptable.
Shapiro-Wilk Test Formula and W Statistic
The Shapiro-Wilk Test compares ordered sample values with the expected order statistics from a normal distribution. Its W statistic can be written in simplified form as:
In this formula, x(i) represents the ordered sample values, x̄ is the sample mean, and ai are constants based on expected normal order statistics. The numerator measures how closely the ordered sample values match the normal pattern. The denominator measures total variability around the mean.
The interpretation is simple even if the full calculation is complex:
| W Statistic / p-value Pattern | Interpretation | Reporting Decision |
|---|---|---|
| W close to 1 and p > .05 | Data do not show strong evidence against normality. | Fail to reject normality. |
| W lower and p < .05 | Data significantly depart from normality. | Reject normality. |
| W high but p < .05 in a large sample | Small departure may be statistically detectable. | Check plots and practical severity. |
| Very low W and p < .001 | Strong non-normality is likely. | Consider transformation, robust methods, or non-parametric alternatives. |
Formula caution: Most users do not calculate W manually. SPSS, Python, R, and other software calculate it automatically. The important reporting task is to interpret W, p-value, plots, and distribution shape together.
Null and Alternative Hypothesis for Shapiro-Wilk Test
The Shapiro-Wilk Test has a clear hypothesis structure. The null hypothesis says the data follow a normal distribution. The alternative hypothesis says the data do not follow a normal distribution.
| Statement | Hypothesis | Meaning in This Output |
|---|---|---|
| Null hypothesis | H0: the variable is normally distributed | The observed values are consistent with normal shape. |
| Alternative hypothesis | H1: the variable is not normally distributed | The observed values depart from normal shape. |
| Alpha level | α = .05 | The usual decision threshold for normality testing. |
| Decision rule | Reject H0 if p < .05 | All listed variables have p < .001, so normality is rejected formally. |
Hypothesis-style decision: Since every Shapiro-Wilk p-value is below .05, reject the normality null hypothesis for all five full-sample variables. The strongest practical non-normality is for absences, where W = .772. The weakest practical non-normality is for G1, where W = .986.
Interpretation nuance: “Reject normality” does not mean “do not analyze the data.” It means the normality assumption needs careful interpretation. Depending on the test, you may check residual normality, use robust methods, transform a variable, use bootstrapping, or report a non-parametric alternative.
Dataset and Variables Used
The worked example uses student performance variables. The Shapiro-Wilk Test is applied to five numeric variables: G3, G2, G1, age, and absences. SPSS also checks G3 normality by sex, so the guide includes a group-level normality interpretation.
| Variable | N | Mean | Standard Deviation | Skewness | Kurtosis | Why It Matters for Shapiro-Wilk Test |
|---|---|---|---|---|---|---|
| G3 | 649 | 11.91 | 3.231 | -.913 | 2.712 | Main final grade variable; negatively skewed with heavy tails. |
| G2 | 649 | 11.57 | 2.914 | -.360 | 1.662 | Second-period grade; mild negative skew and positive kurtosis. |
| G1 | 649 | 11.40 | 2.745 | -.003 | .037 | Closest to normal by skewness and kurtosis. |
| age | 649 | 16.74 | 1.218 | .417 | .072 | Mild positive skew with restricted age range. |
| absences | 649 | 3.66 | 4.641 | 2.021 | 5.781 | Strong right-skewed count variable; strongest non-normality. |
Before reading normality tests, it is useful to review descriptive statistics, frequency distribution, histogram interpretation, box plot interpretation, and five-number summary.
Verified SPSS Output Interpretation
The SPSS output provides the core evidence for the Shapiro-Wilk Test decision. It includes case processing summary, descriptive statistics, Kolmogorov-Smirnov results, Shapiro-Wilk results, histograms, normal Q-Q plots, detrended Q-Q plots, and group normality output for G3 by sex.
SPSS Case Processing and Descriptive Summary
| SPSS Output Item | Value | Interpretation |
|---|---|---|
| Valid cases for G3, G2, G1, age and absences | 649 each | All variables have complete valid data in the SPSS normality output. |
| Missing cases | 0 | No missing cases were excluded from the full-sample normality checks. |
| G3 mean and SD | M = 11.91, SD = 3.231 | Final grade has a moderate spread and visible negative skew. |
| Absences mean and SD | M = 3.66, SD = 4.641 | Absences has a high spread relative to its mean and strong right skew. |
SPSS Shapiro-Wilk Test Results Across Variables
| Variable | Shapiro-Wilk W | df | SPSS Sig. | Report As | Normality Decision |
|---|---|---|---|---|---|
| G3 | .926 | 649 | .000 | p < .001 | Reject normality; negative skew and positive kurtosis. |
| G2 | .962 | 649 | .000 | p < .001 | Reject normality; mild-to-moderate departure. |
| G1 | .986 | 649 | .000 | p < .001 | Reject normality formally; closest to normal by W statistic. |
| age | .916 | 649 | .000 | p < .001 | Reject normality; restricted and mildly skewed age distribution. |
| absences | .772 | 649 | .000 | p < .001 | Reject normality strongly; lowest W statistic and strongest skew. |
SPSS Kolmogorov-Smirnov Cross-check
| Variable | Kolmogorov-Smirnov D | df | Sig. | Interpretation |
|---|---|---|---|---|
| G3 | .124 | 649 | p < .001 | Confirms formal non-normality. |
| G2 | .088 | 649 | p < .001 | Confirms formal non-normality. |
| G1 | .086 | 649 | p < .001 | Smallest K-S statistic but still significant. |
| age | .175 | 649 | p < .001 | Formal non-normality due partly to restricted discrete range. |
| absences | .215 | 649 | p < .001 | Strongest K-S departure among selected variables. |
SPSS Group Normality for G3 by Sex
| Group | N | Mean | SD | Skewness | Kurtosis | Shapiro-Wilk W | Decision |
|---|---|---|---|---|---|---|---|
| Female | 383 | 12.25 | 3.124 | -.857 | 2.683 | .934, p < .001 | Reject normality for female G3 scores. |
| Male | 266 | 11.41 | 3.321 | -.980 | 2.803 | .913, p < .001 | Reject normality for male G3 scores. |
SPSS interpretation summary: The Shapiro-Wilk Test rejects normality for every listed full-sample variable and for G3 within both sex groups. G1 has the highest W statistic and therefore the closest practical normal shape. Absences has the lowest W statistic and strongest non-normal shape.
Python Chart-by-Chart Interpretation
The Python charts show the Shapiro-Wilk Test result visually. They include the distribution with normal curve, Q-Q plot, detrended Q-Q plot, W statistic comparison, p-value comparison, skewness and kurtosis context, and group p-value comparison.
Python Chart 1: Distribution with Normal Curve

This chart compares the observed distribution with a normal curve. If the variable were normally distributed, the bars would follow the bell-shaped curve closely. For G3, the distribution does not perfectly match the normal curve. The SPSS output reports Shapiro-Wilk W = .926 and p < .001, so the formal normality test rejects normality.
The chart also helps explain why visual interpretation matters. A large sample may produce a significant Shapiro-Wilk result even when the distribution looks moderately close to normal. Therefore, the histogram should be used to judge the practical size and direction of the departure.
Python Chart 2: Q-Q Plot Normality Check

The Q-Q plot checks whether observed values line up with expected normal quantiles. Points close to the diagonal line support approximate normality. Points bending away from the line show non-normality, tail issues, skewness, or outliers. The SPSS Shapiro-Wilk result for G3 is significant, and the Q-Q pattern supports that the distribution is not perfectly normal.
The Q-Q plot is especially useful because it shows where the normality problem occurs. If departures occur mostly in the tails, the center may still be usable for some robust analyses. If departures occur throughout the plot, the normality concern is more serious.
Python Chart 3: Detrended Q-Q Plot

The detrended Q-Q plot removes the diagonal reference pattern and shows deviations from normality more directly. Values close to zero indicate good alignment with the normal reference. Values far above or below zero show where the observed distribution differs from normal. This makes small departures easier to see than in the ordinary Q-Q plot.
For the Shapiro-Wilk workflow, the detrended Q-Q plot is a strong companion to the p-value. The p-value says whether the departure is statistically significant. The detrended plot shows the location and shape of that departure.
Python Chart 4: Shapiro-Wilk W Across Variables

This chart ranks the variables by Shapiro-Wilk W statistic. A higher W statistic means the variable is closer to normal shape. G1 has the highest W statistic at .986, making it the closest to normal in the output. Absences has the lowest W statistic at .772, making it the strongest non-normal variable.
This chart is important because all variables have p < .001, but they are not equally non-normal. The W statistic helps distinguish mild practical departure from strong practical departure.
Python Chart 5: Shapiro-Wilk p-values Across Variables

This chart compares the Shapiro-Wilk p-values with the alpha level of .05. Since all p-values are below .05, the formal decision is to reject normality for every listed variable. In SPSS, the values appear as .000, which should be reported as p < .001.
The p-value chart is useful for decision reporting. However, it should not be the only chart used. Because the sample size is large, p-values can be very small even for variables that are visually close to normal. That is why the W statistic chart and Q-Q plots are also necessary.
Python Chart 6: Skewness and Kurtosis Context

This chart explains why Shapiro-Wilk rejects normality. Variables with strong skewness or high kurtosis are more likely to have lower W statistics. In the SPSS output, absences has skewness = 2.021 and kurtosis = 5.781, which explains its low W statistic. G1 has skewness = -.003 and kurtosis = .037, which explains why its W statistic is closest to 1.
The chart teaches an important interpretation rule: the Shapiro-Wilk p-value tells whether normality is rejected, while skewness and kurtosis help explain the shape reason for that rejection.
Python Chart 7: Group p-value Comparison

This chart compares G3 normality by sex group. SPSS reports female G3 W = .934, p < .001 and male G3 W = .913, p < .001. Therefore, G3 normality is rejected within both groups. The male group has the lower W statistic, suggesting slightly stronger departure from normality than the female group.
This chart is useful because many statistical assumptions are checked within groups rather than only in the total sample. For example, t-tests and ANOVA often require attention to group-level distributions, variance patterns, sample sizes, and robustness.
R Chart-by-Chart Validation
The R charts validate the same Shapiro-Wilk Test workflow using a separate software environment. The R output confirms the distribution pattern, Q-Q plot interpretation, detrended Q-Q plot behavior, W statistic comparison, p-value comparison, skewness/kurtosis context, and group-level normality interpretation.
R Chart 1: Distribution with Normal Curve

The R distribution chart confirms the Python visual interpretation. The observed distribution does not perfectly match the theoretical normal curve. This agrees with the SPSS Shapiro-Wilk result, which rejects normality for G3 and the other selected variables.
R Chart 2: Q-Q Plot Normality Check

The R Q-Q plot validates the Python Q-Q plot. The points show departures from the normal reference line, especially in parts of the distribution where skewness or tail behavior is visible. This confirms that the Shapiro-Wilk rejection has a visible distribution-shape basis.
R Chart 3: Detrended Q-Q Plot

The R detrended Q-Q plot confirms where the observed values deviate from normal expectation. Deviations away from zero show the same conclusion as SPSS: the distribution is not perfectly normal.
R Chart 4: Shapiro-Wilk W Across Variables

The R W statistic chart confirms the practical ranking. G1 is closest to normal because its W statistic is highest, while absences is most non-normal because its W statistic is lowest. This validates the Python and SPSS interpretations.
R Chart 5: p-values Across Variables

The R p-value chart confirms that all variables reject normality at the selected alpha level. Like the Python p-value chart, it should be read together with W values and visual plots because all variables can be significant while still having different practical severity.
R Chart 6: Skewness and Kurtosis Context

The R skewness-kurtosis chart validates the explanation for the Shapiro-Wilk results. Absences has the strongest shape problem, while G1 is closest to normal shape. This confirms that W statistics and p-values should be interpreted with distribution-shape measures.
R Chart 7: Group p-value Comparison

The R group p-value comparison confirms that both female and male G3 distributions reject normality. It supports the SPSS group interpretation and reinforces that group-level assumption checks can matter in t-tests, ANOVA, and other grouped analyses.
SPSS, R, Python and Excel Workflows for Shapiro-Wilk Test
The same Shapiro-Wilk Test workflow can be reproduced in SPSS, R, Python and Excel. SPSS, R, and Python directly calculate the Shapiro-Wilk W statistic and p-value. Excel does not include a simple built-in Shapiro-Wilk function, so Excel is better used for supporting normality checks such as histograms, Q-Q plot preparation, skewness, kurtosis, and normal probability comparisons.
SPSS Workflow
| Step | SPSS Menu or Syntax | Purpose |
|---|---|---|
| Open dataset | File > Open > Data | Load the SPSS-ready dataset. |
| Run Explore | Analyze > Descriptive Statistics > Explore | Request normality tests and plots. |
| Add variables | Dependent List | Add G3, G2, G1, age and absences. |
| Request plots | Plots > Normality plots with tests | Produce Shapiro-Wilk, K-S, histogram and Q-Q plots. |
| Read result | Tests of Normality table | Use Shapiro-Wilk W and Sig. values. |
| Export output | File > Export or OUTPUT EXPORT | Save the SPSS output PDF. |
R Workflow
| Step | R Action | Purpose |
|---|---|---|
| Read data | read.csv() | Load the dataset. |
| Select variable | na.omit(df$G3) | Remove missing values before testing. |
| Run Shapiro-Wilk | shapiro.test(x) | Calculate W statistic and p-value. |
| Make Q-Q plot | qqnorm(), qqline() | Check normality visually. |
| Group normality | by() or dplyr::group_by() | Run the test within groups. |
Python Workflow
| Step | Python Action | Purpose |
|---|---|---|
| Read data | pandas.read_csv() | Load the dataset into a DataFrame. |
| Select variable | pd.to_numeric(...).dropna() | Clean the numeric variable. |
| Run Shapiro-Wilk | scipy.stats.shapiro() | Calculate W statistic and p-value. |
| Make Q-Q plot | scipy.stats.probplot() | Check observed values against normal quantiles. |
| Create charts | matplotlib | Generate WordPress-ready chart images. |
Excel Workflow
| Excel Task | Formula or Tool | Purpose |
|---|---|---|
| Sort values | Data > Sort | Prepare ordered values for a Q-Q style normality check. |
| Rank order | =ROW()-1 | Create rank positions. |
| Expected probability | =(rank-0.5)/N | Approximate plotting position. |
| Expected normal quantile | =NORM.S.INV(probability) | Create theoretical normal quantiles. |
| Skewness | =SKEW(range) | Support normality interpretation. |
| Kurtosis | =KURT(range) | Support tail/peak interpretation. |
Code Blocks for Shapiro-Wilk Test
SPSS Syntax for Shapiro-Wilk Test
* Shapiro-Wilk Test in SPSS.
* Variables: G3 G2 G1 age absences.
TITLE "Shapiro-Wilk Test for Normality".
EXAMINE VARIABLES=G3 G2 G1 age absences
/PLOT BOXPLOT HISTOGRAM NPPLOT
/COMPARE GROUPS
/STATISTICS DESCRIPTIVES
/CINTERVAL 95
/MISSING LISTWISE
/NOTOTAL.
* Group normality check for G3 by sex.
EXAMINE VARIABLES=G3 BY sex
/PLOT BOXPLOT HISTOGRAM NPPLOT
/COMPARE GROUPS
/STATISTICS DESCRIPTIVES
/CINTERVAL 95
/MISSING LISTWISE
/NOTOTAL.
OUTPUT EXPORT
/CONTENTS EXPORT=VISIBLE
/PDF DOCUMENTFILE="Shapiro-Wilk-Test-SPSS-Output.pdf".Python Code for Shapiro-Wilk Test
import pandas as pd
from scipy import stats
df = pd.read_csv("dataset.csv")
variables = ["G3", "G2", "G1", "age", "absences"]
alpha = 0.05
rows = []
for var in variables:
x = pd.to_numeric(df[var], errors="coerce").dropna()
w_stat, p_value = stats.shapiro(x)
rows.append({
"variable": var,
"n": len(x),
"shapiro_w": w_stat,
"p_value": p_value,
"decision": "Reject normality" if p_value < alpha else "Fail to reject normality"
})
summary = pd.DataFrame(rows)
print(summary)
# Optional group normality for G3 by sex
group_rows = []
for group, sub in df.groupby("sex"):
x = pd.to_numeric(sub["G3"], errors="coerce").dropna()
w_stat, p_value = stats.shapiro(x)
group_rows.append({
"group": group,
"n": len(x),
"shapiro_w": w_stat,
"p_value": p_value,
"decision": "Reject normality" if p_value < alpha else "Fail to reject normality"
})
group_summary = pd.DataFrame(group_rows)
print(group_summary)R Code for Shapiro-Wilk Test
# Shapiro-Wilk Test in R
df <- read.csv("dataset.csv")
variables <- c("G3", "G2", "G1", "age", "absences")
alpha <- 0.05
rows <- list()
for(v in variables){
x <- as.numeric(df[[v]])
x <- x[!is.na(x)]
result <- shapiro.test(x)
rows[[v]] <- data.frame(
variable = v,
n = length(x),
shapiro_w = as.numeric(result$statistic),
p_value = result$p.value,
decision = ifelse(result$p.value < alpha, "Reject normality", "Fail to reject normality")
)
}
summary_table <- do.call(rbind, rows)
print(summary_table)
# Group normality for G3 by sex
group_rows <- list()
for(g in unique(df$sex)){
x <- as.numeric(df$G3[df$sex == g])
x <- x[!is.na(x)]
result <- shapiro.test(x)
group_rows[[as.character(g)]] <- data.frame(
group = g,
n = length(x),
shapiro_w = as.numeric(result$statistic),
p_value = result$p.value,
decision = ifelse(result$p.value < alpha, "Reject normality", "Fail to reject normality")
)
}
group_summary <- do.call(rbind, group_rows)
print(group_summary)Excel Formulas for Shapiro-Wilk Supporting Normality Check
Excel does not have a simple built-in Shapiro-Wilk function.
Use Excel to support the normality decision:
Assume values are in A2:A650.
Sample size:
=COUNT(A2:A650)
Mean:
=AVERAGE(A2:A650)
Standard deviation:
=STDEV.S(A2:A650)
Skewness:
=SKEW(A2:A650)
Kurtosis:
=KURT(A2:A650)
Create sorted values:
Sort A2:A650 from smallest to largest.
Rank:
=ROW()-1
Expected probability:
=(rank-0.5)/COUNT($A$2:$A$650)
Expected normal quantile:
=NORM.S.INV(probability_cell)
Create Q-Q plot:
Scatter plot of expected normal quantile against sorted observed value.
Interpretation:
Points close to a straight line support approximate normality.
Strong bends, tail deviations or outliers suggest non-normality.APA Reporting Wording for Shapiro-Wilk Test
When reporting the Shapiro-Wilk Test, include the W statistic, degrees of freedom or sample size, p-value, and interpretation. Also mention visual checks when the sample size is large.
APA-Style Full-Sample Report
Normality was assessed using the Shapiro-Wilk Test, histograms, Q-Q plots, and skewness-kurtosis diagnostics. The Shapiro-Wilk Test was significant for all selected variables: G3, W = .926, p < .001; G2, W = .962, p < .001; G1, W = .986, p < .001; age, W = .916, p < .001; and absences, W = .772, p < .001. Therefore, the formal normality assumption was rejected for all variables. Practical inspection showed that G1 was closest to normal, while absences showed the strongest non-normality.
APA-Style Group Normality Report
G3 normality was also checked separately by sex. The Shapiro-Wilk Test was significant for female students, W = .934, p < .001, and male students, W = .913, p < .001. Thus, G3 departed from normality within both groups. The male group showed a slightly lower W statistic, suggesting slightly stronger departure from normality.
Student-Friendly Report Example
The Shapiro-Wilk Test showed that the variables were not perfectly normally distributed because all p-values were below .001. However, the W statistics showed that not all variables were equally non-normal. G1 was closest to normal with W = .986, while absences was most non-normal with W = .772. Therefore, the normality result should be interpreted with Q-Q plots, histograms, skewness, kurtosis, and sample-size context.
Common Mistakes in Shapiro-Wilk Test Interpretation
| Mistake | Why It Is a Problem | Correct Practice |
|---|---|---|
| Writing p = .000 | SPSS displays very small p-values as .000, but p is not exactly zero. | Report p < .001. |
| Using p-value only | Large samples can make small departures significant. | Use W statistic, Q-Q plot, histogram, skewness and kurtosis. |
| Calling all variables equally non-normal | A significant p-value does not show practical severity. | Compare W values and shape diagnostics. |
| Checking only the total sample | Some analyses require group-level normality checks. | Check normality within groups when using t-tests or ANOVA. |
| Assuming rejection means analysis is impossible | Many tests are robust under reasonable conditions. | Consider sample size, residuals, transformations, robust methods or non-parametric tests. |
| Confusing Shapiro-Wilk with Kolmogorov-Smirnov | They are different normality tests with different statistics. | Report the correct test statistic and interpretation. |
Key reminder: The Shapiro-Wilk Test is a normality test, not a test of equal variances, not a test of means, and not a regression diagnostic. Use it for distribution shape and normality assumption checking.
When to Use Shapiro-Wilk Test
Use the Shapiro-Wilk Test when you need a formal normality test for a continuous or approximately continuous variable. It is commonly used before t-tests, ANOVA, correlation, regression diagnostics, and transformation decisions. It is especially useful when paired with Q-Q plots and descriptive shape measures.
| Use Shapiro-Wilk Test When | Why It Helps | Example from This Guide |
|---|---|---|
| You need a formal normality decision | It gives W statistic and p-value. | All five variables were formally non-normal. |
| You compare variables by normality severity | W statistic helps rank practical closeness to normality. | G1 had highest W; absences had lowest W. |
| You run group-based tests | Normality may need checking within groups. | G3 was tested separately for female and male students. |
| You decide whether transformation is needed | Low W and shape issues suggest transformation review. | Absences may need square root or another transformation. |
| You prepare an assumption-checking section | Shapiro-Wilk is a standard normality test. | The SPSS Explore output provides W, p-values and plots. |
For a full normality workflow, combine the Shapiro-Wilk Test with Q-Q plot normality check, P-P plot normality check, Kolmogorov-Smirnov test, Lilliefors test, D’Agostino-Pearson test, and Cramer-von Mises test.
Downloads and Resources for Shapiro-Wilk Test
The resources below include the SPSS output PDF, Python charts, and R validation charts used in this guide.
Download SPSS Output PDF
Verified SPSS output for Shapiro-Wilk normality tests, Kolmogorov-Smirnov tests, histograms, Q-Q plots and group normality checks.
Copy Shapiro-Wilk Test Code
Use the SPSS, Python, R and Excel code blocks to reproduce the normality workflow.
Python Chart 4: W Across Variables
Visual comparison of Shapiro-Wilk W statistics.
Python Chart 5: p-values Across Variables
Normality decision chart comparing p-values with alpha.
FAQs About Shapiro-Wilk Test
What is the Shapiro-Wilk Test?
The Shapiro-Wilk Test is a normality test that checks whether a sample appears to come from a normally distributed population.
What is the null hypothesis of the Shapiro-Wilk Test?
The null hypothesis is that the data are normally distributed.
What is the alternative hypothesis of the Shapiro-Wilk Test?
The alternative hypothesis is that the data are not normally distributed.
How do I interpret a Shapiro-Wilk p-value?
If p is below .05, reject the null hypothesis of normality. If p is above .05, fail to reject the null hypothesis of normality.
What does W mean in the Shapiro-Wilk Test?
W is the Shapiro-Wilk statistic. Values closer to 1 suggest closer agreement with normality, while lower values suggest stronger departure from normality.
What was the Shapiro-Wilk result for G3 in this example?
For G3, the Shapiro-Wilk result was W = .926, df = 649, and p < .001. Normality was rejected.
Which variable was closest to normal in this example?
G1 was closest to normal because it had the highest Shapiro-Wilk W statistic, W = .986.
Which variable was most non-normal in this example?
Absences was most non-normal because it had the lowest Shapiro-Wilk W statistic, W = .772, and strong positive skewness.
Why should SPSS Sig. .000 not be reported as p = .000?
SPSS displays very small p-values as .000, but the p-value is not exactly zero. It should be reported as p < .001.
Should I use Shapiro-Wilk Test alone?
No. Use it with histograms, Q-Q plots, detrended Q-Q plots, skewness, kurtosis and sample-size context.
How do I run the Shapiro-Wilk Test in SPSS?
Use Analyze > Descriptive Statistics > Explore, place variables in the Dependent List, click Plots, and select Normality plots with tests.
How do I run the Shapiro-Wilk Test in Python?
Use scipy.stats.shapiro() on a clean numeric variable.
How do I run the Shapiro-Wilk Test in R?
Use shapiro.test(x), where x is a numeric vector without missing values.