scipy.stats.boxcox_normplot¶

scipy.stats.
boxcox_normplot
(x, la, lb, plot=None, N=80)[source]¶ Compute parameters for a BoxCox normality plot, optionally show it.
A BoxCox normality plot shows graphically what the best transformation parameter is to use in
boxcox
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 toboxcox
for BoxCox 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 BoxCox transform was done.ppcc : ndarray
Probability Plot Correlelation Coefficient, as obtained from
probplot
when fitting the BoxCox transformed input x against a normal distribution.See also
Notes
Even if plot is given, the figure is not shown or saved by
boxcox_normplot
;plt.show()
orplt.savefig('figname.png')
should be used after callingprobplot
.Examples
>>> from scipy import stats >>> import matplotlib.pyplot as plt
Generate some nonnormally distributed data, and create a BoxCox plot:
>>> x = stats.loggamma.rvs(5, size=500) + 5 >>> fig = plt.figure() >>> ax = fig.add_subplot(111) >>> prob = stats.boxcox_normplot(x, 20, 20, plot=ax)
Determine and plot the optimal
lmbda
to transformx
and plot it in the same plot:>>> _, maxlog = stats.boxcox(x) >>> ax.axvline(maxlog, color='r')
>>> plt.show()