web-dev-qa-db-ja.com

データを正規に変換します。特定のケースに最適な機能は何ですか?

モデルの残差を可能な限り正常にするために、最良の(または最良の1つ)変数変換を探すことができる関数またはパッケージはありますか?


例えば:

_frml = formula(some_tranformation(A) ~ B+I(B^2)+B:C+C)
model = aov(formula, data=data)
shapiro.test(residuals(model))
_

残差の正規性を最適化する関数some_transformation()とは何かを伝える関数はありますか?

8
Remi.b

Box-Cox変換のような意味ですか?

library(car)
m0 <- lm(cycles ~ len + amp + load, Wool)
plot(m0, which=2)

enter image description here

# Box Cox Method, univariate
summary(p1 <- powerTransform(m0))
# bcPower Transformation to Normality 
# 
#    Est.Power Std.Err. Wald Lower Bound Wald Upper Bound
# Y1   -0.0592   0.0611          -0.1789           0.0606
# 
# Likelihood ratio tests about transformation parameters
#                              LRT df      pval
# LR test, lambda = (0)  0.9213384  1 0.3371238
# LR test, lambda = (1) 84.0756559  1 0.0000000


# fit linear model with transformed response:
coef(p1, round=TRUE)
summary(m1 <- lm(bcPower(cycles, p1$roundlam) ~ len + amp + load, Wool))
plot(m1, which=2)

enter image description here

7
Roland

残念ながら、これは統計の解決された問題ではありません。ユーザー@statquantが提案したことは、あなたができる最善のことですが、それ自体の落とし穴がないわけではありません。

注意すべき重要な点の1つは、shapiro.testのような正規性の検定は、妥当なサンプルサイズ(つまり、数百)を取得すると、変更に非常に敏感であるため、盲目的にそれらに依存するべきではないということです。

私自身、私は問題を難しすぎるバスケットに投げ込みました。データが少なくとも正規分布に見えない場合は、データに対して実行する統計のノンパラメトリックバージョンを見つけようとします。

6
Scott Ritchie