将规范化变量转换回非规范化值

时间:2014-02-06 05:40:40

标签: r normal-distribution

我构建了一个kmeans集群,我首先对R中的几个变量进行了规范化。该模型为我提供了集群中心,但它们显然处于规范化状态(如收入中心为-1.6)。

我想将-1.6转换回非标准化值,以便能够赋予其实际意义(如收入为42,000)。

现在我可以将z-score单独转换回一个值,但有几种规范化变量和R函数可以做到这一点吗?

我可以从pnorm()开始获取百分比 - 但是在我标准化它之前,我可以寻找更多可以应用回原始数据帧的东西。

2 个答案:

答案 0 :(得分:4)

您需要标准偏差和原始数据的平均值。如果你有那些非规范化只是x = std * z + m,其中std和m是标准偏差和x的平均值。该等式直接来自z-score的定义。

答案 1 :(得分:0)

一旦进行了集群分配,最简单的方法就是计算(原始)数据的均值。例如,使用plyr:

# install.packages('plyr')
require(plyr)
dat <- mtcars[,1:4]
dat$cvar <- kmeans(scale(dat), 3)$cluster
ddply(dat, c("cvar"), colwise(mean))

  cvar      mpg      cyl     disp        hp
1    1 13.41429 8.000000 390.5714 248.42857
2    2 23.97222 4.777778 135.5389  98.05556
3    3 16.78571 8.000000 315.6286 170.00000