目次(まとめ)

◾️ 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)}

関連記事