標準偏差を計算する。

Rを用いて標準偏差を計算してみます。

標準偏差を計算するためには分散が必要になります。
ここで、分散の定義は以下のとおりです。

分散 = \frac{(データ1 - 平均)^{2} + (データ2 - 平均)^{2} + ... + (データn - 平均)^{2}}{n}

まずは、乱数を生成して分散を求めてみます。

scores <- rnorm(n=1000, mean=50, sd=10) # 平均50、標準偏差10の分布に従う乱数を1000個生成
ave_scores <- mean(scores) # 平均を計算
var_scores <- sum((scores - ave_scores)^2) / length(scores) # 分散を計算
var_scores
# 94.458...

次に、標準偏差を求めます。
標準偏差の定義は、

標準偏差 = \sqrt{分散} = \sqrt{\frac{(データ1 - 平均)^{2} + (データ2 - 平均)^{2} + ... + (データn - 平均)^{2}}{n}}

です。
従って、分散の平方根を計算することで求まります。

std_div_socres <- sqrt(var_scores) # 分散を元に標準偏差を計算
std_div_socres
# 9.718...

なお、今回は乱数を生成したため数値結果は実行するたびに異なる値になる可能性がありますが、標準偏差は10前後になります。
これは、最初の乱数の生成に利用した分布が標準偏差10と設定していたからです。

ちなみに、Rには分散や標準偏差を簡単に求める関数が準備されています。

scores <- rnorm(n=1000, mean=50, sd=10) # 平均50、標準偏差10の分布に従う乱数を1000個生成
var(scores) # 分散を計算
# 92.059...
sd(scores) # 標準偏差を計算
# 9.594...

ただし、これらは初めに求めた分散と標準偏差とは少し異なっています。
初めの式が「標本分散」を求めたのに対して、Rの標準関数は「不偏分散」を基に計算しているからです。
「標本分散」は母集団から取り出してきたデータの塊(標本)を元にした分散で、「不偏分散」は標本と母集団との差を補正した分散(具体的には、分散計算時の分母をn-1にする)です。

というわけで、同じように分散・標準偏差といっても意味合いが異なっている場合があるので注意しましょう。
以上、Rでの標準偏差の計算方法でした。


Rによるやさしい統計学
山田 剛史 杉澤 武俊 村井 潤一郎
オーム社
売り上げランキング: 7,330