P-value from F statistic calculator
An F of 4 with 5 and 10 degrees of freedom has an upper-tail p-value just under 3%, so it is significant at the 5% level. Enter F and its two degrees of freedom; no printed table is needed. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- F
- 4
- Df1
- 5
- Df2
- 10
- P value
- 0.0296752952
- Tail
- upper
The F distribution is the reference law for many ratio-of-variance tests: one-way ANOVA, overall regression F tests, equality of two sample variances, and nested model comparisons. Once you have an observed F statistic and its numerator and denominator degrees of freedom, the practical question is almost always the same: how extreme is this ratio under the null? The upper-tail p-value answers that question in a single number between zero and one. This calculator takes only the classic triple—F, df1, and df2—and returns P(F greater than the observed value) using the regularized incomplete beta identity, with no tables to look up and no spreadsheet macros. Degrees of freedom below one are rejected, because those parameters fall outside the usual F family used in textbooks and software.
What the upper-tail F p-value means
Under a null hypothesis that two independent chi-square variances share the same scale, their ratio of mean squares follows an F law with numerator degrees of freedom equal to the first chi-square’s df and denominator degrees of freedom equal to the second. Large observed F values mean the numerator mean square is much larger than the denominator mean square, which is exactly the direction most classical tests care about: between-group variance larger than within-group variance, regression model larger than residual, or sample-one variance larger than sample-two variance.
The upper-tail p-value is the probability, under that null F distribution, of obtaining an F at least as large as the one you observed. A small p-value is evidence against the null in that one-sided sense; a large p-value means the observed ratio is ordinary for the stated degrees of freedom. Continuous degrees of freedom are allowed when they are at least one; fractional df appear in some Satterthwaite and Kenward–Roger approximations, and the incomplete-beta representation handles them the same way integer df are handled.
Where an F-statistic p-value calculator earns its keep
Introductory statistics and experimental design courses assign endless ANOVA and regression F drills: students compute the ratio of mean squares by hand, then need a reliable upper-tail probability without flipping through printed F tables that only list a few critical values. Applied researchers comparing two residual variances, or reading an F from a published ANOVA table that omitted the p-value, can recover the significance level from the reported statistic and degrees of freedom alone.
Quality engineers and process analysts who already have an F from a gauge study or a nested variance component model can map it to a p-value for reporting without opening desktop software. If you later need Tukey HSD pairwise tests after ANOVA, a full multi-factor design matrix, or a chi-square goodness-of-fit p-value, treat those as separate search intents and landings rather than overloading this single F-to-p-value page.
What you can do with it
ANOVA and regression F homework checks
Enter the observed F with numerator and denominator df from a one-way ANOVA or overall regression table to obtain the upper-tail p-value for write-ups and auto-graders.
Recover significance from a published F table
When a paper reports F and degrees of freedom but omits the p-value, recompute the upper-tail probability for meta-notes and secondary reporting.
Two-variance F tests in the lab
Convert a ratio of sample variances with known df into P(F > f) for equality-of-variance checks without printed critical-value tables.
FAQ
What p-value does this calculator return?
The upper-tail probability P(F > f) under the F distribution with the given numerator and denominator degrees of freedom, computed via the regularized incomplete beta function.
Does this tool run ANOVA on my raw data?
No. You supply an already-computed F statistic and its degrees of freedom. For building the full ANOVA table from observations, use a dedicated ANOVA or regression workflow instead.
What does the p-value from F statistic calculator cost?
The browser tool is free and runs locally.
Can the degrees of freedom be fractional?
Yes, as long as each one is at least one. Fractional degrees of freedom come from approximations such as Satterthwaite or Kenward–Roger and are handled the same way as whole numbers.
What does a large F value mean?
It means the mean square in the numerator is much larger than the one in the denominator, for example variation between groups compared with variation within them. Larger F values give smaller upper-tail p-values.
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/p-value-f \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"f":4,"df1":5,"df2":10}'const res = await fetch("https://api.kit.forhosting.com/stat/p-value-f", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"f": 4,
"df1": 5,
"df2": 10
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/stat/p-value-f",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"f": 4,
"df1": 5,
"df2": 10
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/stat/p-value-f", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"f":4,"df1":5,"df2":10}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"f":4,"df1":5,"df2":10}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/stat/p-value-f", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"f": 4,
"df1": 5,
"df2": 10
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "stat.p_value_f",
"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.
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
The free browser path and the paid API share one pure deterministic module, so homework checks, lab write-ups, and production scripts never disagree on the same inputs.
What the upper-tail F p-value means
This endpoint does not estimate F from raw data, does not run multi-factor ANOVA, and does not adjust for multiple comparisons—it only converts an already-computed F and its df into a precise upper-tail probability. That single-purpose contract keeps the request tiny, the arithmetic constant-time, and the JSON shape stable for widgets, auto-graders, and edge workers.
Input contract, response fields, and error behaviour
Negative F is rejected because an F statistic is a ratio of mean squares and cannot be negative on the classical support. Classic checks include F equals four with five and ten degrees of freedom, which yields a small p-value near three percent; and F equals one with one and one degrees of freedom, which yields one half. POST a JSON object with three finite numbers. The observed statistic is required as f, or as one of the aliases f_stat, f_statistic, or statistic—send only one of those names. Numerator degrees of freedom are required as df1, with accepted aliases df_num, df_numerator, and numerator_df. Denominator degrees of freedom are required as df2, with aliases df_den, df_denominator, and denominator_df. Each field may arrive as a JSON number or as a numeric string; missing fields, empty strings, NaN, and Infinity fail with invalid_input naming the problem and are not billed. On success the body echoes cleaned f, df1, and df2, returns p_value as the upper-tail probability rounded for stable cross-runtime goldens, sets tail to the string upper, and includes the formula string that documents the incomplete-beta identity used under the hood. Pair the free browser form for quick homework and demos with the identical API contract when you need scripted checks in LMS plugins or notebooks. Successful API calls cost the published base of $0.002 per item; validation failures do not consume prepaid balance.
Where an F-statistic p-value calculator earns its keep
A deterministic oracle that returns cleaned JSON speeds grading, demo setup, and student self-check without a full statistical package.
Technical questions
What happens if a degree of freedom is below one?
The request fails with invalid_input. This capability requires df1 ≥ 1 and df2 ≥ 1; fractional values are allowed only when they are still at least one.
Which fields do I need to send?
Send finite numbers for f (or f_stat / f_statistic / statistic), df1 (or df_num / df_numerator / numerator_df), and df2 (or df_den / df_denominator / denominator_df). Provide only one name for each quantity.