gstools.normalizer.BoxCoxShift

class gstools.normalizer.BoxCoxShift(data=None, **parameter)[source]

Bases: Normalizer

Box-Cox (1964) transformed fields including shifting.

Parameters
  • data (array_like, optional) – Input data to fit the transformation in order to gain normality. The default is None.

  • lmbda (float, optional) – Shape parameter. Default: 1

  • shift (float, optional) – Shift parameter. Default: 0

Notes

This transformation is given by [Box1964]:

\[\begin{split}y=\begin{cases} \frac{(x+s)^{\lambda} - 1}{\lambda} & \lambda\neq 0 \\ \log(x+s) & \lambda = 0 \end{cases}\end{split}\]

Fitting the shift parameter is rather hard. You should consider skipping “shift” during fitting:

>>> data = range(5)
>>> norm = BoxCoxShift(shift=0.5)
>>> norm.fit(data, skip=["shift"])
{'shift': 0.5, 'lmbda': 0.6747515267420799}

References

Box1964

G.E.P. Box and D.R. Cox, “An Analysis of Transformations”, Journal of the Royal Statistical Society B, 26, 211-252, (1964)

Attributes
denormalize_range

tuple: Valid range for output data depending on lmbda.

name

str: The name of the normalizer class.

normalize_range

tuple: Valid range for input data depending on shift.

Methods

denormalize(data)

Transform to input distribution.

derivative(data)

Factor for normal PDF to gain target PDF.

fit(data[, skip])

Fitting the transformation to data by maximizing Log-Likelihood.

kernel_loglikelihood(data)

Kernel Log-Likelihood for given data with current parameters.

likelihood(data)

Likelihood for given data with current parameters.

loglikelihood(data)

Log-Likelihood for given data with current parameters.

normalize(data)

Transform to normal distribution.

denormalize(data)

Transform to input distribution.

Parameters

data (array_like) – Input data (normal distributed).

Returns

Denormalized data.

Return type

numpy.ndarray

derivative(data)

Factor for normal PDF to gain target PDF.

Parameters

data (array_like) – Input data (not normal distributed).

Returns

Derivative of the normalization transformation function.

Return type

numpy.ndarray

fit(data, skip=None, **kwargs)

Fitting the transformation to data by maximizing Log-Likelihood.

Parameters
  • data (array_like) – Input data to fit the transformation to in order to gain normality.

  • skip (list of str or None, optional) – Names of parameters to be skipped in fitting. The default is None.

  • **kwargs – Keyword arguments passed to scipy.optimize.minimize_scalar when only one parameter present or scipy.optimize.minimize.

Returns

Optimal parameters given by names.

Return type

dict

kernel_loglikelihood(data)

Kernel Log-Likelihood for given data with current parameters.

Parameters

data (array_like) – Input data to fit the transformation to in order to gain normality.

Returns

Kernel Log-Likelihood of the given data.

Return type

float

Notes

This loglikelihood function is neglecting additive constants, that are not needed for optimization.

likelihood(data)

Likelihood for given data with current parameters.

Parameters

data (array_like) – Input data to fit the transformation to in order to gain normality.

Returns

Likelihood of the given data.

Return type

float

loglikelihood(data)

Log-Likelihood for given data with current parameters.

Parameters

data (array_like) – Input data to fit the transformation to in order to gain normality.

Returns

Log-Likelihood of the given data.

Return type

float

normalize(data)

Transform to normal distribution.

Parameters

data (array_like) – Input data (not normal distributed).

Returns

Normalized data.

Return type

numpy.ndarray

default_parameter = {'lmbda': 1, 'shift': 0}

Default parameters of the BoxCoxShift-Normalizer.

Type

dict

property denormalize_range

Valid range for output data depending on lmbda.

(-1/lmbda, inf) or (-inf, -1/lmbda)

Type

tuple

property name

The name of the normalizer class.

Type

str

property normalize_range

Valid range for input data depending on shift.

(-shift, inf)

Type

tuple