Rによる分散・標準偏差・Z得点・偏差値の算出
概要
Rによる分散・標準偏差・Z得点・偏差値の算出方法をご紹介します。
関数
var(): 不偏分散
不偏分散を算出するには、var()
を使います。
x <- c(10, 13, 8, 15, 8) x # [1] 10 13 8 15 8 # 不偏分散 var(x) # [1] 9.7
sd(): 標準偏差
標準偏差を算出するには、sd()
を使います。
もしくは、sqrt(var(x))
で分散の平方根をとります。
x <- c(10, 13, 8, 15, 8) x # [1] 10 13 8 15 8 # 標準偏差(不偏分散) > sd(x) [1] 3.114482 # OR > sqrt(var(x)) [1] 3.114482
varp() // 標本分散 独自関数
不偏分散ではなく、標本分散を算出したい場合は、以下のような独自関数を作成します。
自由度を n
ではなく n-1
に置き換える必要があります。
# 標本分散を算出する関数 varp <- function(x) { ret <- var(x) * ( length(x) - 1 ) / length(x) ret } x <- c(10, 13, 8, 15, 8) x # [1] 10 13 8 15 8 # 標本分散 varp(x) # [1] 7.76 # 標準偏差(標本分散) > sqrt(varp(x)) [1] 2.785678
score(): 標準化によるZ得点
Z得点(z値、z-score、z-value)とは、
平均が0
標準偏差が1
になるように変換した得点のことを指し、
(値 - 平均) / 標準偏差
で算出できます。
また、偏差値とは、
平均が50
標準偏差が10
になるように変換した値であり、
z得点 * 10 + 50
で算出できます。
z得点 = (値 - 平均) / 標準偏差 平均(z得点) = 0 標準偏差(z得点) = 1 偏差値 = z得点 * 10 + 50 平均(偏差値) = 50 標準偏差(偏差値) = 10
scale()
を使えば、標準化できます。
> num <- sample(20) > num [1] 6 8 17 18 19 2 11 1 20 5 15 3 16 12 9 14 7 13 4 10 > z_score <- scale(num) > z_score [,1] [1,] -0.76063883 [2,] -0.42257713 [3,] 1.09870053 [4,] 1.26773138 [5,] 1.43676223 [6,] -1.43676223 [7,] 0.08451543 [8,] -1.60579308 [9,] 1.60579308 [10,] -0.92966968 [11,] 0.76063883 [12,] -1.26773138 [13,] 0.92966968 [14,] 0.25354628 [15,] -0.25354628 [16,] 0.59160798 [17,] -0.59160798 [18,] 0.42257713 [19,] -1.09870053 [20,] -0.08451543 attr(,"scaled:center") [1] 10.5 attr(,"scaled:scale") [1] 5.91608 > mean(z_score) [1] 0 > sd(z_score) [1] 1 # 偏差値 = z得点 * 10 + 50 # 平均(偏差値) = 50 # 標準偏差(偏差値) = 10 > standard_score = z_score * 10 + 50 > standard_score [,1] [1,] 42.39361 [2,] 45.77423 [3,] 60.98701 [4,] 62.67731 [5,] 64.36762 [6,] 35.63238 [7,] 50.84515 [8,] 33.94207 [9,] 66.05793 [10,] 40.70330 [11,] 57.60639 [12,] 37.32269 [13,] 59.29670 [14,] 52.53546 [15,] 47.46454 [16,] 55.91608 [17,] 44.08392 [18,] 54.22577 [19,] 39.01299 [20,] 49.15485 attr(,"scaled:center") [1] 10.5 attr(,"scaled:scale") [1] 5.91608 > mean(standard_score) [1] 50 > sd(standard_score) [1] 10
以上です。