Transforms
Box-Cox Transformations
- greybox.transforms.bc_transform(y: ndarray, lambda_bc: float) ndarray[source]
Box-Cox transformation.
- greybox.transforms.bc_transform_inv(y: ndarray, lambda_bc: float) ndarray[source]
Inverse Box-Cox transformation.
Box-Cox Transformation
The Box-Cox transformation is defined as:
\[\begin{split}y^{(\lambda)} =
\begin{cases}
\frac{y^\lambda - 1}{\lambda} & \text{if } \lambda \neq 0 \\
\ln(y) & \text{if } \lambda = 0
\end{cases}\end{split}\]
Common Values
lambda=0: Log transformationlambda=0.5: Square root transformationlambda=1: No transformation (linear)lambda=-1: Inverse transformation
Example
from greybox import bc_transform, bc_transform_inv
# Apply Box-Cox transformation with lambda=0.5
y_transformed = bc_transform([1, 4, 9, 16], lambda_bc=0.5)
# Result: [0, 2, 4, 6]
# Inverse transformation
y_original = bc_transform_inv([0, 2, 4, 6], lambda_bc=0.5)
# Result: [1, 4, 9, 16]
mean_fast
- greybox.transforms.mean_fast(x: ndarray, df: int | None = None, trim: float = 0.0, side: str = 'lower') float[source]
Fast mean calculation with optional trimming.
The mean_fast function computes a trimmed/hubered mean that is robust to outliers.
Parameters
x: array-like - Input datadf: int - Degrees of freedom (default: 1)trim: float - Trim proportion (0 to 0.5, default: 0.0)side: str - Trim side: “both” (default), “lower”, or “upper”
Example
from greybox import mean_fast
import numpy as np
data = np.array([1, 2, 3, 4, 5, 100])
# Standard mean (affected by outlier)
np.mean(data) # ~19.17
# Trimmed mean (remove 10% from each tail)
mean_fast(data, trim=0.1) # ~3.0