一般化neg-log変換
$$
\begin{aligned} Y_{n} &=\operatorname{sgn}\left(X_{n}\right) \times\left\{\left(\left|X_{n}\right|+1\right)^{\lambda}-1\right\} / \lambda & &(\lambda \neq 0) \\ &=\operatorname{sgn}\left(X_{n}\right) \times \ln \left(\left|X_{n}\right|+1\right) & &(\lambda=0) \end{aligned}
$$
Python
class General_neglog(object): def __init__(self, lambda_=0): self.lambda_ = lambda_ def fit_transform(self, x): self.x = x if self.lambda_ == 0: return np.sign(self.x) * np.log1p(np.abs(self.x)) else: return np.sign(self.x) * ((np.abs(self.x)+1)**self.lambda_ - 1) /self.lambda_ def inverse_transform(self, x): if self.lambda_ == 0: return np.sign(x) * np.expm1(np.abs(x)) else: return np.sign(x) * ((self.lambda_*np.abs(x)+1)**(1/self.lambda_) - 1)
参考
状態空間モデルに基づく季節調整法における改良方法の提案: 一般化 neg-log 変換の活用に基づくゼロ・負の値を含む時系列データの 安定化と季節調整値の推定精度向上