最近在准备国赛,拿往年的数模比赛练手,做了去年国赛的e题,发现其中的问题的通用性很强,因此写下本篇文章记录一下,对于这类综合性问题进行处理的常用方法和具体的求解过程。
问题1:研究该水文站黄河水的含沙量与时间、水位、水流量的关系,并估算近 6 年该水文站的年总水流量和年总排沙量。
问题分析
对于这个问题,我们可以将问题分成几个部分:含沙量与时间的关系、含沙量与水位的关系、含沙量与水流量的关系、估算近 6 年该水文站的年总水流量和年总排沙量。
题目一共给了3个附件,分别是:“附件 1 2016-2021 年黄河水沙监测数据”、“附件 2 黄河断面的测量数据”、“附件 3 黄河部分监测点的监测数据”。大致浏览过数据后认为对于问题1这几个问题,主要是需要用到附件1。
下面着手解决问题1,先从最简单的入手:含沙量与时间的关系。
这个问题很容易想到通过绘制时间序列图表来观察含沙量的长期变化趋势,想要进一步分析他们之间的关系话,可以进行周期性分析或者是季节性、突变性分析,而问题2就是关于这一部分的分析,因此反复进行这些分析没有必要,将这部分放到问题2中,这里仅绘制含沙量随时间变化的时间图。
绘制时间序列图表我们需要从附件中获取到两组数据,一组是含沙量的变化情况,另一组是对应的时间。而附件给的数据并不是之间的(时间,含沙量)一 一对应的简单二元组,而是如下图所示:
可以看到附件1中包含了从2016到2021年6年时间的检测数据表,其中每四个小时对水位、水流量进行监测,每天8点对含沙量进行监测。同时包含了大量的空白,我们人眼可以很容易的辨认出其中的时间对应情况而放到机器里却没有这么直接,因此我们需要进行数据预处理,将给出的数据变成数据一对一(时间,含沙量)的二元组。
下面将详细讲一下数据处理的过程:
1. 筛选出监测到的含沙量数据
考虑到每天8点会对含沙量进行监测,因此用pandas带的dropna函数,筛选出非空的含沙量数据,如下图结果:
看见其实一共有373条数据,也就是说除了每天8点进行监测含沙量外,可能特定的时刻也需要进行监测(如1月1日的0点),可能是出于安全等原因的考虑,但是这并非是我们考虑的。
2. 筛选出所有时间为“8:00”的数据
考虑到其实没有多监测几条数据,不妨我们可以拿每天8点的数据当作当天的含沙量水平,因此下面我们筛选出所有时间为“8:00”的数据,顺便对含沙量进行筛选(以防某天8点没有监测是空数据,从结果看我的担心是多余的),将结果进行整合结果展示在下面:
现在我们就得到了时间及其对应下含沙量的含沙量情况,下面进行绘制含沙量时间变化图:
这里直接用了b站上对e题分析代码,指路:2023数学建模国赛E题手把手教学复盘高教社杯国赛教学代码复现2024年数模国赛系列学习。
可以看到含沙量随时间的变化是比较直观的,而含沙量与水位的关系、含沙量与水流量的关系通过剩下两个图隐约可以看到一定的关系,但是也是一种直觉上的关系,因此需要更进一步分析其中的关系。
含沙量与水位、水流量的关系
1. 线性关系
在原散点图中叠加了一条线性回归线。散点图中的点表示实际数据,而回归线显示了两者之间的线性趋势,结果分别如下所示。
可以看到,水位与含沙量之间存在正相关关系。这表明随着水位的上升,含沙量也倾向于增加。这一现象可能反映了较高水位时水体中沉积物被更多地携带或悬浮的情况。归图中的回线较好地拟合了大多数数据点,回归线两侧的数据点分布较为均匀,表明线性模型在一定程度上能够描述这种关系。然而,图中也存在一些离群点,提示可能有其他因素影响含沙量。
而对于水流量与含沙量来说,我们看到流量与含沙量之间也呈现出正相关性。随着水流量的增加,含沙量亦有增高的趋势。回归线同样能够捕捉到这一线性关系,尽管数据点在更高流量处显得分散,可能反映了在极端流量条件下,含沙量受其他因素干扰较大的现象。这种趋势可以解释为水流量的增加有助于携带更多的沉积物进入水体。
2. 构建平滑曲线
前文讲到含沙量与水位、水流量之间可能存在一定程度上的线性关系,下面通过构建平滑曲线来进一步验证这个结论。不同于线性回归模型,这里构建的平滑曲线可以捕捉到更复杂的非线性关系。
可以看到,含沙量与水位之间仍然存在正相关关系,构建的多项式函数和线性回归线几乎保持一致。在低水位下,含沙量的增速较为缓慢,而在水位上升至一定水平后,含沙量开始显著增加。
而对于水流量与含沙量来说,与线性回归模型不同,图中的多项式拟合曲线表明含沙量在低流量时相对稳定,但随着流量的增加,含沙量呈加速增长趋势。然而,在非常高的流量下,含沙量的增长速度开始减缓,可能是因为极高流量下沉积物的携带能力达到了饱和。这一发现提示我们流量的增加对含沙量的影响在不同区间存在差异。
3. 热力图
下面利用热力图(heatmap)展示了含沙量与水位、水流量之间的关系。热力图是一种二维数据可视化方法,通过颜色的深浅表示数据点的密度或频率,能够直观地揭示数据集中某些区域的模式或趋势。
可以看到,大部分数据集中在较低的水位范围(约42.5米至43.0米)和中等含沙量范围(0.5至1.5 kg/m³)之间。这表明在这些水位条件下,含沙量较为稳定且集中。然而,在更高或更低的水位下,含沙量的分布则显得较为分散。这种集中现象可能与河流的水力条件和沉积物来源密切相关,反映出河流在特定水位下的沉积物携带能力较高。
而对于水流量与含沙量来说,含沙量在流量较低(约0至500 m³/s)时的分布最为集中,尤其是在含沙量为1 kg/m³左右时。这意味着在低流量情况下,河流的含沙量更为稳定,而随着流量的增加,含沙量的分布开始变得更为分散。值得注意的是,在极高流量下(超过1000 m³/s),含沙量的分布也较为集中,但与低流量时的分布有所不同,这可能与极端水文事件或特殊环境条件有关。
4. 分箱分析
分箱操作,具体来说,是将水位和流量按区间(bins)进行分组,并计算每个分组内的平均含沙量。此方法有助于识别在不同水位和流量条件下,含沙量的变化趋势。
可以看到,随着水位的上升,平均含沙量也逐渐增加。这一趋势在水位达到一定高度后(约43.5米)尤为明显,表明在较高水位条件下,河流携带的沉积物量显著增多。这可能是由于水位上升导致的流速增加,从而增强了对河床沉积物的冲刷能力。
总体而言,对于水流量与含沙量来说,随着流量的增加,平均含沙量呈现上升趋势,尤其是在流量超过1377.9 m³/s时,含沙量显著增加。这表明在高流量条件下,河流携带的沉积物量明显增多。然而,在中等流量(约800-1000 m³/s)时,含沙量的变化较为平缓,可能反映了流量和含沙量之间的非线性关系。
目前就完成了对问题一中的关系分析,对于问题1还剩下估算水流量和含沙量的年情况。先更到这里,之后有时间在补上剩下的内容。