Written and maintained by CASRAI Editorial Board
Last updated
The skew-normal distribution (also written skew normal distribution) is a continuous probability distribution that extends the normal distribution with one extra shape parameter, which lets the curve lean to the right or to the left. When that parameter is zero you get the ordinary normal distribution back. This guide gives the formula, a fully worked numeric example, a reading table for the shape parameter, and short snippets for Excel, R and Python.
Definition in one paragraph
A skew-normal distribution is a normal-like bell curve with a slant parameter, usually called alpha (α), that regulates asymmetry. The family was developed in detail by Adelchi Azzalini (1985). In the R package sn, the skew-normal is an extension of the normal family through an alpha parameter that regulates asymmetry; when alpha is 0 it reduces to the normal distribution. Positive α gives a longer right tail, negative α a longer left tail. If you are new to the symmetric case, start with normal and standard normal distribution.
Skew normal distribution formula
The standard form (location 0, scale 1) has the density
f(x; α) = 2 · φ(x) · Φ(αx)
SciPy documents the same expression as skewnorm.pdf(x, a) = 2 * norm.pdf(x) * norm.cdf(a*x). With location and scale, the density at x is the standard density at y = (x − ξ) / ω, divided by ω:
f(x; ξ, ω, α) = (2 / ω) · φ(z) · Φ(αz), where z = (x − ξ) / ω
- φ(z): the standard normal probability density function.
- Φ(αz): the standard normal cumulative distribution function evaluated at αz. This term is what tilts the bell curve.
- ξ (xi): location. In SciPy this is
loc; in R sn it isxi. - ω (omega): scale, strictly positive. In SciPy this is
scale; in R sn it isomega. - α (alpha): the slant or shape parameter, any real number. In SciPy it is
a.
Note that ξ and ω are not the mean and standard deviation once α is not zero. The mean, variance and skewness use a helper quantity, δ = α / √(1 + α²), which always lies strictly between −1 and 1:
- Mean = ξ + ωδ√(2/π)
- Variance = ω²(1 − 2δ²/π)
- Skewness = [(4 − π)/2] · (δ√(2/π))³ / (1 − 2δ²/π)^(3/2)
These closed forms agree with the values SciPy’s skewnorm.stats returns for the example below.
Worked example with real numbers
Take ξ = 10, ω = 2 and α = 4 (an illustrative parameter set, not real data).
- δ = 4 / √(1 + 16) = 4 / 4.1231 = 0.9701.
- Mean = 10 + 2 × 0.9701 × √(2/π) = 10 + 2 × 0.9701 × 0.7979 = 11.548.
- Variance = 4 × (1 − 2 × 0.9411 / 3.1416) = 4 × (1 − 0.5992) = 1.603, so the standard deviation is 1.266 (not 2).
- Skewness = 0.784.
- Density at x = 11: z = (11 − 10) / 2 = 0.5. φ(0.5) = 0.3521 and Φ(αz) = Φ(2) = 0.9772. So f(11) = (2 / 2) × 0.3521 × 0.9772 = 0.3441.
The median is 11.348, below the mean of 11.548. That mean-above-median pattern is the signature of a right-skewed distribution; see left-skewed vs right-skewed distributions for the general rule.
Normal distribution with skew: what alpha does
Reading guide for the standard form (ξ = 0, ω = 1). Skewness values were computed from the formula above.
| α | δ | Skewness | How to read it |
|---|---|---|---|
| 0 | 0.000 | 0.000 | Exactly the normal distribution |
| 1 | 0.707 | 0.137 | Mild right skew |
| 2 | 0.894 | 0.454 | Moderate right skew |
| 5 | 0.981 | 0.851 | Strong right skew, near the family’s ceiling |
| −α | −δ | −skewness | Mirror image: same shape, long left tail |
The family cannot represent arbitrarily skewed data. Setting δ = 1 in the skewness formula gives the limit of the family, about +0.9953, so skewness stays between roughly −0.9953 and +0.9953. If your data have skewness well beyond that, a different family such as the lognormal distribution is the better candidate.
Assumptions and common mistakes
- Treating ξ and ω as mean and SD. They are location and scale; the mean and SD follow from the formulas above (11.55 and 1.27 in the example, versus ξ = 10 and ω = 2).
- Using it for heavy skew. Beyond skewness of roughly 0.995 in absolute value, the family cannot match the data.
- Eyeballing α from skewness. The relationship is nonlinear; α = 5 gives skewness 0.85, not 5-fold more than α = 1.
- Assuming a fit is good because α is nonzero. Check the fit visually, for example against a histogram (see histogram with normal distribution curve) and with a quantile plot.
- Confusing it with a transformation. A skew-normal is a distribution family in its own right; log-transforming the data and fitting a normal is a different model.
How to report it (APA example)
Report the fitted parameters and the derived summary values, since readers cannot infer the mean and SD from ξ and ω. Illustrative wording using the parameters above:
Scores were modeled with a skew-normal distribution (ξ = 10.00, ω = 2.00, α = 4.00), implying a mean of 11.55, an SD of 1.27 and a skewness of 0.78.
Cite the method, for example Azzalini (1985), and name the software and package version used.
How to calculate it in Excel, R or Python
Excel
Excel has no built-in skew-normal function, but the density follows directly from the formula. With x in A2, ξ in B2, ω in C2 and α in D2:
=2/C2*NORM.S.DIST((A2-B2)/C2,FALSE)*NORM.S.DIST(D2*(A2-B2)/C2,TRUE)
For the worked example this returns 0.3441 at x = 11.
R
library(sn)
dsn(11, xi = 10, omega = 2, alpha = 4) # density, 0.3441
psn(11, xi = 10, omega = 2, alpha = 4) # cumulative probability
qsn(0.5, xi = 10, omega = 2, alpha = 4) # median, 11.348
x <- rsn(1000, xi = 10, omega = 2, alpha = 4) # random draws
The sn package (maintained by Azzalini; reference manual version 2.1.3 on CRAN, published 2026-02-24) provides dsn, psn, qsn and rsn.
Python
from scipy.stats import skewnorm
a, loc, scale = 4, 10, 2
skewnorm.pdf(11, a, loc=loc, scale=scale) # 0.3441
skewnorm.cdf(11, a, loc=loc, scale=scale) # 0.3843
skewnorm.stats(a, loc=loc, scale=scale, moments="mvs") # mean 11.548, var 1.603, skew 0.784
params = skewnorm.fit(data) # estimate (a, loc, scale) from a sample
The commented values are the output for the example parameters. For more on the library, see SciPy Stats functions for research.
FAQ
Is “skew normal distribution” the same as “skew-normal distribution”?
Yes. The hyphenated form is the usual written form; both names refer to the same family studied by Azzalini.
What does alpha equal to zero mean?
The skew-normal reduces to the normal distribution. The factor Φ(αx) becomes 0.5 and the density collapses to φ(x).
Does a negative alpha work?
Yes. It mirrors the distribution, giving a long left tail with the same magnitude of skewness.
How skewed can a skew-normal distribution be?
Its skewness is bounded at roughly ±0.9953 (the limit as α grows), so it suits moderately skewed data only.
Sources
- Azzalini, A. (1985). A class of distributions which includes the normal ones. Scandinavian Journal of Statistics, 12, 171-178.
- Azzalini, A. (1985) is also summarised at https://en.wikipedia.org/wiki/Skew_normal_distribution (checked 2026-10-29), which lists the mean, variance and skewness formulas used above.
- Azzalini, A., with Capitanio, A. (2014). The Skew-Normal and Related Families. Cambridge University Press (IMS Monographs).
- R package sn, reference manual v2.1.3, CRAN: https://cran.r-project.org/web/packages/sn/index.html (checked 2026-10-29).
- SciPy documentation, https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.skewnorm.html (checked 2026-10-29).







