我想标准化R中的数据(平均零和标准差1.0),我使用scale()
函数.我的所有数字都大于零.但是当我将它们标准化时,我仍然有数字; 100,......更奇怪的是,当我绘制密度时,我的密度也为负值!!
这是我的数据的子集:
Tr[1:10,]
[1] 1.287161e+01 1.300534e+00 1.140467e+00 7.958636e-01 4.886365e-01
data<-scale(Tr)
Run Code Online (Sandbox Code Playgroud)
有人会帮我解决这个问题吗?
评论太久了:
我不明白为什么你会感到惊讶.您使用它的方式,scale(...)
减去每个值的均值,并将结果除以标准差.因此,任何小于平均值的值都将缩放为负数,并且任何超过平均值100个标准差的值将缩放到> 100(或<-100).你可能有一些与mean/sd相比非常大的异常值.
set.seed(1)
X <- rpois(1000,5)
Z <- scale(X)
par(mfrow=c(1,2))
hist(X)
hist(Z)
Run Code Online (Sandbox Code Playgroud)