Box-Cox参数估计是否达到lambda = 0?这样推荐的变换是一个日志函数?或者这种可能性只是一种数学上的好处,使函数连续,但很少在实践中使用?
我问,因为我一直在尝试在R中测试Box Cox变换,看它是否在适当的时候估算lambda==0
:
> require(car)
> x <- exp(qnorm(runif(1000))) # 1000 numbers from a normal distribution then exp()
> p = powerTransform(x)
> p
Estimated transformation parameters
x
-0.1098415
# clearly this does not equal zero
答案 0 :(得分:5)
由于数据是随机的,因此您不会得到完全零。
> p <- powerTransform(rlnorm(100))
> coef(p)
rlnorm(100)
-0.05007203
> coef(p, round=TRUE) # Recommended transform
rlnorm(100)
0
如果删除随机性,则该值更接近于零。
> p <- powerTransform(qlnorm(ppoints(100)))
> p
Estimated transformation parameters
qlnorm(ppoints(100))
-2.635191e-12
答案 1 :(得分:2)
我认为您需要将标准更改为“足够接近”。当我用随机的任何东西做同样的程序时,我得到了
> p
Estimated transformation parameters
x
0.01389905
我的进一步实验表明,你的价值在分布的“异常值”区域。当我这样做1000次时,我甚至没有像你那样极端的价值:
v <- vector("numeric", 1000)
for (i in 1:1000) {x <- exp(qnorm(runif(1000)))
v[i] = powerTransform(x)$lambda}
Hmisc::describe(v)
v
n missing unique Mean .05 .10
1000 0 1000 -0.000212 -0.039335 -0.033698
.25 .50 .75 .90 .95
-0.017978 -0.001259 0.017593 0.033499 0.044303
lowest : -0.09670 -0.09472 -0.08878 -0.08456 -0.07255
highest: 0.06730 0.06830 0.06932 0.06955 0.07142
除了Venables&amp; @Josh O'Brien提到的Ripley's MASS :: boxcox,在John Fox的软件包中提供了一个car :: boxCox函数的广泛的回归诊断功能(你已经加载了)。