比如说x向量的数据不符合正态分布,要用MASS包boxcox函数转换为正态分布
x <- c(2.8,2,2.2,3.1,3.5,2.2,2.6,2.6,2.4,3.5,2.3,2.6,1.8)
boxcox怎么用呢,λ的值如何确定
</p>
比如说x向量的数据不符合正态分布,要用MASS包boxcox函数转换为正态分布
x <- c(2.8,2,2.2,3.1,3.5,2.2,2.6,2.6,2.4,3.5,2.3,2.6,1.8)
同问
就我个人的粗浅理解:
x 经过 boxcox 变换后的形式 (x^λ+1)/λ 是正态分布,关键是如何选择λ。
先来模拟一组偏态数据:
<br />
x = rf(500,30,30)<br />
hist(x, breaks=12)<br />
</p>
再来寻找Box-Cox的λ:
<br />
result = boxcox(x~1, lambda=seq(-0.5,0,5,1/50))<br />
</p>
楼主可以看到一个λ的图形,我们选择那个使曲线最高点的λ值,一般就可以了。对于不同的数据,可能要调整lambda的取值范围,我选了-0.5~0.5。
选择最合适的λ:
<br />
mylambda = result$x[which.max(result$y)]<br />
</p>
现在我们看看效果:
<br />
x2 = (x^mylambda+1)/mylambda<br />
hist(x2)<br />
更进一步的,具体可以参考MASS(Modern Applied Statistics With S)这本书。
现在信心爆棚了吧?以为box-cox转换可以把你手里面不是正态分布的数据变成正态的了吧?
做梦!!!
一般的单峰稍微偏态的,box-cox变换还可以进行正态分布变换。但是,你试试双峰分布,看看能不能行?其它的变态分布,就更不用提了。
一定要读书哦,切不可养成单单依赖网上搜索的只言片语,断章取义的习惯。