Kurtosis
Details
- Kurtosis measures the concentration of data around the peak and in the tails versus the concentration in the flanks.
- Kurtosis[…] is equivalent to CentralMoment[…,4]/CentralMoment[…,2]2.
- A normal distribution has kurtosis
equal to 3. In comparing shapes with normal we have: -

more flat than normal, platykurtic 
like normal, mesokurtic 
more peaked than normal, leptokurtic - Kurtosis[{{x1,y1,…},{x2,y2,…},…}] gives {Kurtosis[{x1,x2,…}],Kurtosis[{y1,y2,…}],…}.
- Kurtosis handles both numerical and symbolic data.
- The data can have the following additional forms and interpretations:
-
Association the values (the keys are ignored) » SparseArray as an array, equivalent to Normal[data] » QuantityArray quantities as an array » WeightedData weighted mean, based on the underlying EmpiricalDistribution » EventData based on the underlying SurvivalDistribution » TimeSeries, TemporalData, … vector or array of values (the time stamps ignored) » Image,Image3D RGB channel's values or grayscale intensity value » Audio amplitude values of all channels » DateObject, TimeObject list of dates or list of times - For a random process proc, the kurtosis function can be computed for slice distribution at time t, SliceDistribution[proc,t], as β[t]=Kurtosis[SliceDistribution[proc,t]]. »
Examples
open all close allBasic Examples (4)
Scope (23)
Basic Uses (7)
Exact input yields exact output:
Kurtosis[{1, 7, 3, 4}]Kurtosis[{π, E, 2}]//TogetherApproximate input yields approximate output:
Kurtosis[{1., 7., 3., 4.}]Kurtosis[N[{1, 7, 3, 4}, 30]]Find the kurtosis of WeightedData:
Kurtosis[WeightedData[{1, 2, 3}, {Subscript[w, 1], Subscript[w, 2], Subscript[w, 3]}]]data = {8, 3, 5, 4, 9, 0, 4, 2, 2, 3};
weights = {0.15, 0.09, 0.12, 0.10, 0.16, 0., 0.11, 0.08, 0.08, 0.09};Kurtosis[WeightedData[data, weights]]Find the kurtosis of EventData:
e = {1.0, 2.1, 3.2, 4.5, 5.7};
ci = {0, 0, 0, 1, 0};Kurtosis[EventData[e, ci]]Find the kurtosis of TemporalData:
s1 = {2, 1, 6, 5, 7, 4};
s2 = {4, 7, 5, 2, 1, 2};
s3 = {3, 12, 2, 1, 6, 2};
t = {1, 2, 5, 10, 12, 15};td = TemporalData[{s1, s2, s3}, {t}];Kurtosis[td[10]]Find the kurtosis of TimeSeries:
Kurtosis[TemporalData[TimeSeries, {{{2.3, 1.2, 6.7, 5.8, 7.1, 4.6}}, {{0, 5, 1}}, 1, {"Discrete", 1},
{"Discrete", 1}, 1, {}}, False, 10.]]The kurtosis depends only on the values:
Kurtosis[TemporalData[TimeSeries, {{{2.3, 1.2, 6.7, 5.8, 7.1, 4.6}}, {{0, 5, 1}}, 1, {"Discrete", 1},
{"Discrete", 1}, 1, {}}, False, 10.]["Values"]]Find the kurtosis of data involving quantities:
data = Quantity[RandomReal[1, 6], "Meters"]Kurtosis[data]Array Data (5)
Kurtosis for a matrix gives columnwise kurtosis:
Kurtosis[{{1, 3, 4}, {4, 6, 1}, {12, 1, 6}}]//TogetherKurtosis[RandomReal[1, 10 ^ 7]]Kurtosis[RandomReal[1, {10 ^ 6, 5}]]When the input is an Association, Kurtosis works on its values:
mat = RandomReal[1, {3, 2}];assoc = AssociationThread[Range[3], mat]
Kurtosis[assoc]SparseArray data can be used just like dense arrays:
Kurtosis[SparseArray[{{1} -> 1, {100} -> 1}]]Kurtosis[SparseArray[{{1, 1} -> 1, {2, 2} -> 2, {3, 3} -> 3, {1, 3} -> 4}]]Find the kurtosis of a QuantityArray:
data = QuantityArray[RandomReal[1, 6], "Pounds"]Kurtosis[data]Image and Audio Data (2)
Channelwise kurtosis value of an RGB image:
Kurtosis[[image]]Mean intensity value of a grayscale image:
Kurtosis[[image]]On audio objects, Kurtosis works channelwise:
a = ExampleData[{"Audio", "Bee"}]AudioMeasurements[a, "Channels"]Kurtosis[a]Date and Time (5)
dates = WolframLanguageData[All, "DateIntroduced"];DateHistogram[dates]Kurtosis[dates]Compute the weighted kurtosis of dates:
dates = RandomDate[4]weights = {1, 1, 1, 3};Kurtosis[WeightedData[dates, weights]]Compute the kurtosis of dates given in different calendars:
dates = {DateObject[{2024, 2, 29}, CalendarType -> "Julian"], DateObject[{1524, 1, 1}, CalendarType -> "Islamic"], DateObject[{6024, 1, 15}, CalendarType -> "Jewish"]}Kurtosis[dates]Compute the kurtosis of times:
times = RandomTime[3]Kurtosis[times]Compute the kurtosis of times with different time zone specifications:
times = {TimeObject[{12}, TimeZone -> 0], TimeObject[{12}, TimeZone -> 2], TimeObject[{12}, TimeZone -> "Asia/Tokyo"]}Kurtosis[times]Distributions and Processes (4)
Find the kurtosis for univariate distributions:
Kurtosis[BinomialDistribution[n, p]]Kurtosis[ExponentialDistribution[μ]]Kurtosis[DirichletDistribution[{1, 2, c}]]Kurtosis for derived distributions:
Kurtosis[TransformedDistribution[x^2, xNormalDistribution[μ, σ]]]Kurtosis[ProbabilityDistribution[8x ^ 7 / 255, {x, 1, 2}]]data = RandomVariate[NormalDistribution[], 10 ^ 3];Kurtosis[HistogramDistribution[data]]Kurtosis for distributions with quantities:
Kurtosis[QuantityDistribution[MaxwellDistribution[σ], "Meters" / "Seconds"]]Kurtosis[EmpiricalDistribution[QuantityArray[RandomChoice[{0, 5}, 1000], "Volts"]]]Kurtosis function for a random process:
Kurtosis[PoissonProcess[μ][t]]Plot[Evaluate[% /. {μ -> 2}], {t, 0, 7}]Applications (6)
Normal distributions have Kurtosis value 3:
Kurtosis[NormalDistribution[μ, σ]]Plot[PDF[NormalDistribution[], x], {x, -3, 3}, Filling -> Axis]Leptokurtic distributions have kurtosis greater than 3:
Kurtosis[StudentTDistribution[μ, σ, 5]]Kurtosis[LaplaceDistribution[μ, β]]Kurtosis[ExtremeValueDistribution[α, β]]//NPlatykurtic distributions have kurtosis less than 3:
Kurtosis[GompertzMakehamDistribution[a, .2]]//NKurtosis[BinomialDistribution[10, 1 / 3]]//NThe limiting distribution for BinomialDistribution as
is normal:
{μ, σ} = {Mean[BinomialDistribution[n, p]], StandardDeviation[BinomialDistribution[n, p]]}Block[{p = 1 / 3},
Table[Show[DiscretePlot[PDF[BinomialDistribution[n, p], k], {k, Ceiling[μ - 2σ], Floor[μ + 2σ]}, PlotRange -> {{μ - 3σ, μ + 2σ}, All}, AxesOrigin -> {μ - 3σ, 0}], Plot[PDF[NormalDistribution[μ, σ], x], {x, μ - 2σ, μ + 2σ}], Ticks -> {{{μ - 2σ, HoldForm[μ - 2σ]}, {μ, HoldForm[μ]}, {μ + 2σ, HoldForm[μ + 2σ]}}, Automatic}, PlotRange -> {{μ - 3σ, μ + 2σ}, All}, PlotLabel -> Row[{"n = ", n}]], {n, r = {5, 25, 50, 100}}]]The limiting value of the kurtosis is 3:
N[Kurtosis[BinomialDistribution[#, 1 / 3]]]& /@ rBy the central limit theorem, kurtosis of normalized sums of random variables will converge to 3:
sum[n_Integer] := TransformedDistribution[Total[Array[x, n]], Array[x, n]ProductDistribution[{GammaDistribution[1 / 3, 4], n}]]Table[Kurtosis[sum[n]], {n, 1, 400, 20}]//NDefine a Pearson distribution with zero mean and unit variance, parameterized by skewness and kurtosis:
stPearson[t_, β1_, β2_] = PearsonDistribution[t, 2 (9 + 6 β1 - 5 β2), -Sqrt[β1] (3 + β2), 6 + 3 β1 - 2 β2, -Sqrt[β1] (3 + β2), 3β1 - 4 β2];Obtain parameter inequalities for Pearson types 1, 4, and 6:
RegionFunc[β1_, β2_] = Table[Tooltip[Reduce[β2 > β1 + 1 && DistributionParameterAssumptions[stPearson[t, β1, β2]], {β1, β2}, Reals], Row[{Text["type -> "], t}]], {t, {1, 4, 6}}]The region plot for Pearson types depending on the values of skewness and kurtosis:
PearsonDiagram[data_List] := Module[{gr, sβ1, sβ2, β1, β2},
sβ1 = Skewness[data] ^ 2;
sβ2 = Kurtosis[data];
gr = Show[
RegionPlot[RegionFunc[β1, β2]//Evaluate, {β1, 0, Max[10, Ceiling[1.1 * sβ1, 5]]}, {β2, 0, Max[10, Ceiling[1.1 * sβ2, 5]]}, PlotPoints -> 50, Epilog -> {PointSize[0.02], Red, Point[{sβ1, sβ2}]}]
]
]Generate a random sample from a ParetoDistribution:
BlockRandom[SeedRandom[2010];
vec = RandomVariate[ParetoDistribution[2, 12.3], 10 ^ 5];]Determine the type of PearsonDistribution with moments matching the sample moments:
PearsonDiagram[vec]This time series contains the number of steps taken daily by a person during a period of five months:
stepdata = TemporalData[TimeSeries, {{{10785, 11753, 7092, 5290, 5022, 7438, 13386, 11195, 12499, 12495,
12004, 11833, 4097, 14270, 10280, 11947, 12699, 15634, 12332, 8399, 4680, 10034, 9173, 5309,
9552, 5605, 13294, 7600, 2417, 0, 1315, 9066, 11624 ... 1, 9618, 21243, 22273, 15869, 17687, 9263,
21162, 14724, 6386}}, {TemporalData`DateSpecification[{2013, 4, 1, 0, 0, 0.},
{2013, 9, 1, 0, 0, 0.}, {1, "Day"}]}, 1, {"Discrete", 1}, {"Discrete", 1}, 1,
{ValueDimensions -> 1}}, True, 10.];DateListPlot[stepdata, Joined -> False, Filling -> 0]m = Mean[stepdata]//FloorAnalyze the kurtosis as an indication of consistency of daily steps taken:
Kurtosis[stepdata]//NThe histogram of the frequency of daily counts shows that distribution is mesokurtic:
highlightbar[{{x0_, x1_}, {y0_, y1_}}, d_, meta___] := {If[x0 ≤ First[meta] < x1, Red, {}], Rectangle[{x0, y0}, {x1, y1}]}Histogram[stepdata -> m, 20, ChartElementFunction -> highlightbar, Ticks -> {{{m, "Mean", {0, .025}}}}]Find the skewness for the heights of the children in a class:
heights = Quantity[{134, 143, 131, 140, 145, 136, 131, 136, 143, 136, 133, 145, 147,
150, 150, 146, 137, 143, 132, 142, 145, 136, 144, 135, 141}, "Centimeters"];ListPlot[heights, Filling -> Axis, AxesLabel -> Automatic]Kurtosis larger than 3 would indicate a distribution highly concentrated around the mean:
Kurtosis[heights]//NProperties & Relations (5)
Kurtosis for data can be computed from CentralMoment:
data = RandomReal[10, 20];Kurtosis[data]CentralMoment[data, 4] / CentralMoment[data, 2] ^ 2Kurtosis for a distribution can be computed from CentralMoment:
dist = GeometricDistribution[p];ev = (CentralMoment[dist, 4]/CentralMoment[dist, 2]^2)//Simplifyks = Kurtosis[dist]Simplify[ks == ev]Kurtosis is bounded from below by 1, as
:
Kurtosis[BernoulliDistribution[p]]Minimize[{%, 0 < p < 1}, p]Normal distributions have Kurtosis value 3:
Kurtosis[NormalDistribution[μ, σ]]Approximately normal distributions have Kurtosis values near 3:
dist = BinomialDistribution[10 ^ 3, .5];Kurtosis[dist]Plot the PDF for the distribution:
ListPlot[Table[{k, PDF[dist, k]}, {k, 450, 550}], Filling -> Axis]Plot the PDF for the normal approximation:
Plot[PDF[NormalDistribution[500, 5 * Sqrt[10]], x], {x, 450, 550}]Possible Issues (2)
Kurtosis coefficient is sometimes confused with excess kurtosis coefficient:
ExcessKurtosis[inp_] := Kurtosis[inp] - 3The excess kurtosis vanishes for NormalDistribution:
ExcessKurtosis[NormalDistribution[μ, σ]]Excess kurtosis is defined as Cumulant[dist,4]/Cumulant[dist,2]^2:
𝒟 = GammaDistribution[α, β];
ExcessKurtosis[𝒟] == Cumulant[𝒟, 4] / Cumulant[𝒟, 2] ^ 2Kurtosis may be undefined for data:
data = Table[1, 10]Kurtosis[data]Kurtosis may be undefined for a distribution:
Kurtosis[CauchyDistribution[]]Neat Examples (1)
The distribution of Kurtosis estimates for 20, 100, and 300 samples:
Kurtosis[ExponentialDistribution[0.9]]SmoothHistogram[Table[Kurtosis[RandomVariate[ExponentialDistribution[0.9], {s, 1000}]], {s, {20, 100, 300}}], Filling -> Axis, PlotLegends -> {20, 100, 300}, PlotRange -> {{0, 15}, Automatic}]Tech Notes
Text
Wolfram Research (2007), Kurtosis, Wolfram Language function, https://reference.wolfram.com/language/ref/Kurtosis.html (updated 2024).
CMS
Wolfram Language. 2007. "Kurtosis." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2024. https://reference.wolfram.com/language/ref/Kurtosis.html.
APA
Wolfram Language. (2007). Kurtosis. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/Kurtosis.html
BibTeX
@misc{reference.wolfram_2026_kurtosis, author="Wolfram Research", title="{Kurtosis}", year="2024", howpublished="\url{https://reference.wolfram.com/language/ref/Kurtosis.html}", note=[Accessed: 12-June-2026]}
BibLaTeX
@online{reference.wolfram_2026_kurtosis, organization={Wolfram Research}, title={Kurtosis}, year={2024}, url={https://reference.wolfram.com/language/ref/Kurtosis.html}, note=[Accessed: 12-June-2026]}