• ニュース・更新情報
  • イベント・セミナー
  • メールマガジン
  • お問い合わせ
  • アクセス
  • 会社概要

JMPテクニカルニュース:2012年8月30日号

インデックス
  • ≪JMP Tips≫ ハンマー投げのルールを変えてみたら?〜 JMPの計算式で新しいルールを!
  • ≪コラム≫ オリンピックのメダル数を決める要素は?(前編)

≪JMP Tips≫ ハンマー投げのルールを変えてみたら?〜 JMPの計算式で新しいルールを!

今月号は、ロンドンオリンピック特集(?)です。やはりオリンピックは、何かと盛り上がりました。
日本は柔道、競泳、レスリングなどさまざまな競技でメダルを獲得しましたが、陸上競技では、男子ハンマー投げの室伏広治選手が獲得した銅メダルのみです。

そこで、今月のTipsでは、ハンマー投げのデータを用い、勝手にルールを変えてみたらどうなるかを考えてみます。その中で、JMPの計算式やその注意点についてご説明します。

男子ハンマー投げ決勝の結果を、JMPのデータテーブルにしたものを示します。
データはロンドンオリンピックの公式Webページから引用しています。

(クリックすると大きな画像が開きます)

ハンマー投げ決勝では、まず決勝に進出した12名すべての選手が3回投げ、上位8名が4回目以降投げることができます。個人の成績は、3回または6回投げた中で一番良い記録になり、順位が決定されます。

このデータでは、4投目に進めなかった9位から12位の選手は、「除外する」、「表示しない」の設定をしています。また、ファウルまたは、4回目以降投げることができなかったケースについては、欠測値としています。

ハンマー投げに限らず、円盤投げ、砲丸投げ、走り幅跳びなどでも、結局のところ、何回か投げた中での距離の最高の記録(最大値)が最終的な記録になります。

では、最高の記録ではなくて、平均的な記録を最終記録としたらどうなるでしょうか?
つまり、何回か投げた中での、距離の平均値を最終記録にするのです。たまたま1回だけ、とても良い記録を出せた選手を勝者にするのではなく、何回もコンスタントに良い結果を出せた選手が勝者になるというのもアリではないでしょうか?

ただし、ファウルをするとその回は記録がなくなりますので、すごく大胆ですが、こんなルールにしてみたらどうでしょう。

仮想ルール

6回の試技において、記録が計測された試技(ファウルではない)についての平均値を求め、
その値が最も高い選手順に順位が付けられる。
ただし、ファウルを3回以上した場合は、その時点で失格とする。

非現実的なことではありますが、仮に上記の仮想ルールで競技を行った結果が、今回のハンマー投げ決勝の結果であった場合の成績はどうなるか、JMPの計算式を用いて調べてみます(1行目から8行目までのデータ=(6回投げた選手)を対象とします)。

■ 欠測値を除いて平均値を求める

まずは6回の平均値を求めてみましょう。
列をすべて足し算して列数で割るという計算式考えられますが、今回のケースでは誤りです。

≪誤りの例≫

(クリックすると大きな画像が開きます)

欠測値のないデータであれば、このような計算式でも問題ありません。しかし、欠測値がある場合は分母は6にならず、また作成した足し算の式(分子)について1つでも欠測値があれば、計算式の値は欠測値になってしまいます。
そのため、この式で計算すると、1回もファウルをしなかった1位と7位の選手のデータのみにおいて、平均値が計算されます。

欠測値をデータに含めずに平均値を算出するには、Mean() 関数を用います。

操作:Mean関数の使用例

  1. 計算式エディタにおいて、「関数(グループ別)」より、[統計]→[Mean]を選択します。
  2. 「テーブル列」から「1st」を選択します。選択後、[挿入] のアイコン(^)をクリックします。
  3. 「2nd」を選択します。以下同様に、列「6th」まで指定します(「1st」を選択後、Shiftキーを押しながら「6th」をクリックすることにより、簡単に6つの列を追加することができます)。
(クリックすると大きな画像が開きます)

欠測値のデータを除いて平均値を求めています。

(クリックすると大きな画像が開きます)

おっと、6位の選手の平均値は他の選手に比べて低くなっています(=64.95)。
これは、5投目の18.9というデータが大きく影響しています。

[グラフ]→[パラレルプロット]を選択して、横軸を投擲回に、縦軸を距離としてグラフを描くと、このデータが大きく外れていることがわかります。

恐らく投げ損じたのでしょう。こんな記録が結果に含まれてしまうぐらいなら、ファウルの方が良いですね。

■ 欠測値のデータ数を数える

3回ファウルすれば失格という条件を判定するため、まず6回の投擲のうち何回ファウルがあったか、つまり欠測値であるデータ数を数えます。

欠測値であるデータ数を求める関数は、N Missing() 関数です。
上記のMean関数を指定する方法で、MeanをN missing(「関数(グループ別)」から[統計]→[N missing]を選択する)に置き換えて求めます。

(クリックすると大きな画像が開きます)

これで、ファウル数が求められました。

■ 条件式を設定する

作成した2つの列(「平均値」と「ファウル数」)を用いて、ファウル数が2回以下であれば平均値を、 3回以上であれば失格のため欠測値を、それぞれ返す条件式を作成します。
If関数を用いて、この条件式を作成してみます。

操作:If関数の使用例

  1. 計算式エディタにおいて、「関数(グループ別)」から[条件付き]→[If]を選択します。
  2. 「テーブル列」から、列「ファウル数」を選択します。
  3. 「関数(グループ別)」から、[比較]→[a <= b]を選択し、「2」とタイプします。
  4. 「テーブル列」から、列「平均値」を選択します。
  5. 「else ⇒」の右側に赤枠を移動し、ピリオドを入力します。
(クリックすると大きな画像が開きます)

列「結果」に、仮想ルールにのっとった結果が出力されます。
2位と4位の選手は、3回ファウルしているので失格になります、また、5投目の飛距離が短かった6位の選手は、8位に後退してしまいます。
1位の選手は、1度もファウルがなく、平均値でも79.32と1位なので素晴らしいですね。

もちろん、仮想ルールで競技を行うのであれば、選手はファウルを回避するように投げるでしょうし、思い切って一番遠くへ飛ばすことをあまり考えず、ミスをしない無難な投擲をするでしょう。
仮想ルールの方が得意という選手もいて、選手の勢力図が変化するかもしれません。

しかし考えてみると、見る側としては無難な投擲をする姿を見たいわけでなく、とにかくハンマーを思いっきり遠くへ投げる姿を見たいはずです。

スポーツのルールや採点方法は変わることもあります。
今回のロンドンオリンピックで久方ぶりに体操競技を見て、「なんで点数が10点を超えているのだ、体操は10点満点ではなかったのか?」と思ったのは、筆者だけでしょうか?


≪コラム≫ オリンピックのメダル数を決める要素は?(前編)

Tipsに続き、またまたオリンピックネタです。今月号と来月号のコラムでは、オリンピックで獲得した各国のメダルの数について考えてみます。

前回の北京オリンピックのときに比べ、ロンドンオリンピックでは、Webでオリンピックのデータが入手しやすくなりました。

The Guardianというロンドンの新聞のWebサイト(http://www.guardian.co.uk/)では、今回のロンドンオリンピックの関連するさまざまなデータを入手できます。
→ http://www.guardian.co.uk/sport/series/london-2012-olympics-data

その中で、各国が獲得したメダル(金、銀、銅)のデータを見られるページがあります。
→ http://www.guardian.co.uk/sport/datablog/2012/jul/30/olympics-2012-alternative-medal-table

そこから、メダル数に関する列のデータのみを抜き出し、下記のJMPデータにしました。

(クリックすると大きな画像が開きます)

このデータを用いて、各国のメダル獲得数をグラフ化してみます。
よく用いられるのは、金の数、銀の数、銅の数を積み上げ形式にした棒グラフではないでしょうか。
JMPのグラフビルダーを用いて描いてみます。

(クリックすると大きな画像が開きます)

グラフビルダーを用いて、上記のグラフを描画する方法については、このコラムの最後に示しています。
ただし、すべての国についてグラフを描画するとカテゴリ数が多くなるため、ここではメダル数の合計が20個以上だった国に絞っています。

グラフを描画した後、データを絞り込むために、JMP 10の新機能である「ローカルデータフィルタ」を使っています。
ローカルデータフィルタは、そこでの分析レポート、グラフのみに対してフィルタをかける機能です。

[行]メニューにある[データフィルタ]は、データテーブルの行に対して、「除外する」や「表示しない」の属性を指定するので、 フィルタをかけた後の分析レポートやグラフすべてに対してフィルタが適用されます。

ローカルデータフィルタは、レポートの赤い三角ボタンから、[スクリプト]→[ローカルデータフィルタ]を選択して起動します。

■ メダルの数による順位づけの方法は?

日本は、アメリカや中国、ロシアのメダル数には遠く及びませんが、メダル総数でみると6位と健闘しています。
しかし新聞などのメディアで報道されている国別メダル獲得ランキングでは、日本は11位です。

このランキングは、金メダルの数が多い順、金メダルが同数であれば銀メダルの数、……で順位が決まる、「金メダル至上主義(?)」の考え方です。
日本は、金メダルの獲得総数が7個と少なめだったために、メダル総数でのランクに対して順位を11位に落としています。

このほかにも、メダルの色に重みをつけてスコアを算出し、そのスコアによってランク付けするという方法も考えられます。
上記で紹介したデータでは、金メダルに3、銀メダルに2、銅メダルに1の重みをつけて、各国のメダルに対するスコア(以下、「メダルスコア」と呼びます)を算出しています。

日本オリンピック委員会(JOC)が、日本のメダル獲得選手に支給する報奨金を、金300万円・銀200万円・銅100万円と定めているので、 日本の報奨金と同じ比率の重みをつけていることになります。

メダルスコアに基づいたグラフが下図です。
JMP 10では、一変量の分布のオプションとして棒の表示順序を度数の多い順、度数の小さい順に変更することができます。
ここでは、ローカルデータフィルタを用いてメダルスコアが50以上の国のみに絞り、度数の多い順に表示しています。

(クリックすると大きな画像が開きます)

メダルスコアによるランキングでは、日本はフランスに次いで7位になります。

■ メダル数を決める要素は?

メダル数について、単にその数やスコアだけで国の順位付けをするのは公平でないと言えます。
たとえば、中国などは人口が多いのだからそれだけメダル数が多くて当然だとか、 国ごとのオリンピック出場選手数に対するメダルの割合を考えなくては、出場選手が数人しかいない国に不利になると考えられます。

上記で紹介したサイトにあるデータには、国別の「GDP(2011年)」、「人口(2010年)」、「参加選手の数」の変数もあり、 これらの数で調整した値、それらの値による国別ランクも計算されています。
メダルの数については、先ほど紹介したメダルスコアを基にしています。

これらのランキングは、先ほど紹介したページの表に、列として記載されています(GDP rank、Pop rank, Team size rank)。

日本は、GDP rankは70位、Pop rankは50位、Team size rankは21位です。
70位とは低いですね。ただ日本だけではなく、これらのランクを用いると他の上位の国(アメリカや中国など)も順位が低くなっています。

そこで、今度はGDPや人口と、総メダル数、メダルスコアとの関係を見てみましょう。
参加者数の値が大きくなるほど、メダル数やメダルスコアが高くなるということが分かっても面白くないので、ここでは考えないことにします。

今回用いるデータにある204か国のうち、半数以上の国はメダルを1つも獲得しないため、以下ではこれらの国のデータを除外して分析を行います。

データの除外は、データフィルタを用いて行います。

メダルの総数(Total)を1以上に指定すると、該当する行(国)が85か国あることがわかります。

今回の分析に用いる変数を抽出したデータテーブルです。
GDPの単位は「1ドル」、人口の単位は「1人」になります。日本には行ラベルをつけています。

(クリックすると大きな画像が開きます)

[二変量の関係]において、次のように列を指定します。

  • [Y,目的変数] に「Total」、「Total medal score」を指定
  • [X,説明変数] に「GDP.2011」、「pop.2010」を指定

下の図は、Ctrlキーをクリックしながら赤い三角ボタンをクリックし、[確率楕円]→[0.90]を選択して「相関」のレポートを表示させた状態です。

(クリックすると大きな画像が開きます)

どのグラフでも、確率楕円から大きく外れるプロットが数点あることがわかります。
相関係数をみると、GDPについては総メダル数やメダルスコアと相関が高く0.8以上ですが、人口については0.45程度であり、 相関係数は思ったほど高くはありません。

Yとして、総メダル数とメダルスコアのどちらの相関が高くなるかをみると、GDPと人口のいずれにおいてもメダルスコアの方が若干高くなります。
そのため、以後はメダルスコアをYとして話を進めていきます。

まず、右下の「Y:メダルスコア、X:人口」の散布図を考察してみます。

今回は、外れているデータや回帰分析の前提を考えず、とりあえずこの散布図に[直線のあてはめ]を選択して、回帰直線を引いてみます。

注意:
今回のデータについて、実際は、そのままのデータで直線をあてはめて良いか考える必要があります。そのままでのデータでは外れ値の影響がでるので、人口を対数変換する必要があるかもしれません。またメダルスコアは、1点から3点の値の小さいところに多くのデータが分布していますので、誤差に正規分布を仮定する回帰分析は適切でないかもしれません。
しかし、以下では上記のことを考慮せずに、回帰直線をあてはめた結果を示しています。

さらに、直線から大きく外れているプロットはどの国なのかを調べるために、行ラベルを追加します。
[ツール]→[なげなわツール]を用いて、これらのデータをなげなわで囲み、右クリック→[行ラベル]を選択すると、 まとめて行ラベルをつけることができます。

(クリックすると大きな画像が開きます)

人口が多い中国とインドは直線に対し、対称的な位置関係です。
インドは、人口が多いけれどメダルスコアは小さいことがわかります。
逆にイギリス、ロシア、アメリカは、人口が少ない割にメダルスコアは大きいことがわかります。

このように、外れているデータが相関に大きく影響を及ぼしていることも一因ですが、 人口そのものがメダルスコアを説明する大きな要因にはならない理由は、何となくわかりましたでしょうか?

次に、左下のY:メダルスコア、X:GDPの散布図を考察してみます。
こちらの散布図にも同様に、回帰直線をあてはめてみます。

(クリックすると大きな画像が開きます)

先ほど行ラベルをつけたものがこのグラフに反映されていますが、インドは、直線から大きくは外れてはいません。
確率楕円から大きく外れているデータがあることに留意する必要はありますが、直線のあてはまり具合は、まあまあ良いといえるでしょう。

GDP1位のアメリカと2位の中国は直線より上に位置するのに対し、3位の日本は直線の下側に位置します。
すなわち、日本はGDPが高い割にはメダルスコアが小さいということになります。

GDPの大きさでメダルスコアが予測できるとき、日本のGDPから考えればもっとメダルを取ってしかるべきだった、 または日本のメダル数は予測より少なかったということになります。

他にも、国ごとに「GDP÷人口」を計算して1人あたりのGDPを求め、これを説明変数(X)にすることも考えられますが、今回この解析については省略します。

それでは、GDPのほかにメダルスコアを決める要素はあるのでしょうか?
それは、来月号で考えてみます。

参考:各国のメダル獲得数の積み上げ棒グラフを作成する方法

  1. [グラフ]→[グラフビルダー]を起動します。
  2. 「Contry.name」を[Y]のゾーンにドロップし、「Gold」、「Silver」、「Bronze」の3つの列を同時に選択し、[X]のゾーンにドロップします。
  3. グラフ上を右クリックし、[点]→[変更]→[棒]を選択します。
  4. 再度グラフ上を右クリックし、[棒]→[棒のスタイル]→[積み重ねて表示]を選択します。
  5. 「Total」をYのラベル(Contry.name)の箇所にドロップします。この手順により、Totalの値の小さい順に下から上へと並べ替えられます。
  6. 右上の凡例の色を右クリックして、色を変更します。