Models for Olympic Medal Tables(优秀范文一:对数线性计数模型 + 滚动回测 + 三口径排名 + 混合Bootstrap区间)
2025 美赛 MCM C 题 · 优秀范文一。视角:把「一国能拿多少奖牌」拆成可解释的三层结构——竞技惯性(上届奖牌的自回归项)、经济与人口的基本盘(GDP/人口的规模弹性)、主办国红利(哑变量加成),在 国 届的合成练习面板上用对数线性 OLS 估计,以滚动回测(只用过去预测未来)验证外推能力,再比较金牌优先/总数优先/加权积分三种排名口径的 Kendall τ 一致性,最后用混合 Bootstrap(回归残差+观测层噪声)给出诚实的预测区间——并顺带演示「只抽回归残差」会把区间缩到荒谬的 0.4 枚宽。正文 / 配图 / 附录 / 真源四路数字一致(固定种子 seed=20250315)。
摘要
奖牌榜预测的经典陷阱是「只拟合不检验」与「只给点值不给区间」。本文建立三层结构的对数线性计数模型:,在合成面板(24 国 × 8 届、每届奖牌池 900 枚、主办加成 0.35、乘性噪声 )上估计得 :自回归系数 主导(竞技惯性解释了大部分延续性),经济弹性 次之,人口 ,主办红利 ——换算到奖牌数空间约 +34.0% 的主办国效应。滚动回测(目标届 2008–2024,训练窗不含目标信息)给出平均 MAE=4.66 枚、平均 Pearson r=0.982,最难的 2016 届 MAE 也仅 6.04 枚。排名口径比较显示:金牌优先 vs 总数优先的 Kendall τ 只有 0.870(三组中最不一致),而总数 vs 加权(4:2:1) 达 0.957;分歧案例 C06 在金牌榜排第 10、加权榜跌至第 13——「哪张榜更公平」没有客观答案,只有价值立场的显性化。不确定性部分给出本篇最重要的方法论对比:纯残差 Bootstrap 的 90% 区间仅 (宽 0.4 枚)且未能覆盖实际值 68,因为它把观测层的乘性噪声当成了零;改为混合 Bootstrap(残差+观测噪声同在 log 空间叠加)后区间扩为 (宽 37.0 枚),实际值落入区间——诚实的不确定性来自对每一层随机性的显式建模。
一、问题重述
题目要求四件事:①构建各国奖牌数的预测模型;②刻画历史趋势与主办国效应;③比较不同奖牌榜排名口径并讨论公平性;④量化预测的不确定性(区间与爆冷概率)。本篇聚焦①②④并以最小可行方式处理③(口径一致性),把多口径的深度权衡留给范文二,把爆冷概率的蒙特卡洛展开留给范文三。
二、模型假设
- 奖牌产出由「惯性—基本盘—主办红利」三层因素驱动,各层效应在对数空间线性可加。
- 经济规模按 GDP 增长率 1.005–1.03/届 缓慢演变;人口届间不变;主办国每届至多一个。
- 奖牌分配围绕实力份额做乘性扰动(),代表临场发挥、禁赛、项目设置等不可预测成分。
- 金/银/铜按实力分层拆分:强国的金牌率高(基础 8%–22%,主办再+5 个百分点内封顶)。
- 预测第 届时只能使用第 届及以前的信息(滚动外推原则)。
三、符号说明
| 符号 | 含义 |
|---|---|
| 国家 第 届奖牌总数 | |
| 自回归系数(竞技惯性) | |
| GDP、人口标准化后的弹性 | |
| 主办国哑变量系数(log 空间) | |
| Kendall 秩相关(口径一致性) | |
| 混合 Bootstrap 的 90% 预测区间 |
四、建模过程
全文技术路线如图 1:合成面板提供特征与真值,对数线性计数模型把「上届惯性 + 经济人口基本盘 + 主办红利」压缩进五个系数,滚动回测负责外推体检,三口径排名比较处理「公平」问题,混合 Bootstrap 最后给出诚实的预测区间——四个模块环环相扣,任何一步的数字都可以被附录代码原样复现。
4.1 合成面板:先造一个"真实的世界"
数据型赛题的第一步是把数据结构吃透。本站的合成练习面板模拟了奥运奖牌榜的全部关键统计特征(图 2):头部集中——末届 Top5(C04=112、C23=86、C11=81、C10/C17=72 枚)拿走约 47% 的奖牌;长尾稀疏——半数国家奖牌不足 10 枚。图 3 验证了建模的核心经验事实:经济规模与奖牌产出在双对数坐标下近似线性(斜率即规模弹性),但散点带宽不容忽视——同样经济规模的国家奖牌数可以差 3–5 倍,这正是惯性项、主办效应与临场噪声要解释的部分。
4.2 三层结构与系数解读
全样本拟合结果(图 4):,四个系数全部符合机理预期。 说明上届奖牌每多 1%(对数意义上),本届约多 0.34%——竞技惯性是真实的但不完全传递,系统均值回归; 表明经济规模仍是第二杠杆,体育投入的边际产出递减但显著; 提示人口红利存在但被人均资源稀释;最有趣的是 ——在 log 空间叠加后,主办国效应折合奖牌数 :主场作战、东道主项目布局与本土裁判亲和共同造就了这一「红利」,且它的量级恰好落在文献对真实奥运会估计的 25%–40% 区间内。
4.3 滚动回测:让模型只准用过去
拟合优度高不代表能预测——特征多、国家少的面板极易过拟合。我们执行严格的滚动回测:预测 2008 届时只允许用 1992–2004 的相邻届对训练,以此类推(图 5)。结果平均 MAE=4.66 枚、平均 r=0.982:对一个总数上百枚的国家,±4.7 枚意味着相对误差约 4%–5%;四次回测中仅 2016 届误差抬升到 6.04 枚——该届恰有多国主办后回落,惯性假设受到考验。图 6 把末届回测画成「预测—实际」散点,所有国家紧贴完美线,唯有的离群点集中在 20–40 枚的中游集团:头部太稳、尾部太穷,波动永远发生在中间层。
五、三种奖牌榜:口径即立场
同一份成绩单可以排出三张不同的榜单。图 7 对末届 Top8 国家并列展示金牌优先、总数优先与加权(金4银2铜1)三种名次:多数国家的座次稳定,但分歧真实存在——全表 24 国的两两 Kendall τ 为:金vs总 0.870(最不一致)、金vs加权 0.913、总vs加权 0.957。极端案例 C06:金牌榜第 10 名,加权榜第 13 名,落差 3 位——它是典型的「银铜专业户」,奖牌厚度可观但成色不足。这说明「公平」不是一个可以客观求解的问题:金牌优先把「冠军稀缺性」定价最高,总数优先奖励参与广度,加权榜则隐含了 4:2:1 的价值公理——任何一张榜都是一次价值判断的显性化,负责任的报告应当同时给出多种口径及其分歧清单。
六、不确定性的两层来源与混合 Bootstrap
这是本篇的方法论重心。对末届实际第 6 名 C08(68 枚)做预测区间:
- 纯残差 Bootstrap:从回归残差中重抽扰动。得到的 90% 区间是 ——宽度只有 0.4 枚,且未覆盖实际值 68。原因一目了然: 的回归残差极小,而它完全忽略了奖牌生成过程中的乘性观测噪声()。这不是 Bootstrap 的错,是「噪声分层」被偷懒合并了。
- 混合 Bootstrap:在 log 空间同时叠加回归残差 与观测噪声 ,B=500 次重抽样。区间扩大为 (宽 37.0 枚,约为点预测的 ±27%),实际值 68 稳稳落入(图 8)。
两种做法的对照给出了可迁移的教训:预测区间的宽度必须覆盖从方程到现实之间的全部随机层——回归误差只是其中一层,观测与生成机制里的噪声往往更大。对奥运奖牌这种高波动的计数对象,「点预测 ±27%」才是诚实的话术,比「精确到 0.4 枚」的假精度有价值得多。
七、灵敏度分析
- 主办加成 0.35→0.50: 相应升至约 0.40,主办国下一届的「回落幅度」预测变大;模型通过自回归项自动捕捉「后主办低谷」。
- 噪声 0.12→0.20:MAE 升至约 7.8 枚、 降至 0.95 左右,但系数估计的符号与排序不变——结构结论对噪声水平稳健,区间宽度则需同步放大约 60%。
- 训练窗长度:窗 <3 届时 MAE 明显恶化(样本不足 72 行);≥4 届后收敛,故回测从第 4 目标届起报数。
- 剔除自回归项:MAE 从 4.66 恶化到约 9.3 枚——惯性是最强的单一信息源,「白纸重跑」式预测不可取。
八、模型评价与改进
优点:①结构可解释,每个系数对应一条政策或机理叙事;②滚动回测杜绝信息泄漏,外推可信度有据可查;③混合 Bootstrap 把「模型误差」与「观测噪声」分开计价,区间诚实。局限:①线性弹性无法刻画门槛效应(如体育投入超过某阈值后产出跳升);②金银铜拆分规则较粗糙,未建项目层面的优势专项;③合成面板的生成参数即真值,真实数据中还会遭遇抵制、合并参赛等制度冲击。改进方向:泊松/负二项回归处理零膨胀;树模型捕捉非线性交互;贝叶斯层级模型把国别随机效应与参数不确定性统一进后验(范文二将沿此方向扩展多口径决策,范文三展开爆冷概率的蒙特卡洛)。
九、结论
奥运奖牌榜可以被一个五系数的对数线性模型解释九成八的方差:惯性 0.3407、经济 0.2698、人口 0.1363、主办红利 0.2926(≈+34.0%);滚动回测平均 MAE 4.66 枚、r=0.982 证明它外推可用。三张榜单的分歧行情是 τ=0.870(金牌 vs 总数)到 0.957(总数 vs 加权)——「公平」取决于你给冠军稀缺性定多高的价。而对不确定性最诚实的交代来自两层噪声的混合 Bootstrap:90% 区间宽 37 枚、覆盖实际值,远比纯残差版本那 0.4 枚的假精度可靠。一句话:预测奖牌不难,难的是承认自己预测不准的部分有多大。
参考文献
- COMAP. MCM Problem C: Models for Olympic Medal Tables. 2025.
- Johnson D. K. N., Ali A. A Tale of Two Seasons: Participation and Medal Counts at the Summer and Winter Olympic Games. 2004.
- Bernard A. B., Busse M. R. Who Wins the Olympic Games: Economic Resources and Medal Totals. Rev. Econ. Stat., 2004.
- Efron B. Bootstrap Methods: Another Look at the Jackknife. Ann. Statist., 1979.
- Kendall M. G. Rank Correlation Methods. Griffin, 1970.
附录:核心 Python 实现
import sys, os
_HERE = os.path.dirname(os.path.abspath(__file__))
sys.path.insert(0, os.path.abspath(os.path.join(_HERE, "..", "..", "..", "tools")))
import gen_mcm2025c as M # 真源:对数线性模型 + 回测 + 口径 + Bootstrap
# 1) 合成面板与全样本拟合
ctys, panel = M.gen_panel()
beta_full, r2_full = M.fit_full(panel)
print("面板: %d国×%d届 R²=%.3f" % (M.N_CTY, M.N_GAMES, r2_full))
print("系数 β0..β4:", ["%.4f" % b for b in beta_full])
# 2) 滚动回测(训练窗不含目标届)
maes, corrs, _ = M.rolling_backtest(panel)
print("平均MAE=%.2f枚 平均r=%.3f"
% (sum(maes) / len(maes), sum(corrs) / len(corrs)))
# 3) 三口径一致性与分歧案例
byg, byt, byw, t_gt, t_gw, t_tw, case = M.rank_analysis(panel[-1])
print("Kendall τ: 金vs总=%.3f 金vs加权=%.3f 总vs加权=%.3f"
% (t_gt, t_gw, t_tw))
print("分歧最大: %s 金牌榜第%d ↔ 加权榜第%d"
% (case[0], case[1], case[2]))
# 4) 混合 Bootstrap 预测区间(末届实际第6名)
boot = M.bootstrap_interval(panel)
print("%s 点预测%.1f 实际%d 90%%区间[%.1f, %.1f] 宽%.1f 覆盖=%s"
% (boot["id"], boot["point"], boot["actual"],
boot["lo"], boot["hi"], boot["hi"] - boot["lo"],
boot["covered"]))