はじめに
Rを学びたいStep12です。今回は標準偏差を学んでいきます!
標準偏差とは?
標準偏差(ひょうじゅんへんさ、Standard Deviation)は、データのばらつきを示す統計量の一つです。データが平均からどれだけ散らばっているかを表します。標準偏差が小さいほどデータは平均値の近くに集まっており、大きいほどデータは広く散らばっています。
標準偏差の求め方
- データの平均値を計算する。
- 各データ点から平均値を引き、その差を二乗する。
- その二乗した値の平均を求める(分散)。
- 分散の平方根を取る。
標準偏差は(各データ-平均値)の合計をそのまますると0になります。
負の数を考慮するため、2乗してその後平方根で戻すようです。
標準偏差の実用例
標準偏差を利用する例で身近なものは偏差値です。サンプルを例に標準偏差、偏差値を出していこうと思います。
1. 平均を算出
国語の平均点を出します。
(90+80+60+70+40)/5=68(点)
2. 分散を算出します。
\sigma^2 = \frac{1}{N} \sum_{i=1}^{N} (x_i - \mu)^2
((90-68)^2+(80-68)^2+(60-68)^2+(70-68)^2)+(40-68)^2)/5
=(22^2+12^2+(-8)^2+2^2+(-28)^2)/5
=(484 + 144 + 64 + 4 + 784)/5
=1480/5
=296
3. 標準偏差
先ほど算出した分散をルートをつけます。
\sqrt{\frac{1}{N} \sum_{i=1}^N (x_i - \mu)^2}
=√296
=17.204
4. 偏差値を表示する
では、最後に偏差値を出していきます。
{偏差値} = 50 + 10 \times \frac{x - \mu}{\sigma}
Aの偏差値:
50 + 10 * (90-68)/17.204
= 50 + 10 * 1.2788
= 50 + 12.788
=62.78
ソースコード
# データ
data <- c(90, 80, 60, 70, 40)
# 平均値
mean_value <- mean(data) # 平均値
# 偏差の2乗の合計
squared_deviation <- sum((data - mean_value)^2)
# 母分散
variance_population <- squared_deviation / length(data)
# 母標準偏差(分散の平方根)
sd_population <- sqrt(variance_population)
# 結果の出力
cat("母分散:", variance_population, "\n")
cat("母標準偏差:", sd_population, "\n")
# 偏差値の計算
deviation_scores <- 50 + 10 * (data - mean_value) / sd_population
# 偏差値の出力
cat("偏差値:\n")
for (i in 1:length(data)) {
cat(sprintf("得点: %d -> 偏差値: %.2f\n", data[i], deviation_scores[i]))
}
~/develop/R/r_study/standard_deviation (main)$ Rscript standard_deviation.r (base)
母分散: 296
母標準偏差: 17.20465
偏差値:
得点: 90 -> 偏差値: 62.79
得点: 80 -> 偏差値: 56.97
得点: 60 -> 偏差値: 45.35
得点: 70 -> 偏差値: 51.16
得点: 40 -> 偏差値: 33.73