Omega squared calculator
The omega squared calculator turns the summary values from an analysis of variance into a less biased estimate of effect size.
Run — free
Enter the effect sum of squares, total sum of squares, effect degrees of freedom, and residual mean square error. The result estimates the proportion of variance in the population attributable to the tested factor, while correcting the upward bias that can make a sample-based effect look stronger than it is. The calculation is deterministic, immediate, and suitable for checking reported ANOVA results or automating a statistical workflow.
What omega squared tells you
Omega squared is an ANOVA effect-size measure intended to estimate how much of the population variance is associated with the effect under study. A significance test answers whether the observed group differences would be surprising under a null model, but it does not say whether those differences are substantial. Omega squared addresses that second question. Unlike a direct ratio based only on the effect and total sums of squares, it subtracts a correction based on the effect degrees of freedom and the residual mean square error. That correction generally makes omega squared less positively biased than eta squared in finite samples. Use the estimate alongside the ANOVA table, confidence intervals where available, subject-matter knowledge, and the study design. A larger value indicates that the factor accounts for a larger share of variation under the model, but no universal threshold can determine whether an effect is important. Context, measurement reliability, sample composition, and practical consequences still control interpretation. The calculator reports the signed estimate rather than silently forcing a negative estimate to zero, preserving the result of the stated formula.
How to enter the ANOVA summary values
Copy four quantities from the same ANOVA table. The effect sum of squares is the row for the factor or term whose effect size you want. The total sum of squares is the total variability used by that analysis, not the residual sum of squares. The effect degrees of freedom come from the same factor row, and the mean square error is the residual or within-groups mean square. Keep all sums of squares on the same scale and do not substitute a standard error, root mean square error, or the effect mean square for the residual mean square error. The calculator evaluates omega squared as the effect sum of squares minus the product of effect degrees of freedom and mean square error, divided by the total sum of squares plus mean square error. Sums of squares and mean square error must be nonnegative, the effect degrees of freedom must be a positive integer, and every input must be finite. A zero total sum of squares is rejected because the data contain no total variation from which a meaningful effect-size proportion can be estimated.
Interpret the output and avoid common reporting mistakes
The output includes omega squared and the corrected numerator and denominator, making the arithmetic easy to audit against a report or spreadsheet. Values near zero indicate little estimated variance attributable to the effect after the bias correction. A negative result can occur when the observed effect sum of squares is smaller than the correction term. It does not mean that the factor literally explains negative variance; it indicates that the estimated population effect is effectively very small and that sampling noise dominates this correction. Some reporting conventions replace negative estimates with zero, but this calculator leaves the mathematical estimate unchanged so downstream users can choose and document their own convention. Report the statistic with the relevant factor, ANOVA design, degrees of freedom, and enough precision to reproduce the result. Do not mix omega squared with partial omega squared without stating which definition you used, especially in factorial or repeated-measures designs where denominators may differ. This calculator implements the standard summary-table formula using total sum of squares and residual mean square error; confirm that this definition matches the method required by your discipline or publication.
What you can do with it
Add an effect size to an ANOVA report
Convert published ANOVA summary values into a less biased estimate of the variance associated with a factor.
Audit a paper or spreadsheet
Reproduce omega squared from the reported sums of squares, degrees of freedom, and residual mean square error.
Automate statistical reporting
Calculate a consistent effect-size field from ANOVA table exports in a deterministic API workflow.
FAQ
What formula does this calculator use?
It uses (SS effect − df effect × MSE) / (SS total + MSE), with all quantities taken from the same ANOVA.
Why use omega squared instead of eta squared?
Omega squared applies a correction using residual error and effect degrees of freedom, so it is generally less positively biased as an estimate of population effect size.
Can omega squared be negative?
Yes. The correction can make the estimate negative when the observed effect is small. The calculator preserves that value instead of silently clamping it to zero.
Which mean square belongs in the input?
Use the residual or within-groups mean square error from the ANOVA table, not the effect mean square or a standard error.
Why is a zero total sum of squares rejected?
A zero total means there is no observed total variation, so an effect-size proportion of total variance is not meaningful.
What does the API request cost?
Each API request costs $0.002; the browser calculation on this page is free.
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/omega-squared \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"ss_effect":30,"ss_total":100,"df_effect":2,"mean_square_error":10}'const res = await fetch("https://api.kit.forhosting.com/stat/omega-squared", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"ss_effect": 30,
"ss_total": 100,
"df_effect": 2,
"mean_square_error": 10
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/stat/omega-squared",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"ss_effect": 30,
"ss_total": 100,
"df_effect": 2,
"mean_square_error": 10
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/stat/omega-squared", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"ss_effect":30,"ss_total":100,"df_effect":2,"mean_square_error":10}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"ss_effect":30,"ss_total":100,"df_effect":2,"mean_square_error":10}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/stat/omega-squared", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"ss_effect": 30,
"ss_total": 100,
"df_effect": 2,
"mean_square_error": 10
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "stat.omega_squared",
"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. |