OpenOfficeで度数分布する

驚きました。度数分布という言葉、小学校の算数の参考書に載っていました。こんな言葉、大人同士でも余り日常会話ではおなじみではないような気がしますが、いかがでしょうか?
その定義によると、全体をいくつかの区間に分け、その区間に属する人数や個数をまとめたものを度数分布表といいます(小学高学年 算数 自由自在 受験研究社発行 平成17年版)。だそうです。すごいな、小学生。ブックオフで100円で買う本もなかなか馬鹿にできません。

で、小学生にもわかる度数分布表が大人に作れなくちゃ、日本の未来のためによくないだろうということで作ったのが下の表です。

送信者 OpenOffice

これは。とある野球チームの打点成績表を背番号順に並べたものです。
成績がいい人もいれば、そこそこの人、さっぱりの人もいるのでグループ分けをしてみようということになりました。
そこで、順序として、

  1. 成績にランク(順位)をつける
  2. 順位の数字が、データの総個数を割る :これで、該当の順位が上から何パーセントのところに位置するかを把握できる
  3. 上から33%以下なら1グループ、そうでないなら、66%以下なら2グループ、そうでもないなら3グループとする
  4. グループ別の合計を算出してグループの所属人数で割る :これで、グループごとの平均打点が算出され、それぞれのグループに所属するデータ対象者のチームへの貢献度が推測できる

小学校で学習する度数分布は、ここで言えばグループの所属人数になります。

関数や数式としては特に難しいものは必要ありません。
関数名:RANK関数
書式:=RANK(対象データ;対象データが含まれる範囲;タイプ)
何ができる:対象データが、範囲の中で何番目かを返す タイプを省略するか0で降順(一番大きい数字を1とする) タイプを1にすると昇順(一番小さい数字を1とする)
平たく書くと:=RANK(C2;$C$2:$C$14)でC2セルのデータが7番目に大きいと分かる

関数名:SUMIF関数
書式:=SUMIF(条件が含まれている範囲;条件;集計の範囲)
何ができる:条件の範囲に含まれている範囲から条件に合うデータを検索し、集計の範囲内で集計する
平たく書くと:=SUMIF($E$2:$E$14;G3;$C$2:$C$14) で、C列の値が、1のときのE列の値を集計値(388)が返される。

関数名:COUNTIF関数
書式:=COUNTIF(条件が含まれている範囲;条件;集計の範囲)
何ができる:条件の範囲に含まれている範囲から条件に合うデータを検索し、データの個数を返す
平たく書くと:=COUNTIF($E$2:$E$14;G3) で、C列の値が、1のときのデータの個数(4)が返される。

ランクをデータの個数で割った値を求めると、対象データが全体の中で上から何%の位置にあるかを把握できます。
1から3グループへのグループ分けは
=IF(D2<=0.33;1;
IF(D2>=0.66;3;
2
))
と、0.33(33%)以下の場合は1
0.66(66%)以上の場合は3
そのいずれでもない場合(0.33以下でなく0.66以上でない=0.33より大きく0.66未満)は2
として、グループ分けする数式がE列に入っています。
=IF(D2<=0.33;1;IF(D2>=0.66;3;2))
この数式で得た値に基づいてI列でCOUNTIF関数を使って分布を調べています。
もっと細かいグループ化は、OpenOfficeで相関表を作る データのグループ化に書きましたのでご覧ください。

主に、この3つの関数を使ってチームの戦力分布を分析できました。これによると、チームの全打点704点の内、50%以上を4人で叩き出していることがわかります。
さらに、打点99点の選手は、チーム内の15%だということも分かります。

そうか、そういうことなんですね。そういうことも小学校で教えられるのですね。

小学生でも知ってる度数分布のサンプルファイルは、calc086.odsをダウンロードしてください。

実は、OpenOfficeにもエクセルにも度数分布を処理するFREQUENCY関数があります。その説明は、ここに書きました