BUSS6002 Data Science Project
🧩 模板函数会自己挪断点
模板里的 design_mat_pwc 等四个函数,每次都拿传进来的 x 现算 x_min 和 x_max,再按 Equation (1) 定断点。在全样本上调用没问题,全样本的范围就是 1 到 131,演示图看起来一切正常。
到了预测 2022 年 5 到 7 月这一步,你把 [132, 133, 134] 直接传进去,断点全挤进 132 到 134 这三个月之间,三个预测值一起走样,代码照样跑完,不报任何错。测试集碰巧缺第 1 个月或第 131 个月时,测试 RMSE 用的也是另一套断点,跟训练时的基函数对不上。
我的做法:先把断点固定成 x_min = 1、x_max = 131,训练、验证、测试和预测都套这一组。改法很简单,给函数加两个参数,把这两个数从外面传进去。
📏 测试 RMSE 压不到 48 以下
EPU.csv 有 2724 行,只覆盖 131 个月,每个月 18 到 23 行。模型只看 Month Index,同一个月只能给出一个预测值,月内这些观测的上下波动它解释不了。按每个月的均值去算,这部分误差约 48;只拿全样本均值去猜,误差大约 90。
所以四种基函数的测试 RMSE 会落在 50 到 67 之间,彼此只差几个点,换个随机种子排名还可能变。你算出来低于 48,多半是测试集混进了拟合,先回头查划分。
讨论 RMSE 表时先把 48 这条线写出来,再说谁离它更近,差距主要出在 2020 年 COVID 那几个月还是平稳的年份,讨论就有了尺度,不再只是复述表里的数字。
🔮 测试 RMSE 低,预测未必准
官方规定按行随机划分 60%、20%、20%,同一个月的观测会同时进训练、验证和测试集。测试 RMSE 衡量的是模型在已经见过的月份里插值的本事,它说明不了模型往后推得准不准。
5 到 7 月对应 x = 132、133、134,全在样本外面。四种基函数在这里怎么走,由形状决定:阶梯停在最后一个台阶,Radial 离断点太远,几乎退回截距。比如选中的是阶梯,5 月、6 月、7 月就是同一个数,等于末段那几个月观测的平均水平。你只报三个数字,预测那一项就缺了怎么得到的这一半。
我的做法:写清用哪一族、哪个 k、β 用哪部分数据估计,再用一两句讲外推形状,并把它放进 Conclusion 的局限里。
📋 四种基函数外推对照
下面这张表把四种形状放在样本外对比,写预测和局限时可以直接对照。
| 基函数 | 5 到 7 月预测 | 原因 |
|---|---|---|
| Piece-wise constant | 三个月完全相同 | 越过末段断点后指示函数全为 1 |
| Piece-wise linear | 沿直线继续走 |






