AtCoderで年齢(誕生年)とレーティングや得点の相関について調べてみた

[Supership](https://supership.jp/)でVPoEをしている名畑です。ただただ[ツイステッドワンダーランド](https://twisted-wonderland.aniplex.co.jp)の[7章「深淵の支配者」](https://www.youtube.com/watch?v=kxRj6E-uDbw)の続きが早く見たいです。

:::note info
AtCoderについて調べてみたシリーズの過去記事
- [競技プログラミング(AtCoder)とはどんなものか](https://qiita.com/nabata/items/44fa3995e476b12b9860)
- [誕生年毎のアクティブユーザ数](https://qiita.com/nabata/items/75407e48c7ca8de8a4a4)
- [アクティブユーザの世代別国と地域](https://qiita.com/nabata/items/28b5572978ee4abb0126)
- [プログラミング言語シェア](https://qiita.com/nabata/items/1f9c0543fad5c6106d19)
- [レーティング別問題解答速度](https://qiita.com/nabata/items/25631d3d1e43f4d9e31f)
- [所属(大学・高校・会社等)別のアクティブユーザ数](https://qiita.com/nabata/items/864e06a52de88123daaa)
:::

## はじめに

私自身40代で[過去の記事](https://qiita.com/nabata/items/75407e48c7ca8de8a4a4)でも書きましたように[AtCoder](https://atcoder.jp/)ではかなりマイノリティーな世代になります。

正直、AtCoderは頭の回転勝負なところがあるので**若い方が有利だよね**と内心思ってきました。

ただ、それって本当なんだろうかというのが気になったので調べてみたというのが今回の記事です。

ちなみに先に結論を言うと**年齢とレイティング/スコアの相関は現時点では見出せていません**。

## 母集団

- データの取得はAtCoderの[ランキング](https://atcoder.jp/ranking?lang=ja)の**アクティブユーザのみ**(2023年2月8日6時付)から行いました。そのため、本記事の次項以降で**ユーザ**という単語が用いられた場合は**アクティブユーザ**を示すとお考えください。
- アクティブユーザは**過去2年以内にRatedコンテストに一度でも参加したユーザ**と定義されています。
- Ratedコンテストとはレート付与の対象となるコンテストです。AtCoderはコンテストに参加せずとも楽しむ方法がいくらでもありますが、コンテストに参加することでレートが付与され、その結果に応じて色が決まります（赤>橙>黄>青>水>緑>茶>灰）。

## 対象ユーザ

- **100,218人**のユーザがいました。
- このうち誕生年を登録しているユーザは**78,643人**でした。
- つまり全体の **約78.5%** が登録していることになります。
- ただし自己申告によるもののため、この誕生年が正しい保証はありません。
- [ルール上ではAtCoder社が特別に認めたケースを除くと複数アカウントの保持が認められていません](https://atcoder.jp/tos?lang=ja)ため、それぞれ個別のユーザという扱いで考えます。
- また、今回は誕生年別のレーティングを求めるのですが、母数が少なすぎると比較がしづらいため**1980年〜2012年**を対象とします。**100名以上が登録されている連続区間**です。1979年は90名、2013年は60名となります。

## グラフ(箱ひげ図)

![graph_all.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/869934/c555196e-d850-0d1f-ee4a-f8a56b2d5fca.png)

分布傾向が見たいので[箱ひげ図](https://ja.wikipedia.org/wiki/%E7%AE%B1%E3%81%B2%E3%81%92%E5%9B%B3)にしてみたのですが、年齢(誕生年)との相関をなんとも言えずです。

## 表

中央値、平均値、最大値で表にしてみました。

| 	誕生年	 | 	人数	 | 	中央値	 | 	平均値	 | 	最大値	 |
| 	--:	 | 	--:	 | 	--:	 | 	--:	 | 	--:	 |
| 	1980	 | 	141	 | 	131	 | 	384.18	 | 	1855	 |
| 	1981	 | 	126	 | 	122.5	 | 	358.22	 | 	1838	 |
| 	1982	 | 	162	 | 	181	 | 	448.77	 | 	2461	 |
| 	1983	 | 	180	 | 	123.5	 | 	389.41	 | 	2719	 |
| 	1984	 | 	208	 | 	228	 | 	434.16	 | 	3144	 |
| 	1985	 | 	220	 | 	207.5	 | 	435.75	 | 	3494	 |
| 	1986	 | 	279	 | 	169	 | 	434.27	 | 	2935	 |
| 	1987	 | 	326	 | 	170.5	 | 	403.56	 | 	2463	 |
| 	1988	 | 	353	 | 	188	 | 	423.01	 | 	3092	 |
| 	1989	 | 	474	 | 	176	 | 	413.44	 | 	3211	 |
| 	1990	 | 	572	 | 	155	 | 	393.06	 | 	2887	 |
| 	1991	 | 	654	 | 	183	 | 	428.12	 | 	3519	 |
| 	1992	 | 	838	 | 	162.5	 | 	403.65	 | 	2862	 |
| 	1993	 | 	1080	 | 	179.5	 | 	420.82	 | 	3203	 |
| 	1994	 | 	1335	 | 	181	 | 	437.27	 | 	3944	 |
| 	1995	 | 	1759	 | 	151	 | 	397.85	 | 	3223	 |
| 	1996	 | 	2096	 | 	165	 | 	419.68	 | 	3735	 |
| 	1997	 | 	2879	 | 	144	 | 	376.39	 | 	3698	 |
| 	1998	 | 	4416	 | 	141	 | 	371.88	 | 	3721	 |
| 	1999	 | 	6497	 | 	114	 | 	341.33	 | 	3273	 |
| 	2000	 | 	9855	 | 	87	 | 	318.92	 | 	3108	 |
| 	2001	 | 	11338	 | 	65	 | 	274.95	 | 	3658	 |
| 	2002	 | 	10665	 | 	45	 | 	235.80	 | 	3564	 |
| 	2003	 | 	6469	 | 	39	 | 	234.66	 | 	3362	 |
| 	2004	 | 	3346	 | 	63	 | 	372.23	 | 	3328	 |
| 	2005	 | 	2245	 | 	154	 | 	517.45	 | 	3271	 |
| 	2006	 | 	2128	 | 	150	 | 	510.13	 | 	2808	 |
| 	2007	 | 	1661	 | 	127	 | 	467.05	 | 	3172	 |
| 	2008	 | 	1390	 | 	83	 | 	334.05	 | 	2371	 |
| 	2009	 | 	1095	 | 	69	 | 	297.21	 | 	2727	 |
| 	2010	 | 	724	 | 	56	 | 	216.71	 | 	2829	 |
| 	2011	 | 	386	 | 	34	 | 	155.31	 | 	1477	 |
| 	2012	 | 	212	 | 	26.5	 | 	147.51	 | 	2123	 |

これもはやはり、なんとも言いづらい結果となりました。

中央値が2002年と2003年で凹んでいるのはなぜでしょう。逆に言えば、2005年〜2008年あたりが前後の年代と比べて高い方が着目するべきなのか。

## AtCoder Beginner Contest 288での結果

AtCoderというサービスはすでに10年以上続いています（素晴らしい！）。
たとえば**誕生年が1980年(今年43歳)**だとしても、AtCoderに没頭していたのは**33歳の頃**かもしれません。
つまり、誕生年とレーティングを比較しても、年齢とスキルの相関を見るには不充分とも考えられます。
精度を上げるためにも今回**アクティブユーザ**(2年以内にレーティング対象のコンテストに出た人)限定にはしていますが、レーティングはそこまで急激に下がらないので、これだけではやはり不充分にも思えます。

そんなことを悩んだので、最近のコンテストである[AtCoder Beginner Contest 288(ABC 288)のランキング](https://atcoder.jp/contests/abc288/standings)の結果をアクティブユーザ一覧と結びつけて**誕生年毎の中央値、平均値、最大値**を出してみました。1980年から2012年に限定していることも同様です。

## グラフ(箱ひげ図)

![graph_abc288.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/869934/79f8b9b5-94af-14a3-2960-577a34264e22.png)

## 表(中央値、平均値、最大値)

| 	誕生年	 | 	人数	 | 	中央値	 | 	平均値	 | 	最大値	 |
| 	--:	 | 	--:	 | 	--:	 | 	--:	 | 	--:	 |
| 	1980	 | 	23	 | 	600	 | 	500.00	 | 	1000	 |
| 	1981	 | 	13	 | 	300	 | 	300.00	 | 	600	 |
| 	1982	 | 	23	 | 	600	 | 	578.26	 | 	2000	 |
| 	1983	 | 	20	 | 	600	 | 	660.00	 | 	2000	 |
| 	1984	 | 	28	 | 	600	 | 	589.29	 | 	1100	 |
| 	1985	 | 	35	 | 	600	 | 	488.57	 | 	1100	 |
| 	1986	 | 	37	 | 	600	 | 	519.44	 | 	3200	 |
| 	1987	 | 	45	 | 	600	 | 	537.78	 | 	1100	 |
| 	1988	 | 	50	 | 	600	 | 	538.00	 | 	2000	 |
| 	1989	 | 	47	 | 	600	 | 	508.51	 | 	2600	 |
| 	1990	 | 	52	 | 	600	 | 	580.77	 | 	1700	 |
| 	1991	 | 	60	 | 	450	 | 	540.00	 | 	2600	 |
| 	1992	 | 	70	 | 	600	 | 	582.86	 | 	2600	 |
| 	1993	 | 	117	 | 	600	 | 	580.17	 | 	2600	 |
| 	1994	 | 	116	 | 	600	 | 	581.90	 | 	2600	 |
| 	1995	 | 	144	 | 	600	 | 	573.94	 | 	3200	 |
| 	1996	 | 	165	 | 	600	 | 	547.56	 | 	2600	 |
| 	1997	 | 	186	 | 	600	 | 	511.35	 | 	3200	 |
| 	1998	 | 	276	 | 	400	 | 	488.00	 | 	2600	 |
| 	1999	 | 	395	 | 	600	 | 	531.39	 | 	2600	 |
| 	2000	 | 	549	 | 	600	 | 	504.75	 | 	2600	 |
| 	2001	 | 	710	 | 	500	 | 	447.95	 | 	3200	 |
| 	2002	 | 	843	 | 	600	 | 	454.10	 | 	2600	 |
| 	2003	 | 	636	 | 	300	 | 	426.50	 | 	3200	 |
| 	2004	 | 	308	 | 	300	 | 	450.98	 | 	3200	 |
| 	2005	 | 	167	 | 	300	 | 	555.42	 | 	2600	 |
| 	2006	 | 	197	 | 	600	 | 	581.54	 | 	2600	 |
| 	2007	 | 	222	 | 	600	 | 	562.16	 | 	2600	 |
| 	2008	 | 	197	 | 	600	 | 	506.09	 | 	2600	 |
| 	2009	 | 	196	 | 	300	 | 	455.61	 | 	2200	 |
| 	2010	 | 	117	 | 	300	 | 	400.85	 | 	2000	 |
| 	2011	 | 	66	 | 	300	 | 	321.21	 | 	1000	 |
| 	2012	 | 	48	 | 	300	 | 	268.75	 | 	1500	 |

やはりなんとも言いづらい結果となりました。

## 最後に

今回の結論だけだと年齢を言い訳にする根拠は見つからずなんですが、正直、世代毎の母数も大きく異なるのでデータとしては悩ましいです。
また今後相関を導く良い方法が思いついたらやるかもしれません。

## 宣伝

[SupershipのQiita Organization](https://qiita.com/organizations/supership-inc)を合わせてご覧いただけますと嬉しいです。他のメンバーの記事も多数あります。

Supershipではプロダクト開発やサービス開発に関わる方を絶賛募集しております。
興味がある方は[Supership株式会社 採用サイト](https://supership.jp/recruit/)よりご確認ください。