2013-10-15 105 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)