毎朝 NHK ニュースを見ながら朝食をとるので、頭の中がすっかりタマシイレボリューション(の一部)に占領されてしまっている今日この頃、実にタイムリーな記事が Mathematica 開発元のブログに掲載された。Mathematica でワールドカップ勝敗シミュレーションをやってみようというもの。

右のグラフは、記事で解説されていた方法で決勝トーナメントを 1000 回シミュレーションし、それぞれの国が準決勝に残った回数を表したものだ。

このシミュレーションのベースになっているのは、Elo レーティングという、各国のパフォーマンス。この Elo レーティングでは、試合におけるあるチームのパフォーマンスは、ある確率分布曲線に従うものとなっているとのこと。

例えば、現時点のデータで日本とプラジルのパフォーマンスを並べると、右のようになる。ほとんどの場合ブラジルの方がパフォーマンスが良いが、何度もやっていれば日本のパフォーマンスがブラジルを上回ることだってある(赤と青が交差する部分)ということだ。これを使って、決勝トーナメントのそれぞれの組み合わせ勝敗を 1000 回シミュレートして作成したのが最初のグラフである。

トーナメントなので、絶対に対戦しない組み合わせというのがあるためか、優勝チームのシミュレーションの結果はまたぜんぜん別の順番になるし、1000 回を何度も繰り返すと意外なほど順番が入れ替わったりして、なかなか面白い。

興味のある人は、元記事で公開されている Mathematica ソースファイルをダウンロードしてぜひ試してみて欲しい。Mathematica を持っていない人も、Mathematica Player をダウンロードすれば、コードを見ることはできる。

コードを見るときに注目して欲しいのは、分析に必要な全てのデータが、各種ウェブページで公開されているものを直接読み込んで準備できているところだ。別途手作業でエクセルで加工してデータファイルを用意して、などという工程はなく、すべてが Mathematica の中で完結しているのだ。

例えば、Elo レーティングの情報はこんな感じ。普通のウェブページにある表のデータを直接抽出している。(この Elo レーティングのサイトは、ワールドカップ期間中繋がりにくいため、元記事のコードには、Google キャッシュWikipedia から抽出する例も載っている)

eloratings =
  Import["http://www.eloratings.net/world.html", "Data"][[3]];

決勝トーナメント進出国のリストも、グループリーグ結果を掲載した FIFA のウェブページから直接読み込んでいる。

groupstandings =
  Import["http://www.fifa.com/worldcup/standings/index.html",
    "Data"][[3, 2, All, 2, 2, All, 1]];

国旗の画像にいたっては、Mathematica のデータ取得関数を使って他のソフトや情報源なしにすべて揃えることができるのだ。

Mathematica 6 以降、本当に様々なデータを直接 Mathematica で利用できるようになった。一般のウェブページに掲載された好きな表のデータをそのまま使ってシミュレーションデータとして使えるなんて、なんだかスゲーことだよねぇ。

※この記事の内容は執筆者の個人的見解で、ヒューリンクスによる公式情報ではありません。[免責事項]

トラックバック

この記事へのトラックバックURL
http://blog.hulinks.co.jp/cgi/mt/mt-tb.cgi/428
内容に対しての関連性がみられないものは削除する場合があります

コメント一覧

タイムリーな記事ですね.楽しませてもらいました.また,Mathematicaって,なんでも計算対象にしてしまえるんですよね.印象的な例題,ありがとうございました.

skybird さん、コメントありがとうございます。おっしゃる通り、なんでも対象にできるというのは、いまの Mathematica の大きな特徴ですよね。アイデアを持つ人が Mathematica に気付くかどうか次第、なのかも。その意味では、Mathematica という製品名の持つ「数式処理」なイメージは、逆に障害になっているのかもしれないなぁとも思います。

コメントの投稿

Emailアドレスは表示されません。は必須項目です。
ヒューリンクス取り扱い製品の内容や購入に関するお問い合わせはヒューリンクスサイト連絡先へお願いいたします。投稿前にその他の注意事項もご覧ください。

HULINKS サイトの新着情報