提供:Japanese Scratch-Wiki

このきじは ひらがなでよめません。ごめんなさい。編集者向け:作成する

標準偏差とは、データのばらつきの様子を示す数値である。統計的な処理を行うときに、よく使用される。詳しくはWikipedia「標準偏差」を参照のこと。

標準偏差の定義

標準偏差とは、分散の正の平方根のことである。

では、分散とは何だろうか。これは、各データと平均値の差を2乗して、さらにこの平均をとったものである。 標準偏差と分散は、ともにデータのばらつき度合い、-- 各データがある値周辺に固まっているか、バラバラであるか -- を示す数値である。次の例で確認してみよう。

ここに5本の花があるとする。それぞれの高さは、25 cm、60 cm、40 cm、45 cm、55 cmである。これらの花の高さの平均は次の式で求められる:

25 + 60 + 40 + 45 + 55)

5

= 45

したがって、花の高さの平均は45 cmである。では、花の高さの分散はどうだろうか。

花 #1: (25-45)2=(-20)2400

花 #2: (40-45)2=(-5)2= 25

花 #3: (45-45)2=02= 0

花 #4: (55-45)2=102= 100

花 #5: (60-45)2=152= 225

400 + 25 + 0 + 100 + 225

5

= 150

したがって、花の高さの分散は150である。これの平方根をとれば標準偏差になるので、花の高さの標準偏差は150の平方根を計算して、約12.247...となる。

ただし、標準偏差には2種類が存在する。1つは、すべてを対象とした調査の結果に基づく標準偏差だ。これを母集団の標準偏差、または、母標準偏差と言う。たとえば、世の中にこの5本しか花というものが存在しない場合、先ほどの12.247が花の高さの母標準偏差になる。

もう1つの標準偏差は、標本標準偏差だ。これは、対象の一部のみを取り出したデータ (標本:サンプル) に対する標準偏差のことである。たとえば、現実には、明らかに5本以上の花が存在しており、先ほどの花の高さはそのごく一部を取り上げたものであるため、この例では本来、標本標準偏差を適用すべきであった。

2つの標準偏差の違いは、分散の計算方法にある。母標準偏差は、先ほど述べたルールで分散を計算するのに対し(これを母分散と言う)、標本標準偏差では、各データと平均の差の2乗を合計した後、データの個数から1引いた数でこれをわる(これを標本分散と言う)。たとえば、花の高さの例に戻ると、次の計算で標本分散が求められる:

400 + 25 + 0 + 100 + 225

5 - 1

=187.5

5は高さがわかっている花の本数である。ここから1を引くのは、これが標本分散だからである。 最後に、標本分散の平方根をとれば、求める標本標準偏差が計算できる。ここでは、標本分散が187.5であるから、標本標準偏差は約13.693...となる。

スクリプト例

変数/リスト

ここでは、次の変数リストを使用する:

  • データ — 標準偏差をもとめるデータがはいったリスト。

さらに、次の7つの変数を使用する。

  • 平均
  • 合計
  • 分散
  • 標準偏差
  • 合計2
  • 現在の項目
  • 現在の項目2


まずは、標本標準偏差の求め方から見ていこう。

最初に、対象となるデータの平均値を求める必要がある。これは次のスクリプトのとおりである:

@greenFlag が押されたとき::events hat
[合計 v] を (0) にする// 変数をリセット
[現在の項目 v] を (1) にする
([データ v] の長さ::list) 回繰り返す
  [合計 v] を ([データ v]の(現在の項目)番目::list) ずつ変える
  [現在の項目 v] を (1) ずつ変える //変数 「現在の項目」は現在取り上げているデータを示す数値
end
[平均 v] を ((合計) / ([データ v] の長さ::list)) にする

次に、標本分散を計算する:

[合計2 v] を (0) にする
[現在の項目2 v] を (1) にする
([データ v] の長さ::list) 回繰り返す
  [合計2 v] を ((([データ v]の(現在の項目2)番目::list) - (平均)) * (([データ v]の(現在の項目2)番目::list) - (平均))) ずつ変える
   [現在の項目2 v] を (1) ずつ変える
end
[分散 v] を ((合計2) / (([データ v] の長さ::list) - (1))) にする

最後に、分散の平方根をとる。

[標準偏差 v] を ((分散)の[平方根 v]::operators) にする

以上のスクリプトをまとめて実行すれば、標本標準偏差が求められる。 母標準偏差を求める場合は、上記の分散を求める場所を次のように修正すればよい:

[分散 v] を ((合計2) / ( [データ v] の長さ::list)) にする

完成したスクリプト

標本標準偏差を求めるコードは次のとおり:

@greenFlag が押されたとき::events hat
[合計 v] を (0) にする// 変数をリセット
[現在の項目 v] を (1) にする
([データ v] の長さ::list) 回繰り返す
  [合計 v] を ([データ v]の(現在の項目)番目::list) ずつ変える
  [現在の項目 v] を (1) ずつ変える //変数 「現在の項目」は現在取り上げているデータを示す数値
end
[平均 v] を ((合計) / ([データ v] の長さ::list)) にする
[合計2 v] を (0) にする
[現在の項目2 v] を (1) にする
([データ v] の長さ::list) 回繰り返す
  [合計2 v] を ((([データ v]の(現在の項目2)番目::list) - (平均)) * (([データ v]の(現在の項目2)番目::list) - (平均))) ずつ変える
   [現在の項目2 v] を (1) ずつ変える
end
[分散 v] を ((合計2) / (([データ v] の長さ::list) - (1))) にする
[標準偏差 v] を ((分散)の[平方根 v]::operators) にする

母標準偏差を求めるコードは次のとおり:

@greenFlag が押されたとき::events hat
[合計 v] を (0) にする// 変数をリセット
[現在の項目 v] を (1) にする
([データ v] の長さ::list) 回繰り返す
  [合計 v] を ([データ v]の(現在の項目)番目::list) ずつ変える
  [現在の項目 v] を (1) ずつ変える //変数 「現在の項目」は現在取り上げているデータを示す数値
end
[平均 v] を ((合計) / ([データ v] の長さ::list)) にする
[合計2 v] を (0) にする
[現在の項目2 v] を (1) にする
([データ v] の長さ::list) 回繰り返す
  [合計2 v] を ((([データ v]の(現在の項目2)番目::list) - (平均)) * (([データ v]の(現在の項目2)番目::list) - (平均))) ずつ変える
   [現在の項目2 v] を (1) ずつ変える
end
[分散 v] を ((合計2) / ([データ v] の長さ::list)) にする
[標準偏差 v] を ((分散)の[平方根 v]::operators) にする

関連項目

Cookieは私達のサービスを提供するのに役立ちます。このサービスを使用することにより、お客様はCookieの使用に同意するものとします。