平均、分散、標準偏差 by Ruby
2017-06-25


さて、夜中は自分の好きなコトをする時間。
ストレス発散も兼ねつつ、知識の泉にはまり込むような感覚と
新しいことが出来るようになる感覚と、
目的に一歩一歩近づいてる感覚が混ざった感じ。

データ分析には欠かせない統計学。
統計学の基本中の基本である、算術平均、分散、標準偏差。

まずは、サンプルを適当に作って、その数字群の
平均、分散、標準偏差を求めるプログラムを作成。

禺画像]

Ruby恐るべし、同じことを計算するのに、いくつものやり方が許容されてる。
さすが高級コンピュータ言語。
サンプルデータ(配列名 data)の数を計算するのでも、
data.length でもOK。
data.count でもOK。
data.size でもOK。
データの合計を出すのは、sumメソッドを使うと楽だ。
data.sum で、合計が算出される。

禺画像]

分散を計算するのは、injectメソッドを使うことにした。
injectは、まだ正直理解しきってはいないが、便利らしい。

sum_of_squares = data.inject(0){|sum,i| sum +(i-mean)**2]
標本数で割る前のΣ(xi-μ)^2をinjectメソッドで表現。

sum=sum +(i番目の配列データ - mean)^2

ということなのだろう。

それを標本数nで割れば、分散のできあがり。
その平方根を取れば、標準偏差のできあがり!


調子に乗って、2010年から記録してるガソリン価格の
平均、分散、標準偏差を計算させてみた。

禺画像]
平均は137円/L
分散は293
標準偏差は17.12
このデータから、エクセルでグラフを描かせてみた。

禺画像]

ここ7年くらいのガソリン価格の分布はこんなもんだ。
正規分布に則るとして。

120円〜140円で40.5%を占めている。
160円以上は8.8%
120円以下は15.3%
という結果でした。

初夏の夜長に、標準偏差分析はいかが???
[電脳]

コメント(全0件)
コメントをする


記事を書く
powered by ASAHIネット