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

All examples · Example 4 of 34

Violin PlotDistributionStatistical report

Violin Plot: Cell Viability

Cell viability (%) across five drug concentrations (n = 30 wells each); violins show the density with an inner IQR box and median.

Cell viability (%) across five drug concentrations (n = 30 wells each); violins show the density with an inner IQR box and median.

Key findings

  • Viability falls from 98.43% to 24.96% across the dose range (ANOVA F = 288.8, p = 5.6 × 10⁻⁶⁸).
  • Spread grows with dose — variance ratio 6.78, Levene p = 1.2 × 10⁻⁶ — so the rank-based Kruskal–Wallis (p = 3.5 × 10⁻²⁷) and Welch comparisons are the robust ones to report.
  • Against vehicle, 4 of 4 doses remain significant after Holm correction.
34 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 µM3098.435.7141.04397.9594.12 – 102.186.9 – 1100.183-0.577
0.1 µM3091.477.6381.39590.6587.1 – 95.576.4 – 108.60.2440.0182
1 µM3079.537.8281.42979.773.25 – 84.1766 – 97.10.311-0.349
10 µM3050.4210.741.9651.942.83 – 58.1226.8 – 71.2-0.25-0.215
100 µM3024.9614.882.71727.312.03 – 35.770 – 53.4-0.0442-1.12
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 µM300.98150.860.23760.760.10530.54Consistent with normal
0.1 µM300.97930.810.28470.600.099350.63Consistent with normal
1 µM300.97460.670.24440.740.073370.95Consistent with normal
10 µM300.98640.960.16630.930.073250.95Consistent with normal
100 µM300.95710.260.48660.210.11080.46Consistent with normal
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.

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)9.21.2 × 10⁻⁶6.78Variances differ
Bartlett31.452.5 × 10⁻⁶6.78Variances 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 µM0.1 µM1 µM10 µM100 µM
Grubbsnonenonenonenonenone
Generalised ESDnonenonenonenonenone
Dixon's Qnonenonenonenonenone
Modified z (MAD)nonenonenonenonenone
IQR fences (1.5×)none1 (108.6)nonenonenone
LabTools calls (5)
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 dixon-q
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.
  • 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 µM3098.43[96.29, 100.6]
0.1 µM3091.47[88.62, 94.33]
1 µM3079.53[76.6, 82.45]
10 µM3050.42[46.41, 54.43]
100 µM3024.96[19.41, 30.52]
LabTools calls (2)
stats.ci
labtools stats ci --data @0_µM.json --conf-level 0.95
stats.ci
labtools stats ci --data @100_µM.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 = 288.84, 1455.6 × 10⁻⁶⁸ω² = 0.885 · η² = 0.888 · Cohen's f = 2.82
Kruskal–Wallis HH = 130.243.5 × 10⁻²⁷ε² = 0.874
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 variances are unequal (Levene W = 9.2000, p = 0.0000 < 0.05); the equal-variance assumption of this test is violated. Use the Welch variant instead.

Which groups differ? (pairwise, corrected)

4 comparisons (each group against 0 µM), 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 µM vs 0.1 µM6.953[3.461, 10.45]1.020.00020.00020.00020.00030.00030.547
0 µM vs 1 µM18.9[15.35, 22.45]2.727.9 × 10⁻¹⁵1.6 × 10⁻¹⁴1.0 × 10⁻¹⁴3.2 × 10⁻¹⁰6.3 × 10⁻¹⁰0.947
0 µM vs 10 µM48[43.53, 52.48]5.513.9 × 10⁻²⁵1.6 × 10⁻²⁴8.9 × 10⁻²⁵3.0 × 10⁻¹¹1.2 × 10⁻¹⁰1
0 µM vs 100 µM73.46[67.57, 79.36]6.434.5 × 10⁻²⁵1.6 × 10⁻²⁴8.9 × 10⁻²⁵3.0 × 10⁻¹¹1.2 × 10⁻¹⁰1
LabTools calls (3)
stats.ttest
labtools stats ttest --a @0_µM.json --b @0.1_µM.json --test welch --no-assumption-checks
stats.mannwhitney
labtools stats mannwhitney --a @0_µM.json --b @0.1_µM.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.736
Minimum detectable effect (80% power, α = 0.05)
n = 30 vs 30
47.8%
Power to detect d = 0.5
86.1%
Power to detect d = 0.8
99.5%
Power to detect d = 1.2
LabTools calls (2)
stats.power
labtools stats power --n1 30 --n2 30 --mode mde --power 0.8
stats.power
labtools stats power --n1 30 --n2 30 --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.

Normality held within groups (Shapiro–Wilk p ≥ 0.26) but variances were unequal (Levene W = 9.2, p < 0.0001), so groups were compared by Kruskal–Wallis (H = 130.2, df = 4, p < 0.0001, ε² = 0.87). One-way ANOVA agreed (F(4,145) = 288.8, ω² = 0.88).

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.

Raincloud Plot: Gene ExpressionSwarm Plot: Calcium Transient Amplitude

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