• home
  • about
  • 全ての投稿
  • ソフトウェア・ハードウェアの設定のまとめ
  • 分析関連のまとめ
  • ヘルスケア関連のまとめ
  • 生涯学習関連のまとめ

box-cox変換

date: 2017-04-10 excerpt: box-cox変換について

tag: statisticsbox-cox変換


box-coxについて

  • 正の値を(正規分布状の)区間に圧縮する
  • ロジット変換等と並列にある存在
  • 0 < λ < 1で右により、1 < λで左による

数式

λ != 0 \(\frac{x^\lambda - 1}{\lambda}\)

λ = 0 \(log x\)

実験

  • 一様分布のデータに対してλのパラメータを変化させ、どのような特性になるか確認する
import seaborn as sns
import matplotlib
# matplotlib.use('agg') # python scriptのときは有効化する
import matplotlib.pyplot as plt
import matplotlib.dates as mdates # time seriesの描画
import importlib
if importlib.util.find_spec("japanize_matplotlib"):
    import japanize_matplotlib # 日本語フォントが入っていないなど

plt.figure(figsize=(30, 30))
f, ax = plt.subplots(nrows=7, ncols=3, figsize=(30, 30))

import numpy as np
x = np.random.random((100000,)) * 1000
for i, l in enumerate(np.arange(0.0, 2, 0.1)):
    if l == 0.0:
        y = np.log(x)
    else:
        y = (x**l - 1)/l
    sns.distplot(y, kde=False, ax=ax[i//3, i%3])
    ax[i//3, i%3].set(title=f"lambda = {l:0.2f}")

出力結果

colab

  • colab


statisticsbox-cox変換 Share Tweet