{ } Raw JSON

bundles / scipy latest / scipy / stats / _morestats / yeojohnson_normplot

function

scipy.stats._morestats:yeojohnson_normplot

source: /scipy/stats/_morestats.py :1929

Signature

def   yeojohnson_normplot ( x la lb plot = None N = 80 )

Summary

Compute parameters for a Yeo-Johnson normality plot, optionally show it.

Extended Summary

A Yeo-Johnson normality plot shows graphically what the best transformation parameter is to use in yeojohnson to obtain a distribution that is close to normal.

Parameters

x : array_like

Input array.

la, lb : scalar

The lower and upper bounds for the lmbda values to pass to yeojohnson for Yeo-Johnson transformations. These are also the limits of the horizontal axis of the plot if that is generated.

plot : object, optional

If given, plots the quantiles and least squares fit. plot is an object that has to have methods "plot" and "text". The matplotlib.pyplot module or a Matplotlib Axes object can be used, or a custom object with the same methods. Default is None, which means that no plot is created.

N : int, optional

Number of points on the horizontal axis (equally distributed from la to lb).

Returns

lmbdas : ndarray

The lmbda values for which a Yeo-Johnson transform was done.

ppcc : ndarray

Probability Plot Correlation Coefficient, as obtained from probplot when fitting the Box-Cox transformed input x against a normal distribution.

Notes

Even if plot is given, the figure is not shown or saved by boxcox_normplot; plt.show() or plt.savefig('figname.png') should be used after calling probplot.

Array API Standard Support

yeojohnson_normplot has experimental support for Python Array API Standard compatible backends in addition to NumPy. Please consider testing these features by setting an environment variable SCIPY_ARRAY_API=1 and providing CuPy, PyTorch, JAX, or Dask arrays as array arguments. The following combinations of backend and device (or other capability) are supported.

====================  ====================  ====================
Library               CPU                   GPU
====================  ====================  ====================
NumPy                 ✅                     n/a                 
CuPy                  n/a                   ⛔                   
PyTorch               ⛔                     ⛔                   
JAX                   ⛔                     ⛔                   
Dask                  ⛔                     n/a                 
====================  ====================  ====================

See dev-arrayapi for more information.

Examples

from scipy import stats
import matplotlib.pyplot as plt
Generate some non-normally distributed data, and create a Yeo-Johnson plot:
x = stats.loggamma.rvs(5, size=500) + 5
fig = plt.figure()
ax = fig.add_subplot(111)
prob = stats.yeojohnson_normplot(x, -20, 20, plot=ax)
Determine and plot the optimal ``lmbda`` to transform ``x`` and plot it in the same plot:
_, maxlog = stats.yeojohnson(x)
ax.axvline(maxlog, color='r')
plt.show()
fig-21fd676e21da3c71.png

See also

ppcc_max
probplot
yeojohnson
yeojohnson_llf
yeojohnson_normmax

Aliases

  • scipy.stats.yeojohnson_normplot