一般化neg-log変換

データサイエンス




一般化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 変換の活用に基づくゼロ・負の値を含む時系列データの 安定化と季節調整値の推定精度向上

タイトルとURLをコピーしました