All examples · Example 11 of 34
Bar Chart: ELISA Results
Cytokine concentrations (pg/mL) in control and LPS-stimulated cultures; bars show mean ± SEM with individual wells (n = 6).

Key findings
- Two-way ANOVA: treatment F = 198.5 (p = 9.1 × 10⁻¹⁵), and a strong cytokine × treatment interaction (p = 6.8 × 10⁻¹⁰) — LPS does not raise every cytokine equally.
- Within cytokines, all three increases survive Benjamini–Hochberg correction; the largest is IL-6 (Hedges' g = -6.86).
Descriptive statistics
Location, spread and shape for every group — the first thing to read before choosing a test. Skewness near 0 and excess kurtosis near 0 are what a normal distribution looks like.
| Group | n | Mean | SD | SEM | Median | Q1 – Q3 | Min – Max | Skewness | Excess kurtosis |
|---|---|---|---|---|---|---|---|---|---|
| IL-6 · Control | 6 | 46.23 | 9.667 | 3.947 | 44.25 | 40.33 – 46.22 | 38.2 – 64.8 | 1.84 | 3.78 |
| IL-6 · LPS | 6 | 303.8 | 48.09 | 19.63 | 300.1 | 261 – 348.4 | 256.4 – 354.1 | 0.0654 | -3.08 |
| TNF-α · Control | 6 | 59.33 | 8.669 | 3.539 | 59.75 | 51.47 – 66.15 | 49.9 – 69.6 | -0.0175 | -2.57 |
| TNF-α · LPS | 6 | 205.3 | 51.61 | 21.07 | 191.6 | 176.7 – 236.2 | 142.5 – 283.3 | 0.573 | -0.63 |
| IL-10 · Control | 6 | 83.62 | 13.27 | 5.416 | 86.6 | 73.47 – 94.62 | 65.7 – 96.4 | -0.388 | -2.21 |
| IL-10 · LPS | 6 | 104.6 | 11.3 | 4.613 | 102.8 | 97.5 – 114.8 | 90.2 – 117.4 | 0.0817 | -1.96 |
LabTools call
stats.describelabtools stats describe --groups @groups.json
The same method is available as an MCP tool (stats_describe) and from the desktop app's statistics panel.
Normality
Three tests of the same question — could these values come from a normal distribution? Shapiro–Wilk has the best power at bench sample sizes, Anderson–Darling is more sensitive in the tails, and Kolmogorov–Smirnov (Lilliefors-corrected) is included for comparability with older papers. A significant p means normality is rejected.
| Group | n | Shapiro–Wilk W | p | K–S D | p | Verdict |
|---|---|---|---|---|---|---|
| IL-6 · Control | 6 | 0.7966 | 0.055 | 0.3306 | 0.039 | Normality rejected |
| IL-6 · LPS | 6 | 0.7832 | 0.041 | 0.2862 | 0.13 | Normality rejected |
| TNF-α · Control | 6 | 0.8728 | 0.24 | 0.2244 | 0.45 | Consistent with normal |
| TNF-α · LPS | 6 | 0.9535 | 0.77 | 0.1968 | 0.66 | Consistent with normal |
| IL-10 · Control | 6 | 0.8643 | 0.20 | 0.2786 | 0.15 | Consistent with normal |
| IL-10 · LPS | 6 | 0.8971 | 0.36 | 0.2273 | 0.43 | Consistent with normal |
LabTools calls (2)
stats.normalitylabtools stats normality --groups @groups.json --method shapiro-wilk
stats.normalitylabtools stats normality --groups @groups.json --method kolmogorov-smirnov
The same method is available as an MCP tool (stats_normality) and from the desktop app's statistics panel.
LabTools notes
- Group 'IL-10 · Control' has n = 6; normality screening has very low power at this size, so a non-significant Shapiro–Wilk is weak evidence of normality.
- Group 'IL-10 · LPS' has n = 6; normality screening has very low power at this size, so a non-significant Shapiro–Wilk is weak evidence of normality.
- Group 'IL-6 · Control' has n = 6; normality screening has very low power at this size, so a non-significant Shapiro–Wilk is weak evidence of normality.
- Group 'IL-6 · LPS' has n = 6; normality screening has very low power at this size, so a non-significant Shapiro–Wilk is weak evidence of normality.
- Group 'TNF-α · Control' has n = 6; normality screening has very low power at this size, so a non-significant Shapiro–Wilk is weak evidence of normality.
- Group 'TNF-α · LPS' has n = 6; normality screening has very low power at this size, so a non-significant Shapiro–Wilk is weak evidence of normality.
- Group 'IL-6 · LPS' rejects normality (p = 0.0413); prefer a rank-based test.
- Group 'IL-6 · Control' rejects normality (p = 0.0392); prefer a rank-based test.
Equal variances
Student's t and one-way ANOVA assume every group has the same spread. LabTools' Levene test uses deviations from the group median (the Brown–Forsythe form), which stays reliable on skewed data; Bartlett's test is more powerful but only trustworthy when the data are normal. A significant p means the equal-variance assumption fails — prefer Welch's t-test or a rank-based test.
| Test | Statistic | p | Largest / smallest variance | Verdict |
|---|---|---|---|---|
| Levene (Brown–Forsythe, median-centred) | 8.146 | 6.0 × 10⁻⁵ | 35.4 | Variances differ |
| Bartlett | 29.5 | 1.9 × 10⁻⁵ | 35.4 | Variances differ |
LabTools calls (2)
stats.levenelabtools stats levene --groups @groups.json --method levene
stats.levenelabtools stats levene --groups @groups.json --method bartlett
The same method is available as an MCP tool (stats_levene) and from the desktop app's statistics panel.
LabTools notes
- Group 'IL-10 · Control' has n = 6; normality screening has very low power at this size, so a non-significant Shapiro–Wilk is weak evidence of normality.
- Group 'IL-10 · LPS' has n = 6; normality screening has very low power at this size, so a non-significant Shapiro–Wilk is weak evidence of normality.
- Group 'IL-6 · Control' has n = 6; normality screening has very low power at this size, so a non-significant Shapiro–Wilk is weak evidence of normality.
- Group 'IL-6 · LPS' has n = 6; normality screening has very low power at this size, so a non-significant Shapiro–Wilk is weak evidence of normality.
- Group 'TNF-α · Control' has n = 6; normality screening has very low power at this size, so a non-significant Shapiro–Wilk is weak evidence of normality.
- Group 'TNF-α · LPS' has n = 6; normality screening has very low power at this size, so a non-significant Shapiro–Wilk is weak evidence of normality.
- Variances differ: use Welch's t-test (stats.ttest default) or stats.kruskal rather than the pooled-variance alternatives.
- Bartlett's test assumes normality and is badly inflated when that fails — confirm with stats.normality, or use method='levene'.
Two-way ANOVA: Cytokine × Treatment
Cytokine and treatment are crossed, so a two-way ANOVA separates the treatment effect, the cytokine effect, and — the interesting term — the interaction: does LPS raise every cytokine by the same amount?
| Source | SS | df | MS | F | p | Partial η² |
|---|---|---|---|---|---|---|
| Cytokine | 39,326 | 2 | 19,663 | 21.65 | 1.5 × 10⁻⁶ | 0.591 |
| Treatment | 180,285 | 1 | 180,285 | 198.5 | 9.1 × 10⁻¹⁵ | 0.869 |
| Cytokine × Treatment | 84,058 | 2 | 42,029 | 46.28 | 6.8 × 10⁻¹⁰ | 0.755 |
| Residual | 27,244 | 30 | 908.13 |
LabTools call
stats.anovalabtools stats anova --design two-way --cells @cells.json --factor-a-name Cytokine --factor-b-name Treatment
The same method is available as an MCP tool (stats_anova) and from the desktop app's statistics panel.
LabTools notes
- The interaction is significant, so the main effects are not interpretable on their own — the effect of one factor depends on the level of the other. Report simple effects at each level instead.
Treatment effect within each cytokine
The interaction says the treatment effect differs between cytokines, so each cytokine is compared separately (Welch t and Mann–Whitney) and the three p-values are corrected as one family.
| Cytokine | Control mean | LPS mean | Welch t | p | BH | Holm | Hedges' g [95% CI] | Mann–Whitney p |
|---|---|---|---|---|---|---|---|---|
| IL-6 | 46.23 | 303.8 | -12.86 | 2.9 × 10⁻⁵ | 8.8 × 10⁻⁵ | 8.8 × 10⁻⁵ | -6.86 [-9.975, -3.706] | 0.005 |
| TNF-α | 59.33 | 205.3 | -6.832 | 0.0008 | 0.001 | 0.002 | -3.64 [-5.502, -1.727] | 0.005 |
| IL-10 | 83.62 | 104.6 | -2.954 | 0.015 | 0.015 | 0.015 | -1.57 [-2.794, -0.3005] | 0.020 |
LabTools calls (3)
stats.ttestlabtools stats ttest --a @IL-6_Control.json --b @IL-6_LPS.json --test welch
stats.mannwhitneylabtools stats mannwhitney --a @IL-6_Control.json --b @IL-6_LPS.json
stats.adjustlabtools stats adjust --p-values @p_values.json --labels @labels.json --method benjamini-hochberg
The same method is available as an MCP tool (stats_ttest) and from the desktop app's statistics panel.
Design sensitivity
LabTools calls (2)
stats.powerlabtools stats power --n1 6 --n2 6 --mode mde --power 0.8
stats.powerlabtools stats power --n1 6 --n2 6 --effect-size 0.5
The same method is available as an MCP tool (stats_power) and from the desktop app's statistics panel.
Methods paragraph
Written to go straight into a manuscript.
Each cytokine was compared between control and LPS by Welch’s t-test (n = 6 per group) with Benjamini–Hochberg correction across the three cytokines. LPS raised IL-6 6.6-fold (p_adj < 0.0001), TNF-α 3.5-fold (p_adj = 0.001) and IL-10 1.25-fold (p_adj = 0.015).
Every number on this page was computed by the LabTools statistics engine (version 0.14.3) from the example's CSV on 2026-09-23. Where a value was derived before the data reached LabTools (replicate means, paired differences, log odds ratios), the text says so. The data are simulated from a fixed random seed.
Get started
Run the same analysis on your data
Every test on this page is built into LabTools — from the statistics panel, the command line, or an AI assistant through MCP.