LoginSignup
16
6

More than 1 year has passed since last update.

Atcoderのレート分布を可視化

Last updated at Posted at 2020-04-29

はじめに

Pythonによるスクレイピングの練習を兼ねて、AtCoder(競技プログラミング)に参加している人のレート分布を可視化してみました。

おおまかな内容

  1. AtCoderの年齢層
  2. 参加回数に対するレートの分布
  3. 年齢とレートの関係
  4. 終わりに

1. AtCoderの年齢層

まずはAtcoderに参加している年齢層を、スクレイピングして集計しました。尚、プロフィールで年齢を入力していない人はカウントしておりません。

image.png

やはりイメージ通りで若い人、特に大学生が多いですね。

2. 参加回数に対するレートの分布

平均値と標準偏差での可視化

当然ですが、コンテスト参加回数とレートには相関性があると思われます。ちなみに、AtCoderのレーティングシステムの仕様では参加回数が10回以下のうちは、レートが実力よりも大幅に低い値がつく可能性があるそうです。
AtCoderコンテストのレーティングについて

これまでのコンテストへの参加回数ごとに、アクティブユーザのレートを平均値と標準偏差で可視化してみました。平均値が青色の点で、平均値±標準偏差を黄色の帯で表しています。上記のレーティングシステムの仕様のため参加回数10回までとそれ以降で、参加回数とレート間で異なる傾きとなっていますが、基本的に参加回数とレートに線形に近い正の相関があるようです。

image.png

例として、これまでに5回コンテストに参加した人の人数とレートのヒストグラムを以下に示します。
image.png

中央値とパーセンタイルでの可視化

平均値による可視化ですと競技プログラミングの経験者(最初から異常にパフォーマンスが高い)などの外れ値の影響を強く受けてしまうので、中央値とパーセンタイルによる可視化をしてみることにしました。中央値が青色の点で、上位25%~下位25%を黄色の帯で表しています。中央値は、平均値と比べ全体的に少しスコアが低いようです。

image.png

3. 年齢とレートの関係

年齢層とレート分布の関係で可視化しました。尚、上記した通りAtCoderのレーティングシステムの仕様上、参加回数が10回以下のうちは、レートが実力よりも大幅に低い値がつくそうなので、参加回数が10回以上の人に限定し、さらに外れ値の影響がでにくいように中央値で可視化しました。結果を見ると、どうやら年齢とレーティングに相関はほとんどないような気がします。40代に関してはデータ少なく、結果にバラつきがあるので参考程度です。

image.png

4. 終わりに

今回はPythonによるスクレイピングで、Atcoderユーザ情報を可視化しました。
最後まで見て頂きありがとうございました。

16
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
6