Release Notes


This release introduces several new functions:

  • Repeated measures: Augments the prior function for plotting (independent) multiple test groups versus a shared control ("baseline"); it can now do the same for repeated-measures experimental designs ("sequential"). Thus, together, these two methods can be used to replace both flavors of the 1-way ANOVA with an estimation analysis.
    • Deprecation notice: The paired argument for dabest.load() is no longer boolean, and now only accepts "baseline" or "sequential" as a string.

  • Proportional data: Generates proportional bar plots, proportional differences, and calculates Cohen’s h. Also enables plotting Sankey diagrams for paired binary data. This is the estimation equivalent to a bar chart with Fischer’s exact test.

  • The ∆∆ plot: Calculates the delta-delta (∆∆) for 2 × 2 experimental designs and plots the four groups with their relevant effect sizes. This design can be used as a replacement for the 2 × 2 ANOVA.

  • Mini-meta: Calculates and plots a weighted delta (∆) for meta-analysis of experimental replicates. Useful for summarizing data from multiple replicated experiments, for example by different scientists in the same lab, or the same scientist at different times. When the observed values are known (and share a common metric), this makes meta-analysis available as a routinely accessible tool.

Please read the updated tutorials if you wish to use the above functions:

Tutorial: Repeated Measures

Tutorial: Proportion Plots

Tutorial: Delta - Delta

Tutorial: Mini-Meta Delta


This release updates the minimal Python version to 3.6 (as Python 3.5 is already an “end-of-life” release as of September 2020), and also updates the package requirements to:
  • numpy: 0.19

  • matplotlib: 3.3

  • scipy: 1.5

  • pandas: 1.1

  • seaborn: 0.11

  • lqrt: 0.3

All users are strongly encouraged to update.


This is a new major release that refactors the statistical test output. All users are strongly encouraged to update to this release.

Main Changes:
  • the Lq-Likelihood Ratio-Type test results are now computed only when the user calls the lqrt property of the dabest_object.effect_size EffectSizeDataFrame object. This refactor was done to mitigate the lengthy computation time the test took. See Issues #94 and #91.

  • The default hypothesis test reported by calling the dabest_object.effect_size EffectSizeDataFrame object is now the non-parametric two-sided permutation t-test. Conceptually, this hypothesis test mirrors the usage of the bootstrap (to obtain the 95% confidence intervals). Read more at Tutorial: Basics. See Issue #92 and PR #93.

  • The minimum version of numpy is now v0.17, which has an updated method of generating random samples. The resampling code used in dabest has thus been updated as well.


This release fixes minor bugs, and implements a new statistical test.

Feature Additions:
  • Fix bugs in slopegraph and reference line keyword parsing with PR #86; thanks to DizietAsahi (DizietAsahi).


  • Bug affecting display of Tufte gapped lines in Cumming plots if the supplied pandas DataFrame was in ‘wide’ format, but did not have equal number of Ns in the groups. (Issue #79)


Feature additions:


Feature additions:
  • Adding Ns of each group to the results DataFrame. (Issue #45)

  • Auto-labelling the swarmplot rawdata axes y-label. (Issue #51)



This release fixes the following issues:
  • Misalignment of Gardner-Altman plots when the dataset loaded is wide, but has NaNs in a column. (Issue #40)

  • Misalignment of Hedges’ g Gardner Altman plots (Also Issue #40).

  • Add groups_summaries_offset argument for better control over gapped Tufte line plotting. The default offset is now set at 0.1 as well. (Issue #35


This release fixes a bug that did not handle when the supplied x was a pandas Categorical object, but the idx did not include all the original categories.


This release fixes a bug that has a mean difference or median difference of exactly 0. (Pull request #73; thanks to Mason Malone (@MasonM).


This release fixes a bug that misplotted the gapped summary lines in Cumming plots when the x-variable was a pandas Categorical object.


We have redesigned the interface from the ground up. This allows speed and flexibility to compute different effect sizes (including Cohen’s d, Hedges’ g, and Cliff’s delta). Statistical arguments are now parsed differently from graphical arguments.

In short, any code relying on v0.1.x will not work with v0.2.0, and must be upgraded.

Now, every analysis session begins with dabest.load().

1my_data = dabest.load(my_dataframe, idx=("Control", "Test"))

This creates a Dabest object with effect sizes as instances.


which prints out:

DABEST v0.2.0

Good afternoon!
The current time is Mon Mar  4 17:03:29 2019.

The unpaired mean difference between Control 1 and Test 1 is 0.48 [95%CI 0.205, 0.774].

5000 bootstrap samples were taken; the confidence interval is bias-corrected and accelerated.
The p-value(s) reported are the likelihood(s) of observing the effect size(s),
if the null hypothesis of zero difference is true.

The following are valid effect sizes:


To produce an estimation plot, each effect size instance has a plot() method.


See the Tutorial: Basics and API for more details, including keyword options for the load() and plot() methods.


The keyword cumming_vertical_spacing has been added to tweak the vertical spacing between the rawdata swarm axes and the contrast axes in Cumming estimation plots.


Several keywords have been added to allow more fine-grained control over a selection of plot elements.

  • swarm_dotsize

  • difference_dotsize

  • ci_linewidth

  • summary_linewidth

The new keyword context allows you to set the plotting context as defined by seaborn’s plotting_context() .

Now, if paired=True, you will need to supply an id_col, which is a column in the DataFrame which specifies which sample the datapoint belongs to. See the Tutorial: Basics for more details.


Fix bug that wasn’t updating the seaborn version upon setup and install.


Update dependencies to

  • numpy 1.15

  • scipy 1.1

  • matplotlib 2.2

  • seaborn 0.9

Aesthetic changes

  • add tick_length and tick_pad arguments to allow tweaking of the axes tick lengths, and padding of the tick labels, respectively.


Update dependencies to

  • pandas v0.23


  • fix bug that did not label swarm_label if raw data was in tidy form

  • fix bug that did not dropnans for unpaired diff


Update dependencies to

  • numpy v1.13

  • scipy v1.0

  • pandas v0.22

  • seaborn v0.8


Update LICENSE to BSD-3 Clear.