# ANOVA comparison workspace

- Human page: https://happytails.ai/en/calculators/anova-comparison-workspace/
- Markdown: https://happytails.ai/en/calculators/anova-comparison-workspace.md
- Structured JSON: https://happytails.ai/agents/en/calculators/anova-comparison-workspace/index.json
- Visibility: public

## Tool capabilities

| Property | Value |
| --- | --- |
| Tool ID | `anova-comparison-workspace` |
| Category | calculators |
| Implementation | Registered implementation. Registration alone is not a production-quality guarantee. |
| Browser execution | Use the visible action or interactive controls. |
| Browser processing | Browser; see tool notes for network behavior. |
| HTTP API | Not callable through HTTP. |
| Browser-agent interface | run_current_tool |

### Implementation notes

Runs on your device in the background. Paste up to 1,000,000 characters of CSV with up to 10,000 rows and 20 groups.

### Inputs and settings

Text input: CSV data.

Example or placeholder shown in the interface (not a validated fixture):

```text
group,value
```

Paste one row per observation with a group column and a numeric value column. Up to 1,000,000 characters. Review the settings before running.

| Setting | Meaning | Control type | Default | Constraints |
| --- | --- | --- | --- | --- |
| `data` | Data | select | "raw" | Allowed: raw, summary |
| `groupColumn` | Group column | text | "group" |  |
| `valueColumn` | Value column | text | "value" |  |
| `factorColumn` | Second factor column (optional) | text | "" |  |
| `ssType` | Sums of squares for two-way ANOVA | select | "II" | Allowed: II, III |
| `posthoc` | Follow-up comparisons | select | "tukey" | Allowed: tukey, games-howell, pairwise-t |
| `adjust` | p-value adjustment for pairwise t tests | select | "Holm" | Allowed: Holm, Bonferroni |
| `confidence` | Confidence level | text | "0.95" |  |
| `missing` | Blank cells | select | "reject" | Allowed: reject, drop |

### Browser-agent workflow

1. Open the human page in a browser that supports WebMCP.
2. Discover the interface exposed by that page; use its actual schema.
3. Select files on the page first when the tool requires files.
4. Call `run_current_tool` with valid input and settings.
5. Inspect the returned result or error and the displayed output. Retrieve files from the displayed download links.

Calls do not automatically copy or download results. Browser permissions still apply. Interface availability alone is not proof of successful execution.

### Planning specification

Runs locally in your browser in a background worker; nothing is uploaded. CSV up to 1,000,000 characters and 10,000 data rows, 2 to 20 groups with at least 2 observations each and group names of at most 80 characters. Summary CSV headers are group,n,mean,sd. Two-way ANOVA needs raw data and at most 20 levels per factor. Confidence level 0.5 to 0.9999. Setting numbers are plain decimals with a digit before the point, such as 0.95, without exponents. In CSV with two or more columns a blank line between rows is rejected, and in one-column CSV it is a blank cell; blank lines after the last row are ignored. Downloads: a JSON report, CSV tables (ANOVA, pairwise comparisons, groups, checks, residuals and QQ points) and SVG charts.

This describes intended requirements. Use the implementation notes, interface schema and observed output to determine current support.

### Complete machine-readable capability record

```json
{
  "id": "anova-comparison-workspace",
  "category": "calculators",
  "built": true,
  "requirements": "Runs locally in your browser in a background worker; nothing is uploaded. CSV up to 1,000,000 characters and 10,000 data rows, 2 to 20 groups with at least 2 observations each and group names of at most 80 characters. Summary CSV headers are group,n,mean,sd. Two-way ANOVA needs raw data and at most 20 levels per factor. Confidence level 0.5 to 0.9999. Setting numbers are plain decimals with a digit before the point, such as 0.95, without exponents. In CSV with two or more columns a blank line between rows is rejected, and in one-column CSV it is a blank cell; blank lines after the last row are ignored. Downloads: a JSON report, CSV tables (ANOVA, pairwise comparisons, groups, checks, residuals and QQ points) and SVG charts.",
  "implementation": {
    "fields": [
      {
        "key": "data",
        "label": "Data",
        "value": "raw",
        "type": "select",
        "values": [
          "raw",
          "summary"
        ],
        "labels": {
          "raw": "Raw values in CSV",
          "summary": "Summary CSV with group, n, mean and sd"
        }
      },
      {
        "key": "groupColumn",
        "label": "Group column",
        "value": "group",
        "type": "text",
        "maxLength": 200,
        "help": "Exact header of the column that names the groups (2 to 20).",
        "showWhen": {
          "data": [
            "raw"
          ]
        }
      },
      {
        "key": "valueColumn",
        "label": "Value column",
        "value": "value",
        "type": "text",
        "maxLength": 200,
        "help": "Exact header of the numeric outcome column.",
        "showWhen": {
          "data": [
            "raw"
          ]
        }
      },
      {
        "key": "factorColumn",
        "label": "Second factor column (optional)",
        "value": "",
        "type": "text",
        "maxLength": 200,
        "help": "Leave blank for one-way ANOVA. Name a second grouping column for a two-way ANOVA with interaction.",
        "showWhen": {
          "data": [
            "raw"
          ]
        }
      },
      {
        "key": "ssType",
        "label": "Sums of squares for two-way ANOVA",
        "value": "II",
        "type": "select",
        "values": [
          "II",
          "III"
        ],
        "labels": {
          "II": "Type II",
          "III": "Type III"
        },
        "showWhen": {
          "data": [
            "raw"
          ]
        }
      },
      {
        "key": "posthoc",
        "label": "Follow-up comparisons",
        "value": "tukey",
        "type": "select",
        "values": [
          "tukey",
          "games-howell",
          "pairwise-t"
        ],
        "labels": {
          "tukey": "Tukey HSD (equal variances)",
          "games-howell": "Games-Howell (unequal variances)",
          "pairwise-t": "Pairwise t tests with adjusted p-values"
        }
      },
      {
        "key": "adjust",
        "label": "p-value adjustment for pairwise t tests",
        "value": "Holm",
        "type": "select",
        "values": [
          "Holm",
          "Bonferroni"
        ],
        "showWhen": {
          "posthoc": [
            "pairwise-t"
          ]
        }
      },
      {
        "key": "confidence",
        "label": "Confidence level",
        "value": "0.95",
        "type": "text",
        "maxLength": 200,
        "help": "A proportion from 0.5 to 0.9999 for the simultaneous intervals."
      },
      {
        "key": "missing",
        "label": "Blank cells",
        "value": "reject",
        "type": "select",
        "values": [
          "reject",
          "drop"
        ],
        "labels": {
          "reject": "Stop and show an error",
          "drop": "Drop incomplete rows"
        },
        "showWhen": {
          "data": [
            "raw"
          ]
        }
      }
    ],
    "registrationFamily": "statistical-comparison-tests",
    "inputMaxLength": 1000000,
    "inputErrorCode": "STATISTICAL_COMPARISON_TESTS_TOO_LONG",
    "note": "Runs on your device in the background. Paste up to 1,000,000 characters of CSV with up to 10,000 rows and 20 groups.",
    "experience": {
      "automatic": false,
      "single": false,
      "inputMaxLength": 1000000,
      "inputMode": "text",
      "label": "CSV data",
      "placeholder": "group,value",
      "help": "Paste one row per observation with a group column and a numeric value column. Up to 1,000,000 characters. Review the settings before running.",
      "action": null
    },
    "mode": "explicit",
    "interactive": false
  },
  "execution": "Browser interface",
  "api": null,
  "browser_agent": {
    "supported": true,
    "name": "run_current_tool",
    "discovery": "WebMCP on the human page in a supporting browser",
    "verification": "See audit/API-AUDIT.md; availability is not verification"
  }
}
```

## Page guide

Compare 2 to 20 group means with one-way ANOVA, Welch's ANOVA and Tukey, Games-Howell or adjusted pairwise follow-up comparisons, or run a two-way ANOVA with Type II or Type III sums of squares.

How can we improve this tool?

Report a problem or share an idea.

Please leave out private information. Your message and the tool name go to our team via PostHog.

### How to use ANOVA comparison workspace

1. Paste long-format CSV with one row per observation, or a summary CSV with group,n,mean,sd.
2. Name the group and value columns, and a second factor column if you want a two-way ANOVA.
3. Choose the follow-up comparisons and the confidence level.
4. Run the analysis, check the variance tests and residual QQ chart, and download the report.

## Useful next steps

- [Multiple testing correction](https://happytails.ai/en/calculators/multiple-testing-correction/) ([Markdown](https://happytails.ai/en/calculators/multiple-testing-correction.md))

- [Pooled summary statistics](https://happytails.ai/en/calculators/pooled-summary-statistics/) ([Markdown](https://happytails.ai/en/calculators/pooled-summary-statistics.md))

- [Confidence interval calculator](https://happytails.ai/en/calculators/confidence-interval-calculator/) ([Markdown](https://happytails.ai/en/calculators/confidence-interval-calculator.md))

## One-way ANOVA

The F test compares the variance between group means with the variance within groups. Eta squared and omega squared describe the share of variance explained. Welch's ANOVA (Welch 1951, Biometrika 38:330) is reported beside it because it does not assume equal variances. Levene's test and the Brown-Forsythe test (Brown and Forsythe 1974, JASA 69:364) check the spread; both are left out when every group is constant or holds two values equally often (for example two values per group), because the absolute deviations then do not vary within groups and the tests are undefined. Residuals are shown on a normal QQ chart.

### Follow-up comparisons

Tukey HSD uses the studentized range with the Tukey-Kramer standard error for unequal sizes (Tukey 1953; Kramer 1956, Biometrics 12:307). Games-Howell uses separate variances and Welch degrees of freedom (Games and Howell 1976, Journal of Educational Statistics 1:113). Both give simultaneous confidence intervals. Pairwise t tests use the pooled variance with Holm (Holm 1979, Scandinavian Journal of Statistics 6:65) or Bonferroni adjusted p-values. Differences are listed as later group minus earlier group, as in R TukeyHSD.

### Two-way ANOVA

With a second factor the model includes both main effects and their interaction, using sum-to-zero coding. In unbalanced designs Type II and Type III sums of squares answer different questions and can disagree (Langsrud 2003, Statistics and Computing 13:163), so the chosen type is labelled. Empty cells cannot be fitted with an interaction.

### Limits

ANOVA assumes independent observations. With very unequal variances and sizes, prefer Welch's ANOVA with Games-Howell comparisons. Repeated measures are not supported; use the Friedman test in the nonparametric workspace.
