平均、分散、標準偏差 by Ruby2017年06月25日 23時18分21秒

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

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

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


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%
という結果でした。

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

コメント

コメントをどうぞ

※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。

※なお、送られたコメントはブログの管理者が確認するまで公開されません。

名前:
メールアドレス:
URL:
コメント:

トラックバック

このエントリのトラックバックURL: http://eu-ge-zwei.asablo.jp/blog/2017/06/25/8604514/tb

※なお、送られたトラックバックはブログの管理者が確認するまで公開されません。