LabToolsThe Research Infrastructure
  • Features
  • Demo
  • Technology
  • Examples
  • White Paper
  • FiTrace
  • Data Analysis ↗
  • Calculators
  • Scheduler
Download
FeaturesDemoTechnologyExamplesWhite PaperFiTraceData Analysis ↗CalculatorsSchedulerHealth Tracker ↗

All examples · Example 7 of 34

Ridgeline PlotDistributionStatistical report

Ridgeline Plot: Cell Size over Time

Distribution of cell area (µm²) at eight time points after stimulation (n = 300 cells per time point).

Distribution of cell area (µm²) at eight time points after stimulation (n = 300 cells per time point).

Key findings

  • Mean cell area grows from 108.7 µm² at 0 h to 184.2 µm² at 48 h (Kruskal–Wallis p = 2.0 × 10⁻¹⁰⁸).
  • Every time point is right-skewed (skewness 0.37–1.1), which is why ridgelines — whole distributions — are the right display.
  • Against baseline, the first time point to differ after Holm correction is 2 h.
42 LabTools stats calls
11 of 15 stats methods
LabTools 0.14.3
600 dpi PNG Data (CSV) Raw LabTools output
In this reportDescriptive statisticsNormalityEqual variancesOutlier screenConfidence intervals for the meanDo the groups differ? (omnibus tests)Which groups differ? (pairwise, corrected)

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.

GroupnMeanSDSEMMedianQ1 – Q3Min – MaxSkewnessExcess kurtosis
0 h300108.737.192.147102.983.5 – 12838.2 – 257.51.061.67
2 h300118.638.262.209112.392.08 – 141.638 – 258.90.6540.505
4 h300124.239.532.282118.496.17 – 149.640.3 – 282.50.6750.716
8 h300135.643.872.533133.7103.9 – 160.234.6 – 288.70.5750.39
12 h300146.247.162.723141.3112.8 – 175.757.2 – 295.40.6150.119
24 h300153.854.393.14149.8113.7 – 179.656 – 350.30.8030.903
36 h300171.454.073.122166.4130.4 – 203.964.8 – 351.10.5390.0485
48 h300184.254.73.158181144.8 – 221.146.5 – 404.40.3650.0987
LabTools call
stats.describe
labtools 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.

GroupnShapiro–Wilk WpAnderson–Darling A²pK–S DpVerdict
0 h3000.94121.5 × 10⁻⁹45.6 × 10⁻¹⁰0.0973.5 × 10⁻⁷Normality rejected
2 h3000.97392.8 × 10⁻⁵1.8599.3 × 10⁻⁵0.069770.001Normality rejected
4 h3000.9732.0 × 10⁻⁵1.4450.00100.062780.006Normality rejected
8 h3000.97647.4 × 10⁻⁵1.5260.00060.046870.11Normality rejected
12 h3000.97211.5 × 10⁻⁵2.0034.1 × 10⁻⁵0.065540.003Normality rejected
24 h3000.95952.1 × 10⁻⁷2.5451.9 × 10⁻⁶0.077030.0002Normality rejected
36 h3000.97810.00021.5980.00040.059980.011Normality rejected
48 h3000.98690.0080.88620.0230.058340.015Normality rejected
LabTools calls (3)
stats.normality
labtools stats normality --groups @groups.json --method shapiro-wilk
stats.normality
labtools stats normality --groups @groups.json --method anderson-darling
stats.normality
labtools 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 '0 h' rejects normality (p = 0.0000); prefer a rank-based test.
  • Group '12 h' rejects normality (p = 0.0000); prefer a rank-based test.
  • Group '2 h' rejects normality (p = 0.0000); prefer a rank-based test.
  • Group '24 h' rejects normality (p = 0.0000); prefer a rank-based test.
  • Group '36 h' rejects normality (p = 0.0002); prefer a rank-based test.
  • Group '4 h' rejects normality (p = 0.0000); prefer a rank-based test.
  • Group '48 h' rejects normality (p = 0.0078); prefer a rank-based test.
  • Group '8 h' rejects normality (p = 0.0001); prefer a rank-based test.
  • Group '2 h' rejects normality (p = 0.0001); prefer a rank-based test.
  • Group '36 h' rejects normality (p = 0.0004); prefer a rank-based test.
  • Group '4 h' rejects normality (p = 0.0010); prefer a rank-based test.
  • Group '48 h' rejects normality (p = 0.0232); prefer a rank-based test.
  • Group '8 h' rejects normality (p = 0.0006); prefer a rank-based test.
  • Group '12 h' rejects normality (p = 0.0034); prefer a rank-based test.
  • Group '2 h' rejects normality (p = 0.0013); prefer a rank-based test.
  • Group '24 h' rejects normality (p = 0.0002); prefer a rank-based test.
  • Group '36 h' rejects normality (p = 0.0112); prefer a rank-based test.
  • Group '4 h' rejects normality (p = 0.0062); prefer a rank-based test.
  • Group '48 h' rejects normality (p = 0.0154); 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.

TestStatisticpLargest / smallest varianceVerdict
Levene (Brown–Forsythe, median-centred)14.263.0 × 10⁻¹⁸2.16Variances differ
Bartlett1115.6 × 10⁻²¹2.16Variances differ
LabTools calls (2)
stats.levene
labtools stats levene --groups @groups.json --method levene
stats.levene
labtools 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

  • 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'.

Outlier screen

Five detectors with different assumptions. Grubbs tests the single most extreme point, generalised ESD looks for up to several (immune to masking), Dixon's Q is the small-sample chemistry test, modified-z uses the median and MAD so needs no normality, and the IQR rule is Tukey's boxplot fence. LabTools flags points; it never deletes them.

Method0 h2 h4 h8 h12 h24 h36 h48 h
Grubbs1 (257.5)none1 (282.5)nonenonenonenone1 (404.4)
Generalised ESD2 (257.5, 248.4)none1 (282.5)nonenonenonenone1 (404.4)
Modified z (MAD)5 (257.5, 228.2, 218.3, 238.6 …)2 (254.8, 258.9)1 (282.5)1 (288.7)none3 (322.8, 350.3, 343.2)none1 (404.4)
IQR fences (1.5×)11 (257.5, 228.2, 207, 195.7 …)5 (219, 254.8, 223.5, 218.3 …)5 (282.5, 234.6, 235.8, 242.4 …)5 (258.3, 288.7, 252.9, 269.1 …)4 (282.4, 280.7, 294.6, 295.4)11 (285.8, 304.4, 283.5, 279.8 …)3 (351.1, 315.4, 341.1)1 (404.4)
LabTools calls (4)
stats.outliers
labtools stats outliers --groups @groups.json --method grubbs
stats.outliers
labtools stats outliers --groups @groups.json --method generalized-esd --max-outliers 5
stats.outliers
labtools stats outliers --groups @groups.json --method modified-z
stats.outliers
labtools stats outliers --groups @groups.json --method iqr

The same method is available as an MCP tool (stats_outliers) and from the desktop app's statistics panel.

LabTools notes

  • Flagged points are candidates, not verdicts, and nothing has been removed. Look for a physical cause before excluding anything; if there is none, keep the point and use a robust test instead. Any exclusion must be reported.
  • Grubbs tests only the single most extreme point, so a second outlier can mask the first. On larger samples use method='generalized_esd'.
  • The IQR rule is descriptive — it has no p-value and flags roughly 0.7% of a perfectly normal sample by construction.

Confidence intervals for the mean

t-based intervals: the range of population means these data are consistent with. Report them alongside p-values — an interval shows the size of an effect, a p-value does not.

GroupnMean95% CI
0 h300108.7[104.5, 112.9]
2 h300118.6[114.3, 122.9]
4 h300124.2[119.8, 128.7]
8 h300135.6[130.6, 140.6]
12 h300146.2[140.8, 151.5]
24 h300153.8[147.6, 160]
36 h300171.4[165.3, 177.6]
48 h300184.2[178, 190.4]
LabTools calls (2)
stats.ci
labtools stats ci --data @0_h.json --conf-level 0.95
stats.ci
labtools stats ci --data @48_h.json --conf-level 0.95

The same method is available as an MCP tool (stats_ci) and from the desktop app's statistics panel.

Do the groups differ? (omnibus tests)

One-way ANOVA compares means and assumes normal residuals with equal variances; Kruskal–Wallis compares ranks and assumes neither. Both only say the groups differ somewhere — the pairwise table below says where.

TestStatisticdfpEffect size
One-way ANOVAF = 94.67, 2,3923.7 × 10⁻¹²²ω² = 0.214 · η² = 0.217 · Cohen's f = 0.526
Kruskal–Wallis HH = 521.472.0 × 10⁻¹⁰⁸ε² = 0.217
LabTools calls (2)
stats.anova
labtools stats anova --groups @groups.json
stats.kruskal
labtools stats kruskal --groups @groups.json

The same method is available as an MCP tool (stats_anova) and from the desktop app's statistics panel.

LabTools notes

  • Group '0 h' departs from normality (Shapiro–Wilk W = 0.9412, p = 0.0000 < 0.05). Consider stats.kruskal.
  • Group '12 h' departs from normality (Shapiro–Wilk W = 0.9721, p = 0.0000 < 0.05). Consider stats.kruskal.
  • Group '2 h' departs from normality (Shapiro–Wilk W = 0.9739, p = 0.0000 < 0.05). Consider stats.kruskal.
  • Group '24 h' departs from normality (Shapiro–Wilk W = 0.9595, p = 0.0000 < 0.05). Consider stats.kruskal.
  • Group '36 h' departs from normality (Shapiro–Wilk W = 0.9781, p = 0.0002 < 0.05). Consider stats.kruskal.
  • Group '4 h' departs from normality (Shapiro–Wilk W = 0.9730, p = 0.0000 < 0.05). Consider stats.kruskal.
  • Group '48 h' departs from normality (Shapiro–Wilk W = 0.9869, p = 0.0078 < 0.05). Consider stats.kruskal.
  • Group '8 h' departs from normality (Shapiro–Wilk W = 0.9764, p = 0.0001 < 0.05). Consider stats.kruskal.
  • Group variances are unequal (Levene W = 14.2577, p = 0.0000 < 0.05); the equal-variance assumption of this test is violated. Use the Welch variant instead.

Which groups differ? (pairwise, corrected)

7 comparisons (each group against 0 h), each run as a Welch t-test and a Mann–Whitney test. Testing many pairs inflates false positives, so every p-value is corrected with Holm (family-wise) and Benjamini–Hochberg (false-discovery rate) through stats.adjust.

ComparisonMean diff.95% CIHedges' gWelch pHolmBHMann–Whitney pHolmCliff's δ
0 h vs 2 h-9.905[-15.95, -3.855]-0.2620.0010.0010.0010.00040.0004-0.167
0 h vs 4 h-15.55[-21.7, -9.397]-0.4059.1 × 10⁻⁷1.8 × 10⁻⁶1.1 × 10⁻⁶1.5 × 10⁻⁷3.0 × 10⁻⁷-0.248
0 h vs 8 h-26.89[-33.41, -20.36]-0.663.3 × 10⁻¹⁵1.0 × 10⁻¹⁴4.6 × 10⁻¹⁵6.9 × 10⁻¹⁶2.1 × 10⁻¹⁵-0.381
0 h vs 12 h-37.46[-44.27, -30.65]-0.8817.3 × 10⁻²⁵2.9 × 10⁻²⁴1.3 × 10⁻²⁴1.8 × 10⁻²⁴7.1 × 10⁻²⁴-0.482
0 h vs 24 h-45.07[-52.55, -37.6]-0.9666.9 × 10⁻²⁹3.5 × 10⁻²⁸1.6 × 10⁻²⁸9.3 × 10⁻²⁹4.7 × 10⁻²⁸-0.525
0 h vs 36 h-62.73[-70.17, -55.29]-1.356.2 × 10⁻⁵⁰3.7 × 10⁻⁴⁹2.2 × 10⁻⁴⁹4.4 × 10⁻⁴⁷2.7 × 10⁻⁴⁶-0.68
0 h vs 48 h-75.5[-83, -68]-1.611.7 × 10⁻⁶⁵1.2 × 10⁻⁶⁴1.2 × 10⁻⁶⁴2.9 × 10⁻⁵⁸2.0 × 10⁻⁵⁷-0.759
LabTools calls (3)
stats.ttest
labtools stats ttest --a @0_h.json --b @2_h.json --test welch --no-assumption-checks
stats.mannwhitney
labtools stats mannwhitney --a @0_h.json --b @2_h.json
stats.adjust
labtools stats adjust --p-values @p_values.json --labels @labels.json --method holm

The same method is available as an MCP tool (stats_ttest) and from the desktop app's statistics panel.

Design sensitivity

d = 0.229
Minimum detectable effect (80% power, α = 0.05)
n = 300 vs 300
100.0%
Power to detect d = 0.5
100.0%
Power to detect d = 0.8
100.0%
Power to detect d = 1.2
LabTools calls (2)
stats.power
labtools stats power --n1 300 --n2 300 --mode mde --power 0.8
stats.power
labtools stats power --n1 300 --n2 300 --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.

Descriptive statistics per time point: median cell area rose from 102.9 µm² (0 h) to 181.0 µm² (48 h), with right-skewed distributions throughout.

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.

Strip Plot: qPCR ΔCt per Animal2D Histogram: Flow Cytometry FSC vs SSC

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.

Download freeMore examples

LabTools

The research infrastructure: plot to figure to manuscript in one place. Free for academic and individual use.

Product

  • Features
  • Technology
  • Demo & Tutorials
  • Examples
  • Download

Support

  • Contact Support
  • Help Center

Filliaux Industries

  • filliaux.com
  • Data Analysis
  • Health Tracker

Stay updated

Research tips, product updates, and release notes. No spam.

© 2026 Filliaux Industries · LabToolsPrivacyTermsCookiesLinkedIn