Excess kurtosis calculator
The values 1, 2, 3, 4 and 5 give an excess kurtosis of −1.3, flatter than the normal reference at 0. Positive results mean extreme values weigh more than under a normal curve, negative ones that they weigh less. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Values
- 1, 2, 3, 4, 5
- Quantity
- 5
- Mean
- 3
- Standard deviation
- 1.4142135624
- Fourth central moment
- 6.8
Excess kurtosis describes how strongly a distribution concentrates observations in its center and tails compared with the normal-distribution reference point. This calculator accepts a non-empty array of finite numbers, computes the population mean and central moments, and returns the standardized fourth central moment minus three. A result of zero matches the normal reference, a positive result indicates greater fourth-moment weight, and a negative result indicates less. The calculation is deterministic, runs without network access, and reports an input error when every value is identical because the standard deviation is then zero and standardization is undefined.
What excess kurtosis measures
Excess kurtosis is a dimensionless description of distribution shape based on fourth powers of distances from the mean. First, the calculator finds the population mean of the supplied values. It then computes the second central moment by averaging squared deviations and the fourth central moment by averaging deviations raised to the fourth power.
Dividing the fourth central moment by the square of the second central moment produces standardized kurtosis. Subtracting three changes the reference point so that a normal distribution has theoretical excess kurtosis zero. Positive values are often called leptokurtic and indicate that extreme deviations contribute more strongly than under the normal reference.
Negative values are often called platykurtic and indicate less fourth-moment weight. This statistic does not identify why a result is high: one distant observation, several moderately distant observations, or a sharply concentrated center can all affect it. Interpret it alongside the original observations, sample size, and a visualization rather than treating it as a complete test of normality or a direct probability of future outliers.
How the calculator processes an array
The array must contain at least one item and may contain no more than one hundred thousand items. Every entry is validated before calculation; strings, null values, infinities, and NaN-like values are rejected instead of being silently converted or omitted. The response includes the item count, arithmetic mean, population standard deviation, fourth central moment, and excess kurtosis.
Population moments divide by n, not by n minus one, and no small-sample bias correction is applied. This choice follows the capability definition exactly: standardized fourth central moment minus three. Because the formula divides by the squared second central moment, a constant array has no defined answer.
Reading results and avoiding common mistakes
Begin with the sign and magnitude, but keep the scale of the data and the number of observations in view. Excess kurtosis is unchanged when every value is shifted by a constant or multiplied by a nonzero scale factor, which makes results comparable across units such as meters and centimeters. It is not resistant to unusual observations: fourth powers amplify large deviations, so one data-entry mistake can dominate the answer.
Check suspicious values before drawing conclusions. Also distinguish this population-moment result from bias-corrected sample excess kurtosis offered by some spreadsheets and statistical packages. Those estimators use factors involving n, n minus one, n minus two, and n minus three, and they may disagree noticeably on short arrays even though both outputs are labeled kurtosis.
This capability intentionally returns the direct empirical fourth central moment divided by the squared empirical second central moment, minus three. Use it for deterministic feature engineering, classroom demonstrations of moment definitions, quick distribution comparisons, and validation of code that implements the population formula. Do not use a value near zero by itself as proof that data are normally distributed.
What you can do with it
Validate a statistics implementation
Compare a program’s population excess-kurtosis output with a deterministic reference calculation.
Screen measurement batches
Track changes in fourth-moment weight across batches while reviewing unusual observations separately.
Build distribution features
Add population excess kurtosis to a reproducible numeric feature pipeline without installing a statistics package.
FAQ
What formula does this calculator use?
It computes the fourth population central moment divided by the square of the second population central moment, then subtracts three.
Why is three subtracted?
Subtracting three makes the theoretical normal-distribution reference equal to zero instead of three.
Is this a bias-corrected sample estimator?
No. It is the direct standardized fourth central moment of the supplied empirical array, minus three.
Why does a constant array produce an error?
Its standard deviation is zero, so division by the squared second central moment is undefined.
Can one outlier dominate the excess kurtosis?
Yes. Distances from the mean are raised to the fourth power, so a single data-entry mistake can drive the whole result. Check suspicious values and look at a chart of the data before drawing conclusions.
Related tools
For developers — API access
Everything on this page is available programmatically. This section is for teams who want to wire it into their own systems; everyone else can just use the tool above.
API endpoint
Prefer to automate it? One authenticated POST creates the task; the result comes back by webhook or a signed link. The same capability also runs here on the web, by email and from Telegram — and soon from our app too.
Call it from your stack
curl -X POST https://api.kit.forhosting.com/stat/excess-kurtosis \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"values":[1,2,3,4,5]}'const res = await fetch("https://api.kit.forhosting.com/stat/excess-kurtosis", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"values": [
1,
2,
3,
4,
5
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/stat/excess-kurtosis",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"values": [
1,
2,
3,
4,
5
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/stat/excess-kurtosis", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"values":[1,2,3,4,5]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"values":[1,2,3,4,5]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/stat/excess-kurtosis", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"values": [
1,
2,
3,
4,
5
]
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "stat.excess_kurtosis",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}The API is asynchronous: the call returns a task_id immediately and the result arrives by webhook. Polling is capped at 1 req/s per task.
Pricing
Published price — no tokens, no invented credits. A failed task is never charged.
Limits
max_items | 100000 |
Errors
| HTTP | Code | Meaning |
|---|---|---|
401 | unauthorized | Missing or invalid API key. |
402 | insufficient_balance | Your balance doesn't cover the task price. |
404 | unknown_type | That task type doesn't exist. |
429 | rate_limited | Too many requests. Use the webhook instead of polling. |
Technical notes
How the calculator processes an array
Send the observations in the values field as a JSON array of finite numbers. The aliases numbers, data, and array are also accepted for transport compatibility, although values is the documented canonical field. The calculator reports invalid_input when its standard deviation is zero rather than returning NaN or infinity. Successful API requests use the published base price of $0.002; the browser implementation uses the same pure calculation logic.
Technical questions
How much does an API request cost?
A successful API request uses the published base price of $0.002. Invalid input is rejected without producing a statistic.