2020年8月9日日曜日

第290夜 データを滑らかにする

▼出生時の親の年齢
今夜の記事の内容は掲題の通りで「収集したデータの加工方法」がテーマなのだが、例として用いるデータそのものについて先に述べておきたい。
しれっと使うが、かなり稀有なものである。
いつものブログ用データベースで2006年から2018年の中央競馬平地競走完走馬延べ62万件すべてで父馬の年齢、母馬の年齢を調べた。
わたしとしては大作である(労力的に)

当該競走馬の出生時点の親の年齢は、収集の困難な部類に入るデータだと思う。
特に母馬では同名馬の存在が何度も行く手を塞ごうとした。
わたしのミスがほとんどなのだが、収集元のデータでも牡馬が仔を産んだり、繁殖牝馬が生まれる前から仔を産んだり、結構大混乱なのである。
なんとか取り繕ったが、未だに間違いも見つかっており、完璧には程遠いかもしれないが、とにかく一旦全データの完成までたどり着いた。

高齢出産馬ほど成績が低下しやすいことは知られているが、では具体的にどれくらいの差があるのか、どの年齢が父母としてのピークなのかといった資料はあまり見かけたことはなかった。
少なくともこれだけの大規模調査はないかもしれない。
父馬(種牡馬)と母馬(繁殖牝馬)それぞれで、仔の能力(ここでは1戦あたりの平均獲得賞金額)が「緩やかな山形を描くグラフ」になる。
何故緩やかな山形になるのか、単純に若ければ良いという訳ではない理由を考察しなければならないが、今のわたしには未だ確たる説明や推定はできない。
今は、観察結果から、「緩やかさ」はピーク時からプラスマイナス10%程度であることが分かる、すなわち平均的な繁殖牝馬の産駒は出産年齢により90-110くらいのバラつきに収まるようだ、と知る程度である。

例題としてだけでなく、内容としても興味深い結果になったので参考になれば幸いである。

▼データを滑らかにする
本題である。
数学的にはもっときちんとした計算方法はあると思うが、生のデータではグラフに描くと「小刻みな山脈」になってしまうことが多い。
下表のように、種牡馬、繁殖牝馬の出産時年齢別で各競走馬の1戦あたりの平均獲得賞金額をプロットすると、62万件のデータを僅か30弱に区分してさえ凸凹してしまう。
これでは、このデータを予想にフィードバックして使用することは躊躇われると思う。
そこでデータを綺麗にするためにはいくつか方法がある。
真っ先に考えるのは、30近い階層をもっと少なくするというものである。
この例で、例えば2歳分ずつ集計し直すということである。
ただ、区分を減らすことに抵抗があるケースもある。
このようなときは、前後の階層を足す方法を試してみるのはどうか。
6歳のデータの平均を5歳と7歳のデータも足して、7歳のデータなら6歳と8歳のデータも加えて、平均するのである(平均1)

なお、種牡馬のついてはさらに前後2歳分のデータも足した(平均2)
平均・平均1・平均2をグラフに描くと滑らかになっていくことが分かるだろう。
基本的にデータ不足なのである。
もっとサンプルが増えれば綺麗なデータになるだろうなと思う場合には、この方法を試してみてはいかがだろうか。
(SiriusA+B)

父馬年齢 延べ頭数 獲得賞金合計 1走平均 移動平均1 移動平均2 出産年齢 延べ頭数 獲得賞金合計 1走平均 移動平均
3歳 3歳 88 59,667,000 678,034
4歳 150 73,788,000 491,920 4歳 6,413 7,257,918,000 1,131,751 1,235,843
5歳 11,476 17,855,241,000 1,555,877 1,721,728 5歳 33,236 41,791,107,000 1,257,405 1,288,615
6歳 34,867 62,119,284,000 1,781,607 1,707,036 1,587,383 6歳 50,114 66,620,966,000 1,329,388 1,370,500
7歳 49,048 82,861,320,000 1,689,392 1,591,068 1,522,770 7歳 67,969 98,970,657,000 1,456,115 1,414,967
8歳 58,820 82,120,416,000 1,396,131 1,466,912 1,471,363 8歳 69,331 99,592,957,000 1,436,485 1,460,867
9歳 60,503 82,003,694,000 1,355,366 1,353,652 1,430,717 9歳 66,146 98,644,020,000 1,491,307 1,458,663
10歳 63,423 83,250,441,000 1,312,622 1,372,389 1,359,264 10歳 58,484 84,686,715,000 1,448,032 1,498,831
11歳 58,718 85,404,446,000 1,454,485 1,348,484 1,341,286 11歳 53,256 83,290,400,000 1,563,963 1,488,897
12歳 57,135 73,095,872,000 1,279,354 1,347,283 1,322,314 12歳 46,111 67,046,761,000 1,454,030 1,467,730
13歳 45,250 58,550,980,000 1,293,944 1,272,351 1,328,111 13歳 40,094 54,353,949,000 1,355,663 1,361,353
14歳 40,644 50,336,192,000 1,238,466 1,289,160 1,282,020 14歳 33,269 41,245,593,000 1,239,761 1,287,212
15歳 33,090 44,502,184,000 1,344,883 1,278,191 1,272,426 15歳 26,573 33,039,237,000 1,243,339 1,224,306
16歳 27,423 34,459,598,000 1,256,595 1,277,350 1,246,349 16歳 21,590 25,412,854,000 1,177,066 1,224,867
17歳 22,052 26,502,597,000 1,201,823 1,202,717 1,262,492 17歳 16,469 20,713,527,000 1,257,728 1,178,957
18歳 17,909 20,081,702,000 1,121,319 1,214,732 1,226,651 18歳 12,596 13,593,675,000 1,079,206 1,145,350
19歳 13,738 18,645,602,000 1,357,228 1,220,014 1,213,728 19歳 7,877 8,004,300,000 1,016,161 1,029,532
20歳 9,582 11,572,646,000 1,207,748 1,278,982 1,229,116 20歳 5,597 5,241,915,000 936,558 972,337
21歳 6,065 7,364,632,000 1,214,284 1,237,816 1,274,597 21歳 3,131 2,899,433,000 926,041 936,795
22歳 3,954 5,325,153,000 1,346,776 1,235,580 1,241,127 22歳 1,611 1,544,172,000 958,518 903,125
23歳 2,659 2,974,892,000 1,118,801 1,300,217 1,253,572 23歳 491 282,447,000 575,248 835,982
24歳 1,555 2,320,124,000 1,492,041 1,229,633 1,266,473 24歳 211 107,007,000 507,142 545,208
25歳 1,227 1,395,416,000 1,137,258 1,286,932 1,192,554 25歳 61 26,540,000 435,082 500,351
26歳 891 1,011,360,000 1,135,084 1,081,974 1,265,585 26歳 4 4,550,000 1,137,500
27歳 320 231,077,000 722,116 1,128,484 1,131,321
28歳 209 360,010,000 1,722,536 1,111,399 1,125,626
29歳 5 2,400,000 480,000 1,666,861
30歳 9 9,300,000 1,033,333

ブログ アーカイブ