対象大会・クラス

今後の対象大会(予定)

以下の大会をランキング対象とする予定です。他にも主催者からの追加リクエストがありましたら検討いたしますのでお気軽にご連絡ください(連絡先: info[at]nishipro.com )。

ただし、出場者数が少なく、計算精度が担保出来ない場合は除外する場合がありますのでご了承ください。

男子フォレスト

・2020/7/4 [ランクB]霧ヶ峰ミドル M21A
・2020/7/12 [ランクB]札幌OLC大会 M21A

女子フォレスト

・2020/7/4 [ランクB]霧ヶ峰ミドル W21A
・2020/7/12 [ランクB]札幌OLC大会 W21A

対象大会の選定方針

NishiPROが独断と偏見で選んだ主要大会の中で、男女それぞれ最上位クラスが対象です。

最上位クラスがEクラスの場合、2番目のクラスも対象となります。また、全日本ロング・全日本ミドルではM20Eも対象とします。

男女によるクラス分けがない場合、男子ランキングにのみ算入し、女子ランキングの対象とはなりません。

主要大会の選定に当たっては年齢による出場制限がないことが原則ですがインカレミドル・インカレロングのME,WEは例外的に対象としています。

順位が付いた場合のみ対象です。競技時間オーバーや失格は不出場と同様に扱います。

算出方法

過去365日間の出場レースのうち、点数の良かった4つの大会の獲得点[=Rp]の合計でランキングにしています。

ただし、ランクAの大会は2つまでしか採用されません。

出場が4大会に満たない場合、獲得点の最低点からさらに80を減算した点を補完点として追加します。 それでなお4大会に満たない場合、さらに80を減算して追加・・以下繰り返します。

Rp:獲得点の算出方法

まず、対象レースに出場し、順位が付いた選手に対して評価点[=Bp]が与えられます。

その評価点[Bp]に対し、
・ランクAの大会(全日本ロング・ミドル)については、80を加算したものが
・ランクBの大会(公認大会・日本代表選考会・インカレ)については、40を加算したものが
・ランクNの大会(その他)については、0を加算したものが
それぞれ獲得点[Rp]となります。

ランキングは上記の点数で算出しますが、過去365日間の評価点[Bp]の単純平均を実力評価値[=AvBp]として算出し、それによるランキングも参考までに併記しています。 この実力評価値[AvBp]は以下で説明する評価点の算出において重要な役割を担っています。

Bp: 評価点の算出方法

まず、各大会各クラスにおいて、優勝者の点数を1000点とおき、記録(タイム)の対数関数となるよう仮評価点[=TmpBp]を付けます。計算式は以下の通りです

\(TmpBp = 1000(1+ln({優勝者タイム \over 当該選手のタイム})) \) (参考:解説1.評価点の考え方)

ここで、もしその大会がランキングを作成する最初の大会である場合(当ランキングの場合、2015年3月に福島県で開催された全日本大会ME,WE)、TmpBpがそのまま評価点[Bp]となります。

上記大会以後の大会の場合、以下の補正を施して評価点[Bp]としています。

\(Bp = a*TmpBp + b\) ※aは拡散係数(タイムのばらつきやすさを補正するための定数)、bは実力係数(出場者の実力を補正するための定数)。 (解説2.拡散係数と実力係数)

a: 拡散係数、b: 実力係数の算出方法

順位の付いた者のうち、その時点での実力評価値[AvBp]を持っている選手(=過去365日間で1回でも評価点[Bp]が与えられた)の集団を考えます。

まず、目的変数を仮評価点[TmpBp]、説明変数を実力評価値[AvBp]とした、回帰分析を行います。 すなわち、その時点での実力評価値[AvBp]を持った選手がどのような仮評価点[TmpBp]を獲得したかを散布図に表し、回帰直線(=RL)を引きます。 ただし、単純な単回帰分析ではなく、ある選手の評価点[Bp]のばらつき具合は、標準偏差にして、(1800 - 実力評価値[AvBp])に比例している。という前提(解説3:重みのつけ方) を置き、 \( (1800-AvBp)^2 \)の重みを付けた、「重み付け回帰分析」を採用します。

この回帰直線[RL]が、

\(TmpBp - cgTmpBp = c(AvBp - cgAvBp) \)
※\(c\)は定数、\(cgTmpBp\)は\(TmpBp\)の重み付け平均、\(cgAvBp\)は\(AvBp\)の重み付け平均

 

と表現されるとした場合、以下の場合分けで拡散係数[a]と実力係数[b]を決定します。

(i) \(c <= 1のとき、a = 1, b = cgAvBp - cgTmpBp \)
(ii) \( c > 1のとき、a = 1/c, b = cgAvBp - (cgTmpBp / c) \)

算出方法解説

算出方法は以上の通りですが、要所要所の計算の意味を以下に解説します。

1.評価点の考え方

例えばあるコースを40分で走れる人(A)と、60分(B)、80分(C)で走れる人の3人がいたとします。A-B間の実力差とB-Cの実力差は同じでしょうか? 当然ながら60分を40分に縮めるほうが80分を60分に縮めるよりより困難ですよね。20分を0分に縮めるのも不可能です。やはりタイムをそのまま利用するのは適切でなさそうです。

このランキングでは、「どのような実力の人にとっても1%タイムを縮める大変さは同じ」という前提を置きました。 すなわち、あるコースをAの人が4分縮めるのと、Cの人が8分縮めるのは大変さはだいたい同じで、 「どんな実力の人にとっても、1%タイムを縮めると、xポイント上昇」するように設定しました。これを実現するのが対数関数です。

2.拡散係数と実力係数

拡散係数

原則として、「トップ選手を1000点と置き、そこから1%タイムが延びるごとに10点減算される」ような点のつけ方を理想としています。 しかしながら、テレイン・コースによっては異様にタイム差が付きやすい場合があり、そのような場合に異様な高得点や異様な低得点がつけられてしまいます。 それを補正するため、1%タイムが延びるごとに変化する点数を調整するのが「拡散係数」です。

現在のアルゴリズムでは拡散係数は1(すなわち補正しない)を前提とし、上記c値が1を超える場合にその逆数を採用していますが、この点もう少し適切な推定方法がないか検討中です

実力係数

一方、実力係数は出場者の実力を補正するための係数で、レースで獲得する評価点の重み付け(後述)平均が実力評価値の重み付け平均と同じになるように、 全員の仮評価点から同じ点数を減算(または加算)しています。これによって、出場者のレベルが低い場合は自動的に点数も低く抑えられるようになります

3.回帰分析の重みのつけ方

通常の単回帰分析の前提に「誤差項の分散はすべのデータについて等しい」というものがあります。

これを前提にしてしまうと、すべてのレベルの選手について、大会ごとの結果のバラつきは大体同じ、ということになりますが、 おそらくこれは正しくないと思われます。やはり、レベルの高い選手ほどどのようなテレイン・コースでも安定した結果を残すでしょうし、低い選手はそうでないでしょう。 もしすべてのデータを同等に扱ってしまうと、下位の選手の点のバラつきに左右されて上位の選手の点が安定しない、ということが考えられます。

そこで、「標準偏差にして、(1800 - 実力評価値[AvBp])に比例している」と仮定し、 上位の選手の誤差をできるだけ小さくするようにデータに重みを付けています。 この「1800 - 実力評価値[AvBp]」という値ですが、実験から推測した式であり、理論的な裏付けがあるわけではありません。 強いて意味を記述するのであれば「オリエンテーリングの神様は実力評価値1800であり、彼はどんなテレイン・コースでもまったくのミスなく走り抜けることができる。 ある選手の結果のバラつきは、その神様からの実力差に比例している」といったところでしょうか。 ※1800ではなく、1600でもいいのですが、1800にするとちょうどポイントのインフレ・デフレが全く発生せず都合がよかったというのもあります。

ちなみに、上記の補正をしてなお、もう1点問題があります。

単回帰分析では、「説明変数に誤差はなく、目的変数にのみ誤差が存在する」という前提がありますが、これが正しくありません。 実力評価値は過去1年間の出場レースの平均ですので、当然誤差があります。それを補正するためにはDeming法による回帰分析が必要になりますが、 実力評価値の誤差が選手によってバラバラで、ある人は3レースの平均で、ある人は11レースの平均・・・となっており、簡単に計算することが困難です。 この点は今後の課題です。

Q&A

Q: 全クラスを対象に計算して若年層・中高年層についてもランキングを作ることはできませんか?

A: 簡単ではありません。主に以下3点の問題があります。

1.点数のインフレ・デフレ

現在のアルゴリズムは、「参加者集団の全体的な実力が1年間通して変化しない」ことを前提に作成されています。 この前提がジュニアランキングやシニアランキングでは厳しくなります。

特にジュニアと高齢者で顕著で、例えば、1年前のあるレースでA君300、B君200、C君100点獲得し、 1年後の現在のレースでたまたままったく同じ点数だったとします。 そのとき3人とも1年間まったく成長しなかったのかというとそうではなくて、 全員が一律に成長してる。そこにD君という1年生が入ったときに彼の実力が過小評価されてしまいます。

それを繰り返していくと年を追うごとに点数がどんどんデフレしていき、また直近のレースよりも1年前のレースの方が過大評価されてしまう、ということになり、正確な計算ができません。 高齢者ではこれと逆にインフレが発生します。

2.参加者数の少なさ

このランキングは統計的な相対比較で実力を推定しています。 若年層・中高年層のクラスは参加者数が軒並み少ないため、適切な推定が困難。かなり点数がばらつくことが予想されます。

3.名寄せの限界

LapCenterに掲載されている氏名をもとに集計しています。今はトップクラスのみを対象としているので同姓同名問題がほぼ無視できますが、 範囲を広げると誤集計が多発することが考えられます(今でさえ氏名の誤記や旧字体の揺らぎによる誤集計があります)。 Japan-O-entrYのデータや競技者登録番号を使えば解決する可能性はあります