数学 / 函数 · 从概念到零点与增长速度 / 函数模型:从数据到可外推的曲线 待审核 12 / 12
model · 半对数判据 · logistic

函数模型:从数据到可外推的曲线

前面几页把各类函数的性质讲完了,还剩一件事没做:拿函数去描述一件真实发生的事。把一列观测数据换成一条曲线要走五步——读出数据的形状,选定一个模型族,在族内定出参数,检验拟合的好坏,判断这条曲线能外推到多远。数学模型(mathematical model)指的就是这条曲线连同它的适用范围。五步里最容易被跳过的是选族这一步,而它决定了外推时会得到什么答案。参数只在族内挑一条曲线,族选错了,参数再准也没用。

1 · 模型族与增量的形状

线性 · 指数 · 幂 · 对数 · logistic

选族的第一手依据是相邻数据之间的增量。自变量等距增加时,线性函数的增量是常数,指数函数的增量成等比,对数函数的增量逐步减小但没有上界。幂函数 y=Axpy = A x^p 两样都不占:增量既不等差也不等比,只有相对增量 Δy/y\Delta y / yΔx/x\Delta x / x 保持固定比例。

表 1-1 · 五个模型族的解析形式、等距取样下的增量特征与典型场景。
模型族 解析形式 增量特征 典型场景
线性 y=ax+by = ax + b 增量为常数 匀速运动、固定单价
指数 y=Aekxy = A e^{kx} 增量成等比 复利、无约束繁殖
y=Axpy = A x^p 相对增量成固定比例 标度律、开普勒第三定律
对数 y=Alnx+by = A \ln x + b 增量递减且无上界 感觉强度、信息量
logistic y=L/(1+ek(xx0))y = L / (1 + e^{-k(x - x_0)}) 先加速后减速,有上界 有资源约束的增长

分段函数不在这张表里,因为它不是一个族,而是把定义域切开之后在每一段上各用一个族,见 §4。

2 · 半对数与双对数坐标下的判据

ln y vs x · ln y vs ln x

增量特征在数据带噪声时不好读。更实用的判据是换坐标:纵轴改画 lny\ln y、横轴仍画 xx,得到的图称为半对数图;两轴都改画对数,得到双对数图

指数函数在半对数图上是直线,因为 y=Aekxy = A e^{kx} 两边取对数给出 lny=kx+lnA\ln y = kx + \ln A,斜率即 kk。幂函数在双对数图上是直线,y=Axpy = A x^p 给出 lny=plnx+lnA\ln y = p \ln x + \ln A,斜率即指数 pp。选族由此变成一句可目视的话:哪种坐标下的点列最接近一条直线,就选对应的族。

八大行星的轨道数据是这条判据最干净的例子。以天文单位计的半长轴与以年计的公转周期,在双对数坐标下相关系数的绝对值是 0.99999999,拟合出的斜率 1.49971、系数 1.00029,开普勒第三定律 T2a3T^2 \propto a^3 里那个 3/23/2 就是这样从图上量出来的,均方根残差 0.0088 年。

图 2-1 · 三组真实数据在原坐标、半对数与双对数坐标下的形态,竖线是当前模型族在当前坐标下的残差。可切换数据、坐标与模型族,读数栏并列给出三种坐标下相关系数的绝对值。

判据也有失效的时候。Carlson 1913 年逐小时记录的酵母培养数据 [3],在三种坐标下的相关系数绝对值分别是 0.9676、0.9101、0.9806,没有一个接近 1,高低次序也说明不了什么。这组数据不属于以上任何一族,它的形状是先加速后饱和的 S 形。判据能排除,不能确认。

3 · 参数的确定与残差

族选定之后,参数由最小二乘给出:让各点的残差(residual,观测值减去模型值)的平方和最小。指数族与幂族的做法是先取对数化成直线,对直线做最小二乘,再把参数回代。

其中有一处容易被略过的差别:线性化之后最小化的对象是 lny\ln y 的偏差,而非 yy 的偏差。前者按相对误差配权,小数值的点与大数值的点分量相同;后者按绝对误差配权,大数值的点说了算。两条路径给出不同的曲线。用 1790–1900 这十二个美国人口普查数据拟合指数族,线性化给出 A=4.203A = 4.203k=0.02740k = 0.02740,在原坐标下直接最小化残差平方和则给出 A=5.275A = 5.275k=0.02457k = 0.02457。后者的均方根残差是 1.508 百万人,前者 2.944,是它的 1.95 倍;可是在 1790 年这一点上,线性化的预测 4.203 反而比原坐标的 5.275 更贴近实测的 3.929。两条曲线同属指数族、来自同一组数据,外推到 2020 年却给出 2291 与 1503,相差 1.5 倍。

拟合优度常用决定系数 R2=1SSE/SSTR^2 = 1 - \text{SSE} / \text{SST} 报告,其中 SST 是以 yy 的均值作模型时的残差平方和。R2=1R^2 = 1 表示逐点精确命中,R2=0R^2 = 0 表示这个模型不比「一律取均值」更强,负值表示比取均值还差。

R2R^2 越接近 1 只说明模型解释了 yy 的更多变差,不说明族选对了。指数族在 1790–1850 这七个点上的 R2R^2 是 0.99982,logistic 族是 0.99961,两者到小数点后第四位才分出高下,而它们对 2020 年的预测相差 13 倍。拟合优度是内插的指标,与外推能力无关。

4 · 阶梯计价的连续性

阶梯电价、阶梯水价与累进税率都是分段函数模型,共同的规定是:超出某一档上界的那部分量按下一档费率计,已落在低档里的部分不受影响。这条规定不是公平二字的修辞,而是分段函数连续性的直接要求。

设各档上界为 b1<b2<b_1 < b_2 < \dots、费率为 r1<r2<r_1 < r_2 < \dots。若改成「整笔按所在档费率计」,第 ii 档与第 i+1i+1 档的表达式在 bib_i 处分别取 ribir_i b_iri+1bir_{i+1} b_i,差值 (ri+1ri)bi(r_{i+1} - r_i) b_i 就是图象上的一道断口。中国个人所得税的第一档上界是 36000 元、费率 3%,第二档费率 10%,断口高 2520 元:应纳税所得额 36000 元时税后余额 34920.00 元,36001 元时反而只剩 32400.90 元,多赚一元净少 2519.10 元。

按逐段累加的写法则不会出现断口。税率表上印的那一列速算扣除数,正是把逐段累加改写成一次乘法之后剩下的常数,它满足 ci=ci1+(riri1)bi1c_i = c_{i-1} + (r_i - r_{i-1}) b_{i-1},也就是前面各道断口高度的累加。按这条递推算七个档得到 0、2520、16920、31920、52920、85920、181920,与税率表印刷的那一列逐项相同——这一列数字本身就是连续性条件的解。

图 4-1 · 累进税率下税后余额随税前应纳税所得额的变化。一条是现行的逐段累加算法,另一条是整笔按所在档费率的断崖式算法。可调应纳税所得额与横轴上界,读数栏给出所在档、边际税率与速算扣除数。

5 · 有上限的增长与外推的分岔

指数模型的问题写在它自己的形式里:AekxA e^{kx} 无界,而现实中的量几乎都受约束。修正的办法是把常数增长率 kk 换成随存量线性下降的 k(1y/L)k(1 - y/L)yy 逼近容量 LL 时增速趋于零,解出的曲线是logistic 模型 y=L/(1+ek(xx0))y = L / (1 + e^{-k(x - x_0)})。它在 yy 远小于 LL 时近似指数增长,LL 趋于无穷时退化为指数模型。这条修正由 Verhulst 在 1838 年提出 [1],Pearl 与 Reed 1920 年用美国人口普查数据做了第一次实拟合 [2]。两族是嵌套的,这一点在拟合上有直接后果。

数据只覆盖加速段时,LL 根本定不下来。用 1790–1850 这七个普查点扫 LL,均方根残差随 LL 单调下降:LL 取观测最大值的 3 倍时是 0.393,12 倍时 0.127,1000 倍时 0.0854,收敛到的正好是指数族拟合的 0.0854。一维搜索必须给上界,而返回的所谓最优 LL 不过是那个上界。fitLogistic 因此带一个 capped 标志:撞上界时如实报出来,免得页面把实现里的搜索范围当成数据给出的容量。

外推的分岔就在此处。同样用 1790–1850 定参数,指数族的均方根残差 0.0854 百万人、R2=0.99982R^2 = 0.99982,logistic 族 0.126、R2=0.99961R^2 = 0.99961,指数族甚至略优,两条曲线在数据区间内目视重合。外推到 1910 年(越出数据区间 100%),两族给出 135.3 与 100.5,相差 35%。外推到 2020 年,两族给出 3441 与 265,相差 13 倍,而实测值是 331.4。

把训练数据延长到 1900 年,情形反过来:减速段进入数据后 LL 有了内部极小值,拟合给出 L=188.3L = 188.3,logistic 的残差 0.425 已明显优于指数族的 2.944。但这个 LL 同样不该当真。美国人口 1960 年就越过了 188.3 百万,2020 年是 331.4 百万。数据只能定住数据覆盖到的那一段。

图 5-1 · 指数模型与 logistic 模型在美国人口普查数据上的内插与外推,实心点参与拟合,空心点只作对照。可拖动训练截止年与外推终点,读数栏给出两族的残差、预测值与比值。

可外推多远没有普适答案,但有一条可操作的下限:两族模型在数据区间内的差别小于数据本身的噪声时,它们在区间外的差别得不到任何数据支持。

6 · 参考文献

  1. Verhulst, P.-F. (1838). Notice sur la loi que la population suit dans son accroissement. Correspondance Mathématique et Physique, 10, 113–121.
  2. Pearl, R., & Reed, L. J. (1920). On the rate of growth of the population of the United States since 1790 and its mathematical representation. Proceedings of the National Academy of Sciences, 6(6), 275–288.
  3. Carlson, T. (1913). Über Geschwindigkeit und Größe der Hefevermehrung in Würze. Biochemische Zeitschrift, 57, 313–334.