新浪博客

R语言正态变换-powerTransform变换

2016-12-01 13:53阅读:
当我们对数据进行分析时,当数据不满足正态分布时,会限制我们的分析,因此数据的正太变换变得尤为重要。接下来就讲解一下使用R语言对数据进行正太变换。
说先我们说一下正太变换的思路:当数据不服从正太分布时,我们可以通过对数据集中所有数据进行统一运算,从而使数据集服从正太分布。我们的数据集不能有0或者负数。
变换多用y^λ​替代y,λ的常见值如下。
λ​
-2
-1

-0.5

0
0.5
1

2

y^-2 y^-1
sqrt(y)​
log(y)
根号y
y
y^2
我们用R中的car包powerTransform()函数,函数通过λ​的最大似然估计来正态化y^λ
代码:
library(car)
set.seed(1074)


设置随机数种子,以便于找到接下来的随机数
q<-rnorm(100)

设置100个随机数
shapiro.test(q)​


对数据集进行正太检验
p-value=0.1623>0.05
表明数据集服从正太分布
min(q)



检查数据集是否含有0或者负数
[1]-1.712829
我们需要将数据集整体加2,使数据集满足条件。
q<-q 2
summary(powerTransform(q))
求出
λ0.63
我们用0.5代替0.63​
b<-sqrt(q)
这样b就服从正太分布了。
很简单吧。​

我的更多文章

下载客户端阅读体验更佳

APP专享