はじめに
Pythonによるスクレイピングの練習を兼ねて、AtCoder(競技プログラミング)に参加している人のレート分布を可視化してみました。
おおまかな内容
- AtCoderの年齢層
- 参加回数に対するレートの分布
- 年齢とレートの関係
- 終わりに
1. AtCoderの年齢層
まずはAtcoderに参加している年齢層を、スクレイピングして集計しました。尚、プロフィールで年齢を入力していない人はカウントしておりません。
やはりイメージ通りで若い人、特に大学生が多いですね。
2. 参加回数に対するレートの分布
平均値と標準偏差での可視化
当然ですが、コンテスト参加回数とレートには相関性があると思われます。ちなみに、AtCoderのレーティングシステムの仕様では参加回数が10回以下のうちは、レートが実力よりも大幅に低い値がつく可能性があるそうです。
AtCoderコンテストのレーティングについて
これまでのコンテストへの参加回数ごとに、アクティブユーザのレートを平均値と標準偏差で可視化してみました。平均値が青色の点で、平均値±標準偏差を黄色の帯で表しています。上記のレーティングシステムの仕様のため参加回数10回までとそれ以降で、参加回数とレート間で異なる傾きとなっていますが、基本的に参加回数とレートに線形に近い正の相関があるようです。
例として、これまでに5回コンテストに参加した人の人数とレートのヒストグラムを以下に示します。
中央値とパーセンタイルでの可視化
平均値による可視化ですと競技プログラミングの経験者(最初から異常にパフォーマンスが高い)などの外れ値の影響を強く受けてしまうので、中央値とパーセンタイルによる可視化をしてみることにしました。中央値が青色の点で、上位25%~下位25%を黄色の帯で表しています。中央値は、平均値と比べ全体的に少しスコアが低いようです。
3. 年齢とレートの関係
年齢層とレート分布の関係で可視化しました。尚、上記した通りAtCoderのレーティングシステムの仕様上、参加回数が10回以下のうちは、レートが実力よりも大幅に低い値がつくそうなので、参加回数が10回以上の人に限定し、さらに外れ値の影響がでにくいように中央値で可視化しました。結果を見ると、どうやら年齢とレーティングに相関はほとんどないような気がします。40代に関してはデータ少なく、結果にバラつきがあるので参考程度です。
4. 終わりに
今回はPythonによるスクレイピングで、Atcoderユーザ情報を可視化しました。
最後まで見て頂きありがとうございました。