UK-based online statistics and data analysis support for USA, UK, and international clients. No exams, no impersonation, no fabricated data.

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.

Variables checked5
Sample size649
Closest W valueG1 = .986
Lowest W valueAbsences = .772

G3 Shapiro-Wilk.926
G2 Shapiro-Wilk.962
Age Shapiro-Wilk.916
Decisionp < .001

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

  1. What Is the Shapiro-Wilk Test?
  2. Shapiro-Wilk Test Formula and W Statistic
  3. Null and Alternative Hypothesis for Shapiro-Wilk Test
  4. Dataset and Variables Used
  5. Verified SPSS Output Interpretation
  6. Python Chart-by-Chart Interpretation
  7. R Chart-by-Chart Validation
  8. SPSS, R, Python and Excel Workflows
  9. Code Blocks for Shapiro-Wilk Test
  10. APA Reporting Wording
  11. Common Mistakes
  12. When to Use Shapiro-Wilk Test
  13. Downloads and Resources
  14. Related Guides
  15. 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:

W = (Σ aix(i))² / Σ(xi − x̄)²

In this formula, x(i) represents the ordered sample values, 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 PatternInterpretationReporting Decision
W close to 1 and p > .05Data do not show strong evidence against normality.Fail to reject normality.
W lower and p < .05Data significantly depart from normality.Reject normality.
W high but p < .05 in a large sampleSmall departure may be statistically detectable.Check plots and practical severity.
Very low W and p < .001Strong 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.

StatementHypothesisMeaning in This Output
Null hypothesisH0: the variable is normally distributedThe observed values are consistent with normal shape.
Alternative hypothesisH1: the variable is not normally distributedThe observed values depart from normal shape.
Alpha levelα = .05The usual decision threshold for normality testing.
Decision ruleReject H0 if p < .05All 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.

VariableNMeanStandard DeviationSkewnessKurtosisWhy It Matters for Shapiro-Wilk Test
G364911.913.231-.9132.712Main final grade variable; negatively skewed with heavy tails.
G264911.572.914-.3601.662Second-period grade; mild negative skew and positive kurtosis.
G164911.402.745-.003.037Closest to normal by skewness and kurtosis.
age64916.741.218.417.072Mild positive skew with restricted age range.
absences6493.664.6412.0215.781Strong 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 ItemValueInterpretation
Valid cases for G3, G2, G1, age and absences649 eachAll variables have complete valid data in the SPSS normality output.
Missing cases0No missing cases were excluded from the full-sample normality checks.
G3 mean and SDM = 11.91, SD = 3.231Final grade has a moderate spread and visible negative skew.
Absences mean and SDM = 3.66, SD = 4.641Absences has a high spread relative to its mean and strong right skew.

SPSS Shapiro-Wilk Test Results Across Variables

VariableShapiro-Wilk WdfSPSS Sig.Report AsNormality Decision
G3.926649.000p < .001Reject normality; negative skew and positive kurtosis.
G2.962649.000p < .001Reject normality; mild-to-moderate departure.
G1.986649.000p < .001Reject normality formally; closest to normal by W statistic.
age.916649.000p < .001Reject normality; restricted and mildly skewed age distribution.
absences.772649.000p < .001Reject normality strongly; lowest W statistic and strongest skew.

SPSS Kolmogorov-Smirnov Cross-check

VariableKolmogorov-Smirnov DdfSig.Interpretation
G3.124649p < .001Confirms formal non-normality.
G2.088649p < .001Confirms formal non-normality.
G1.086649p < .001Smallest K-S statistic but still significant.
age.175649p < .001Formal non-normality due partly to restricted discrete range.
absences.215649p < .001Strongest K-S departure among selected variables.

SPSS Group Normality for G3 by Sex

GroupNMeanSDSkewnessKurtosisShapiro-Wilk WDecision
Female38312.253.124-.8572.683.934, p < .001Reject normality for female G3 scores.
Male26611.413.321-.9802.803.913, p < .001Reject 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

Shapiro-Wilk Test Python distribution with normal curve
Python chart showing the observed distribution with a theoretical normal curve overlay.

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

Shapiro-Wilk Test Python Q-Q plot normality check
Python Q-Q plot comparing observed quantiles with theoretical normal quantiles.

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

Shapiro-Wilk Test Python detrended Q-Q plot
Python detrended Q-Q plot showing deviations from the normal reference line.

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

Shapiro-Wilk W statistic across variables Python chart
Python chart comparing Shapiro-Wilk W statistics across G3, G2, G1, age and absences.

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

Shapiro-Wilk p-values across variables Python chart
Python chart showing Shapiro-Wilk p-values compared with alpha = .05.

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

Shapiro-Wilk Test Python skewness and kurtosis context chart
Python chart showing skewness and kurtosis context for the Shapiro-Wilk normality results.

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

Shapiro-Wilk Test Python group p-value comparison chart
Python chart comparing Shapiro-Wilk p-values for G3 by sex group.

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

R Shapiro-Wilk Test distribution with normal curve
R validation chart showing the observed distribution with a theoretical normal curve overlay.

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

R Shapiro-Wilk Test Q-Q plot normality check
R validation Q-Q plot comparing observed quantiles with theoretical normal quantiles.

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

R Shapiro-Wilk Test detrended Q-Q plot
R validation detrended Q-Q plot showing deviations from the normal reference.

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

R Shapiro-Wilk W statistic across variables chart
R validation chart comparing Shapiro-Wilk W statistics 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

R Shapiro-Wilk p-values across variables chart
R validation chart showing Shapiro-Wilk p-values compared with alpha.

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

R Shapiro-Wilk Test skewness and kurtosis context chart
R validation chart connecting Shapiro-Wilk results with skewness and kurtosis.

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

R Shapiro-Wilk group p-value comparison chart
R validation chart comparing Shapiro-Wilk p-values across sex groups.

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

StepSPSS Menu or SyntaxPurpose
Open datasetFile > Open > DataLoad the SPSS-ready dataset.
Run ExploreAnalyze > Descriptive Statistics > ExploreRequest normality tests and plots.
Add variablesDependent ListAdd G3, G2, G1, age and absences.
Request plotsPlots > Normality plots with testsProduce Shapiro-Wilk, K-S, histogram and Q-Q plots.
Read resultTests of Normality tableUse Shapiro-Wilk W and Sig. values.
Export outputFile > Export or OUTPUT EXPORTSave the SPSS output PDF.

R Workflow

StepR ActionPurpose
Read dataread.csv()Load the dataset.
Select variablena.omit(df$G3)Remove missing values before testing.
Run Shapiro-Wilkshapiro.test(x)Calculate W statistic and p-value.
Make Q-Q plotqqnorm(), qqline()Check normality visually.
Group normalityby() or dplyr::group_by()Run the test within groups.

Python Workflow

StepPython ActionPurpose
Read datapandas.read_csv()Load the dataset into a DataFrame.
Select variablepd.to_numeric(...).dropna()Clean the numeric variable.
Run Shapiro-Wilkscipy.stats.shapiro()Calculate W statistic and p-value.
Make Q-Q plotscipy.stats.probplot()Check observed values against normal quantiles.
Create chartsmatplotlibGenerate WordPress-ready chart images.

Excel Workflow

Excel TaskFormula or ToolPurpose
Sort valuesData > SortPrepare ordered values for a Q-Q style normality check.
Rank order=ROW()-1Create rank positions.
Expected probability=(rank-0.5)/NApproximate 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

MistakeWhy It Is a ProblemCorrect Practice
Writing p = .000SPSS displays very small p-values as .000, but p is not exactly zero.Report p < .001.
Using p-value onlyLarge samples can make small departures significant.Use W statistic, Q-Q plot, histogram, skewness and kurtosis.
Calling all variables equally non-normalA significant p-value does not show practical severity.Compare W values and shape diagnostics.
Checking only the total sampleSome analyses require group-level normality checks.Check normality within groups when using t-tests or ANOVA.
Assuming rejection means analysis is impossibleMany tests are robust under reasonable conditions.Consider sample size, residuals, transformations, robust methods or non-parametric tests.
Confusing Shapiro-Wilk with Kolmogorov-SmirnovThey 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 WhenWhy It HelpsExample from This Guide
You need a formal normality decisionIt gives W statistic and p-value.All five variables were formally non-normal.
You compare variables by normality severityW statistic helps rank practical closeness to normality.G1 had highest W; absences had lowest W.
You run group-based testsNormality may need checking within groups.G3 was tested separately for female and male students.
You decide whether transformation is neededLow W and shape issues suggest transformation review.Absences may need square root or another transformation.
You prepare an assumption-checking sectionShapiro-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.

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.

Need help applying this to your own data?

Salar Cafe can help interpret output, clean datasets, review assumptions, build dashboards and explain statistical results ethically.

Need help interpreting your data analysis results?

Contact Salar Cafe
Engr. Muhammad Yar Saqib author profile photo

Engr. Muhammad Yar Saqib

Engr. Muhammad Yar Saqib is an electrical engineer educated at the University of Bradford, United Kingdom, a writer and poet, and an Assistant Education Officer in the School Education Department, Punjab, serving since July 2017. He writes practical guides on statistics, SPSS, data analysis, mathematics and educational technology, with an emphasis on transparent methods, reproducible calculations and ethical learning support.