创建z分数

Ros*_*che 14 r

我有一个由57个变量组成的数据文件.由于测量水平不均衡,我想将其中的12个转换为z分数.我查找了互联网资源和帮助文件.一个互联网资源建议我需要包Rbasic(不存在).我使用了scale(),它似乎只是以变量为中心.我试过V5-mean/st.dev.这让我非常奇怪的分数.有人可以给我实际的adivce吗?

Rei*_*son 34

scale() 这是正确的选择:

> x <- 1:10
> scale(x)
            [,1]
 [1,] -1.4863011
 [2,] -1.1560120
 [3,] -0.8257228
 [4,] -0.4954337
 [5,] -0.1651446
 [6,]  0.1651446
 [7,]  0.4954337
 [8,]  0.8257228
 [9,]  1.1560120
[10,]  1.4863011
attr(,"scaled:center")
[1] 5.5
attr(,"scaled:scale")
[1] 3.02765
> (x - mean(x)) / sd(x)
 [1] -1.4863011 -1.1560120 -0.8257228 -0.4954337 -0.1651446
 [6]  0.1651446  0.4954337  0.8257228  1.1560120  1.4863011
> mean(x)
[1] 5.5
> sd(x)
[1] 3.02765
Run Code Online (Sandbox Code Playgroud)

注意返回的对象中的属性scale()是输入数据的均值和SD.

现在你没有提供真实的代码来展示你如何计算"V5-mean/st.dev"但是如果你这样做的话,那么运算符优先级可能会让你失望.例如,这不会返回正确的z分数:

> x - mean(x) / sd(x)
 [1] -0.8165902  0.1834098  1.1834098  2.1834098  3.1834098
 [6]  4.1834098  5.1834098  6.1834098  7.1834098  8.1834098
Run Code Online (Sandbox Code Playgroud)