scipy.stats.boxcox

1336 ワード

scipy.stats.boxcox   ValueError: Data must be positive.
stats.boxcoxを使用している場合、次のような状況に遭遇します.
stats.boxcox(data[col].dropna()+1)
ここで、dataはDataFrameタイプ、colはカラム名、
+1は比較的ぼんやりしている.
公式文書の説明:
The Box-Cox transform is given by:
y = (x**lmbda - 1) / lmbda,  for lmbda > 0
    log(x),                  for lmbda = 0
boxcox  requires the input data to be positive. Sometimes a Box-Cox transformation provides a shift parameter to achieve this;  boxcox  does not. Such a shift parameter is equivalent to adding a positive constant to x before calling  boxcox .
boxcoxは入力したデータが正の値であることを要求し、ここでの入力値は一般的に前処理されたもので、一定の範囲があり、非正の値がある場合は定数を加えて入力値が正の値であることを保証する必要がある.
Box‐Cox変換は,モデルが線形性,独立性,分散整列性および正規性を満たしながら,情報を失わないようにすることができる.
いくつかの結論:
1.Box-Cox変換後のデータを用いて得られる回帰モデルは変換前のモデルより優れており、変換はモデルの解釈力などの性能をより優れている
2、Box-Cox変換を使用すると、残差は正規性、独立性などの仮定前提をよりよく満たすことができ、擬似回帰の確率を低下させることができる.
3、Box-Cox変換ファミリーを使用すると、一般的にデータの正太変換に成功することが保証されるが、2成分以下のレベル変数の場合、変換に成功することはできない.この場合、LOGUSTICSモデル、Johnson変換などの一般化線形変換を用いることが考えられる.
4、データの変換を行うことは必ずしも私たちの予定の目標を達成するとは限らない.数学の原理がなく、行ったデータの変換が必ず各方面で原始データに対して改善されることを保証している.もっとよく見られるのは、一つの目的のためにした変換は原始データの1つまたはいくつかの方面を改善するだけである可能性がある.Box‐Cox変換の大きな利点は,変換を求める問題を推定パラメータlamdaに変換する過程に変換を求める問題に対して系統的な処理法を与えることである.