背景
最近我在上一门名为“地球物理观测解析学”的课程。该课程主要教授学生如何使用Python对地球物理观测结果进行分析。在探讨非线性最小二乘法时,老师按照惯例布置了一项Python作业。然而,这次的作业有点特殊——它涉及的数据集并非是地球物理学的观测数据,而是关于该课程学生提交作业数量(y)与距离提交截止的时间之间(x)的关系(图1)。
图1 提交作业数(y)与距离提交截止的时间(x)之间的关系图
乍一看,只需要使用一个指数函数模型y(x)=Aexp(βx)就能轻松解决掉这次作业。然而,在不断试错后,我发现在这组数据集背后蕴含着一些更为深奥的秘密。
最初设想的几种模型
根据图1,很容易就能发现这次涉及到的观测量是随着时间单调递增的。因此,如表1所示,我引用了几个在计算机科学和物理学中经常用到的模型。不过,为了彰显出单调递增函数模型的适配性,我还特别增加了一个2次函数模型作为参考。
表1 最初设想的几种模型的参数和表达式
模型 | 参数 | 表达式 |
2次函数模型 | a,b,c | n(t)=at2+bt+c |
指数函数模型 | a,b,c | n(t)=aexp(bt)+c |
逻辑斯蒂函数模型 | a,b,c,e | n(t)=1+exp{−b(t−c)}a+e |
双曲线函数模型 | a,b,c | n(t)=atanh(bt)+c |
最终,经过迭代10次的回归分析,我得出了如表3所示的回归结果。
表3 最初设想的几种模型的回归结果
模型 | 回归结果(迭代10次) | 残差 |
2次函数模型 | n(t)=3.90t2+30.30t+60.98 | 49.94 |
指数函数模型 | n(t)=55.77exp(1.30t)+13.03 | 19.80 |
逻辑斯蒂函数模型 | n(t)=1+exp{−1.73(t+0.26)}86.97+11.64 | 32.55 |
双曲线函数模型 | n(t)=52.92tanh(1.03t)+67.65 | 23.92 |
将这些回归结果与原始观测数据绘制成图表,便可得到图2。从图2可以看出,由于2次函数并非在定义域上一直呈现单调递增的性质,因此最终得到的回归结果与实际情况相差较大。而其他的3个模型由于都具有“先缓后急”、定义域上单调递增的性质,因此最终的回归结果基本与实际观测结果相吻合。
图2 最初设想的几种模型的回归结果。其中,在各分图中,蓝色曲线为实际观测结果,橙色曲线为未经回归分析的初始函数,绿色曲线为迭代1次后的回归结果,红色曲线为最终回归结果(迭代10次)。
事实上,基本上所有同学在完成了上述回归分析后,便将结果总结成了PDF文档将作业提交了上去。然而,如果稍微思考一下,我们便能联想到一个极为重要的事实——通常情况下,绝大多数学生不太可能在凌晨、午休或者正常上课时间提交作业。对于这种情况的思考,让我觉得有必要继续深入展开探索。
考虑了1日周期的指数函数模型
如表1所示,由于指数函数模型和观测数据之间的残差范数∣∣d∣∣最小,因此我决定在指数函数模型的基础上进一步展开调查。考虑到上一章末尾中提到的情况,我决定为指数函数模型只添加一个周期为1日的修正项。为了减少计算量,该修正项不考虑平日和周末的区别,也不考虑作业提交截止时间到来前为学生们施加的“紧张感”。
正如上文所说,由于观测量是随着时间单调递增的,因此周期修正项也应当具备这种性质。在考察了多种模型后,我决定在指数函数模型中添加如下的周期修正项。
Ψ(t)≡γ∫0tsin2(πt′+φ)dt′
将周期修正项Ψ(t)进行绘图,我们便得到了如图3所示的函数图像。从图3可以看出,该周期修正项长得有点像是阶梯函数,确实具备单调递增、随1天周期发生变化等性质。
图3 周期修正项Ψ(t)的函数图像
综上所述,考虑了1日周期的指数函数模型共有5个参数(α,β,γ,φ,δ),其表达式可写为
n(t)=αexp(βt)+γ∫0tsin2(πt′+φ)dt′+δ
在该模型的基础上进行迭代10次的回归分析,我们得到了如下回归结果。
n(t)=47.42exp(1.66t)+4.13∫0tsin2(πt′−0.88)dt′+22.26
该回归曲线的残差仅有16.77,与一般的指数函数模型相比减少了15%左右。根据其初始相位φ=−0.88,我们还可以推测出在每天24时的∣∣2π−0.88∣∣=3.35小时前,即每天20时39分左右提交作业的人数是最多的。
如图4所示,将回归曲线和观测结果绘制成图像,通过与图2中所示的4种模型进行比较,我们可以发现考虑了1日周期的指数函数模型更加贴合观测数据,并且在一定程度上展现出了周期变化。
图4 考虑了1日周期的指数函数模型的回归结果。蓝色曲线为实际观测结果,橙色曲线为未经回归分析的初始函数,绿色曲线为迭代1次后的回归结果,红色曲线为最终回归结果(迭代10次)。
总结
图5 5种模型的回归结果与观测数据的图像
本文通过对“地球物理观测解析学”课程中作业提交量与距离提交截止的时间进行非线性回归分析,探讨了不同数学模型的适用性。结果表明,指数函数模型与实际情况最为相符。在该模型的基础上考虑周期为1日的修正项后,可以发现修正后的模型更加贴合观测数据,并且在一定程度上展现出了周期变化。
附:原理
[buy]以下内容适合对高等数学和回归分析等主题有一定了解的读者阅读。[/buy]
根据数据集的特点,我们可以将提交作业数n视为距离提交截止时间t的函数n(t)。由于该数据集共有66组数据,因此观测方程可写为
dj=njobs−nj(j=1,2,…,66)
将αi(i=1,2,…,n)视为n(t)的参数,利用泰勒展开,可以得到如下的近似式。
n(α1+Δα1,α2+Δα2,…,αn+Δαn) ≅n(α1,α2,…,αn) +i=1∑n∂αi∂nΔαi
因此,关于正规方程式d=y−Ax,则有
d=⎝⎛ d1⋮d66⎠⎞ y= ⎝⎛ n1obs−n1⋮n66obs−n66⎠⎞ A= ⎝⎛ ∂α1∂n∣t=t1 ∂α1∂n∣t=t2 ⋮ ∂α1∂n∣t=t66 ∂α2∂n∣t=t1 ∂α2∂n∣t=t2⋮ ∂α2∂n∣t=t66……⋮… ∂αn∂n∣t=t1 ∂αn∂n∣t=t2⋮ ∂αn∂n∣t=t66⎠⎞ x=⎝⎛ Δα1Δα2⋮Δαn⎠⎞
通过将残差向量d的欧几里德范数(L2范数)∣∣d∣∣2最小化,可以求出参数的变化量x为
x=(ATA)−1ATy
通过αi→αi+Δαi对参数进行更新,重复上述步骤10次,便可大致求出精度较好的回归曲线系数。
Views: 60