目次(まとめ)
◾️ Rubyで数値配列の中央値を求めるときには、あらかじめ並び替えた数値配列が必要です
◾️ 数値配列の最大値、最小値、平均値、最頻値の算出方法のまとめ
こんにちは、みっちゃんです。
今回の記事では、Rubyを使ったプログラミングをしている方向けに、数値配列の中央値を求めるときに注意すべきことを紹介します。
Rubyで数値配列の中央値を求めるときには、あらかじめ並び替えた数値配列が必要です
ここでは、Rubyの数値配列を以下のように準備します。
arr = [5, 2, 6, 1, 9]
この数値配列の中央値は、明らかに "5" ですが、以下のようなRubyスクリプトファイル(test.rb)を実行してみます。
# test.rb
arr = [5, 2, 6, 1, 9]
p arr.size % 2 == 0 ? arr[arr.size/2 - 1, 2].inject(:+) / 2.0 : arr[arr.size/2]
これを実行すると、"6" が中央値として出力されるので、誤りであることがわかります。
この問題を解決するためには、以下のように修正する必要があります(test_modified.rb)。
# test_modified.rb
arr = [5, 2, 6, 1, 9]
arr.sort!
p arr.size % 2 == 0 ? arr[arr.size/2 - 1, 2].inject(:+) / 2.0 : arr[arr.size/2]
これを実行すると、"arr.sort!" の文で数値配列 "arr" の中身が昇順に並び変わるので、中央値は "5" として正しく出力されるようになります。
数値配列の最大値、最小値、平均値、最頻値の算出方法のまとめ
ここでは、中央値の他の代表的な統計値である、最大値、最小値、平均値、最頻値の算出方法を紹介します。
上で使用した数値配列 "arr" を用います。
数値配列から最大値を算出したい場合
arr.max
数値配列から最小値を算出したい場合
arr.min
数値配列から平均値を算出したい場合
arr.inject(0.0){|r,i| r+=i }/arr.size
数値配列から最頻値を算出したい場合
arr.max_by {|value| arr.count(value)}