さて、夜中は自分の好きなコトをする時間。
ストレス発散も兼ねつつ、知識の泉にはまり込むような感覚と
新しいことが出来るようになる感覚と、
目的に一歩一歩近づいてる感覚が混ざった感じ。
データ分析には欠かせない統計学。
統計学の基本中の基本である、算術平均、分散、標準偏差。
まずは、サンプルを適当に作って、その数字群の
平均、分散、標準偏差を求めるプログラムを作成。
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%
という結果でした。
初夏の夜長に、標準偏差分析はいかが???
セコメントをする