2013-10-15 108 views
-2

z评分我有一个样本数据帧:计算中的R

data<-data.frame(a=c(1,2,3),b=c(4,5,5),c=c(6,8,7),d=c(8,9,10)) 

而且要计算在数据帧中的Z值的每一行并做:

scores<-apply(data,1,zscore) 

我用zscore从

install.packages(c("R.basic"), contriburl="http://www.braju.com/R/repos/") 

功能,获得该

row.names  V1   V2   V3 
    a  -1.2558275 -1.2649111 -1.0883839 
    b  -0.2511655 -0.3162278 -0.4186092 
    c  0.4186092 0.6324555 0.2511655 
    d  1.0883839 0.9486833 1.2558275 

但是当我尝试手动计算z值的数据帧I获得以下值的第一行:

 -1.45 -0.29 0.4844, 1.25 

手动,对于第一行,我计算如下:

1)计算第一行的行平均值(4.75)

2)从行平均值中减去每个值(例如, 4.75-1。,4.75-4。,4.75-6。,4.75-8)

3)各方差。

4)在第1行

5把它们加起来并除以样品的量),因此我得到的方差(回答= 6.685),然后得到的第一行的标准偏差(2.58)单独

6)然后应用z分数的公式。

+1

这个'zscore'函数是什么?这是你写的东西?或者它在一个包里? –

+1

**“我可以知道哪里出错了?”**这是一个非常模糊的问题。您需要指出(1)您如何手动计算值以及(2)如何定义“zscore”。你从apply函数得到的值是正确的(w.r.t.你显示的data.frame),所以我猜测错误在于(#1) –

+0

也许你的意思是'scale'函数?请分享您如何通过手工计算价值。 – daroczig

回答

4

zscore函数,不管它是什么,似乎都与base包中的scale相同。

apply(data, 1, scale) 
##   [,1]  [,2]  [,3] 
## [1,] -1.2558275 -1.2649111 -1.0883839 
## [2,] -0.2511655 -0.3162278 -0.4186092 
## [3,] 0.4186092 0.6324555 0.2511655 
## [4,] 1.0883839 0.9486833 1.2558275 

对于每一列,它是计算(x - mean(x))/sd(x)