Software Open Access

raphaelvallat/pingouin: v0.2.5

Raphael Vallat; LegrandNico

Major release with several bugfixes, new functions, and many internal improvements:


  • Fixed error in p-values for one-sample one-sided T-test (pingouin.ttest()), the two-sided p-value was divided by 4 and not by 2, resulting in inaccurate (smaller) one-sided p-values.
  • Fixed global error for unbalanced two-way ANOVA (pingouin.anova()), the sums of squares were wrong, and as a consequence so were the F and p-values. In case of unbalanced design, Pingouin now computes a type II sums of squares via a call to the statsmodels package.
  • The epsilon factor for the interaction term in two-way repeated measures ANOVA (pingouin.rm_anova()) is now computed using the lower bound approach. This is more conservative than the Greenhouse-Geisser approach and therefore give (slightly) higher p-values. The reason for choosing this is that the Greenhouse-Geisser values for the interaction term differ than the ones returned by R and JASP. This will be hopefully fixed in future releases.

New functions

  • Added pingouin.multivariate_ttest() (Hotelling T-squared) test.
  • Added pingouin.cronbach_alpha() function.
  • Added pingouin.plot_shift() function.
  • Several functions of pandas can now be directly used as pandas.DataFrame methods.
  • Added pingouin.pcorr() method to compute the partial Pearson correlation matrix of a pandas.DataFrame (similar to the pcor function in the ppcor package).
  • The pingouin.partial_corr() now supports semi-partial correlation.


  • The pingouin.rm_corr() function now returns a pandas.DataFrame with the r-value, degrees of freedom, p-value, confidence intervals and power.
  • pingouin.compute_esci() now works for paired and one-sample Cohen d.
  • pingouin.bayesfactor_ttest() and pingouin.bayesfactor_pearson() now return a formatted str and not a float.
  • pingouin.pairwise_ttests() now returns the degrees of freedom (dof).
  • Better rounding of float in pingouin.pairwise_ttests().
  • Support for wide-format data in pingouin.rm_anova()
  • pingouin.ttest() now returns the confidence intervals around the T-values.

Missing values

  • pingouin.remove_na() and pingouin.remove_rm_na() are now external function documented in the API.
  • pingouin.remove_rm_na() now works with multiple within-factors.
  • pingouin.remove_na() now works with 2D arrays.
  • Removed the remove_na argument in pingouin.rm_anova() and pingouin.mixed_anova(), an automatic listwise deletion of missing values is applied (same behavior as JASP). Note that this was also the default behavior of Pingouin, but the user could also specify not to remove the missing values, which most likely returned inaccurate results.
  • The pingouin.ancova() function now applies an automatic listwise deletion of missing values.
  • Added remove_na argument (default = False) in pingouin.linear_regression() and pingouin.logistic_regression() functions
  • Missing values are automatically removed in the pingouin.anova() function.


  • Raphael Vallat
  • Nicolas Legrand

Files (766.2 kB)
Name Size
766.2 kB Download
All versions This version
Views 220
Downloads 262
Data volume 37.0 MB1.5 MB
Unique views 210
Unique downloads 131


Cite as