YeoJonson変換とは、数値データを正規分布に近づける変換手法のひとつです。負の値が含まれるデータには適用ができないBoxCox変換と異なり、負の値が含まれる場合でも適用することができます。
数値を正規分布に近いかたちの分布に変換したい時の手法の一つ、box-cox変換と異なり負の値が含まれている場合でも対応できる。
I. Yeo and R.A. Johnson, “A New Family of Power Transformations to Improve Normality or Symmetry”, Biometrika 87.4 (2000):
from scipy import stats
import matplotlib.pyplot as plt
x = stats.loggamma.rvs(1, size=1000) - 0.5
plt.hist(x)
plt.axvline(x=0, color="r") # 0以下にもデータがあることを確認する
plt.show()
import numpy as np
from scipy.stats import yeojohnson
plt.hist(yeojohnson(x))
plt.show()