【2021 数学建模国赛】B题:空气质量预报二次建模 1 赛后总结与分析

简介: 对2021年数学建模国赛B题“空气质量预报二次建模”的赛后总结与分析,涵盖了题目要求、解题思路、数据处理方法以及作者在比赛过程中遇到的挑战和反思。

1.png

相关链接

【数学建模国赛】2021 B题:空气质量预报二次建模 1 赛后总结与分析

【2021 数学建模“华为杯”】B题:空气质量预报二次建模 2 方案设计附实现代码

【2021数学建模“华为杯”】B 题此篇一等奖60页论文 :私信我

【2021数学建模“华为杯”】B 题两篇一等奖论文:私信我

【完整程序下载】

1 赛题题目

目前常用WRF-CMAQ模拟体系(以下简称WRF-CMAQ模型)对空气质量进行预报。WRF-CMAQ模型主要包括WRF和CMAQ两部分:WRF是一种中尺度数值天气预报系统,用于为CMAQ提供所需的气象场数据;CMAQ是一种三维欧拉大气化学与传输模拟系统,其根据来自WRF的气象信息及场域内的污染排放清单,基于物理和化学反应原理模拟污染物等的变化过程,继而得到具体时间点或时间段的预报结果。

但受制于模拟的气象场以及排放清单的不确定性,以及对包括臭氧在内的污染物生成机理的不完全明晰,WRF-CMAQ预报模型的结果并不理想。故题目提出二次建模概念:即指在WRF-CMAQ等一次预报模型模拟结果的基础上,结合更多的数据源进行再建模,以提高预报的准确性。

​ 为进行二次建模以预测给定监测点未来三天的空气质量情况,题目提供了监测点长期空气质量预报基础数据,包括污染物浓度一次预报数据、气象一次预报数据、气象实测数据和污染物浓度实测数据,其中,所有一次预报数据的时间跨度为2020-7-23 ~ 2021-7-13,所有实测数据的时间跨度为2019-4-16 ~ 2021-7-13,数据总量在十万量级(详见附件1~3)。需要注意的是:

(1)每日预报的时间固定为早晨7点,此时可以获得当日7时及之前时刻的实测数据,以及运行日期在当日及之前日期的一次预报数据(预报时间范围截至第三日23时)。监测时间在当日7时以后的逐小时实测数据和运行日期在次日及以后的一次预报数据都是无法获得的,例如:在2021年7月13日晨间对7月13日至7月15日的空气质量进行预报过程中,可供参考的实测数据时间范围为(2019-04-16 00:00, 2021-07-13 07:00),模型运行日期范围为(2020-07-23, 2021-07-13)。

(2)受监测数据权限及相应监测设备功能等的限制,部分气象指标的实测数据无法获得。

(3)由于一次预报对邻近日期的准确度较高,故理论上二次预报对邻近日期的准确度也较高。

2.png

问题1: 使用附件1中的数据,按照附录中的方法计算监测点A从2020年8月25日到8月28日每天实测的AQI和首要污染物。AQI计算公式如下

3.png


4.png

问题:2 在污染物排放情况不变的条件下,某一地区的气象条件有利于污染物扩散或沉降时,该地区的AQI会下降,反之会上升。使用附件1中的数据,根据对污染物浓度的影响程度,对气象条件进行合理分类,并阐述各类气象条件的特征。

问题:3 使用附件1、2中的数据,建立一个同时适用于A、B、C三个监测点(监测点两两间直线距离>100km,忽略相互影响)的二次预报数学模型,用来预测未来三天6种常规污染物单日浓度值,要求二次预报模型预测结果中AQI预报值的最大相对误差应尽量小,且首要污染物预测准确度尽量高。并使用该模型预测监测点A、B、C在2021年7月13日至7月15日6种常规污染物的单日浓度值,计算相应的AQI和首要污染物,将结果依照附录“污染物浓度及AQI预测结果表”的格式放在论文中。

问题:4 相邻区域的污染物浓度往往具有一定的相关性,区域协同预报可能会提升空气质量预报的准确度。如图 4,监测点A的临近区域内存在监测点A1、A2、A3,使用附件1、3中的数据,建立包含A、A1、A2、A3四个监测点的协同预报模型,要求二次模型预测结果中AQI预报值的最大相对误差应尽量小,且首要污染物预测准确度尽量高。使用该模型预测监测点A、A1、A2、A3在2021年7月13日至7月15日6种常规污染物的单日浓度值,计算相应的AQI和首要污染物,将结果依照附录“污染物浓度及AQI预测结果表”的格式放在论文中。并讨论:与问题3的模型相比,协同预报模型能否提升针对监测点A的污染物浓度预报准确度?说明原因。

5.png

A (0, 0) A1 (-14.4846, -1.9699) A2 (-6.6716, 7.5953) A3 (-3.3543, -5.0138)

图 4 各监测站点相对位置示意图,正东方向为x轴,正北方向为y轴,单位:km

2 总结与分析

此题是一个数据挖掘类的题目,此次过后,对国赛的数据挖掘比赛心生敬畏,连续肝了4天半,最后一天我一个人通宵肝了36个小时,产出论文部分35页,加上附录总共60页,代码较多,提交截止时间的最后半小时还在修改论文,卡在第三问的上,花了两天的时间,最后一问,我没有来得及做,让队友做的,最终也没能做出来,只是写了一个简单的思路。拿到问题首先对问题进行了解分析:此题出题的目的是因为一次预报的数据不准确,现在为了二次预报建模,也提供了实测数据。预报数据是小时为单位记录一次,实测数据分为两种,一种是以小时为单位记录一次,一种是以天记录一次。注意,提供的实测数据和预报数据是由有气象条件的,气象条件是对模型预测是不可或缺的影响因素,不要忽略了,我在做的时候没有想起来把气象条件加以利用,赛后才想起来,接下来的分析将会说到。总共有18个Excel,数据残缺不堪,每个表属性还不一致,处理起来非常麻烦和恶心人。

2.1 问题一

根据公式计算AQI,直接用代码实现逻辑即可,并不复杂。

2.2 问题二

具体方案设计和实现见【数学建模国赛】2021 B题:空气质量预报二次建模 2 方案设计附实现代码

(1)第一个任务:数据挖掘的第一步,数据分析和数据预处理。数据分析后发现,第一,实测数据中按天为单位记录的数据只有800多条,按小时计算的有25万条,如果想把小时的数据合并成天的数据去使用,数据量是远远不够的。这也反向说明了出题人也考虑到了这个问题。所以按小时为单位计算出来的能提供更多的数据。第二,每个数据文件中存在大量的缺失值和空值,甚至存在连续的缺失值。在时间序列的数据中,存在缺失值和异常值,不能直接删除,需要相应的插值法去填充回去,否则会影响数据分布。

(2)第二个任务,题目中第一小问,问根据对污染物浓度的影响程度,对气象条件进行分类。题目的意思是气象条件对污染物浓度有极大的影响,那根据这个影响来对气象条件分成几种类别。换句话说,需要根据”影响程度“这个因素来对气象条件聚类。但是这个”影响程度“是什么?那到底什么是用来评价对污染度浓度的影响呢?题目没说清楚,题目中少了主语,导致我刚开始对这题一直不理解。

我认为的是IAQI。因为IAQI的含义是:污染物P的空气质量分指数。这个指数就是来评价每种污染物的浓度指标,不就是影响的程度都都体现在了IAQI上了嘛。虽然也思考过可能是AQI,但是AQI指的是6种污染的空气质量指数,是一个综合指标,并不能代表单独的每种污染度浓度。

当然IAQI对应着6中污染物浓度,那聚类的特征也就有6个IAQI。只要聚类的特征选定了,聚类方法众多,选择多个方案一对比,就能得到不错的聚类效果。

(2)第三个任务,第二小问是需要对分类的的气象条件,进行相应的特征分析,其实就是对每一种类别分析温度、湿度、气压、风速、风向、SO2、NO2、PM10、PM2.5、O3、CO这些特征分析表现。假设举例理解一下,第一类:它的特征可能是相对于其他类风速大、湿度高、气压低、O3污染物的浓度也低。那这一类气象条件有利于O3污染物的扩散。还有更多的详细的分析可以参考专业描述气象特征文献的描述方法。

6.png

2.3 问题三

具体方案设计和实现见【数学建模国赛】2021 B题:空气质量预报二次建模 2 方案设计附实现代码

(1)第一个任务:建立一个统一的数学模型,根据A、B、C三点独立采集的数据来预测三点未来三天6种污染物浓度的数据。每个监测点有三类数据:每小时预报、每小时实测、每天实测。评价指标是预报的数据与实测的数据的AQI最小相对误差。

这是一个多变量的时间序列预测问题。注意是建立一个统一的数学模型,而不是只建立一个模型用6类数据去拟合。前期我就犯了这个错误,一直思考不出这个问题的解决方案,也尝试过用6个数据去训练一个模型,但是效果不佳,分析原因是三个类因为采集的时间单位不一致,导致数据的分布根部不一致,如果把小时为单位的数据合并成天为单位的数据,只有800多条数据,根本不够训练和拟合模型。

我的解决方案是:A、B、C三个监测点数据类型一致,就可以考虑建立一个神经网络模型去预测每个监测点的数据,建立出来的数学模型就统一了。这个数学模型就可以通用在三个监测点,针对每个检测点的预测,需要单独用A、B、C各点的数据去训练对应的一个网络模型。换句话说,网络结构不变,改变训练数据,更换模型权重。

7.png

如上图中,如何用三类的数据去拟合模型,得到一个预报未来三天数据。做法是用相同的网络模型和训练参数,又单独为每类数据训练三个网络模型,取三个模型的输出平均值为最终未来三天的数据值。其中有几个注意点,以小时为单位的数据,要预报未来三天的数据,那模型中就需要预测为72小时的数据,最终对这72小时的数据合并成三天的数据,合并的过程,并不是简单的平均值,而是使用题目所提供的臭氧O3 的8小时滑动平均算法。臭氧的24小时数据,用8小时滑动平均去取均值,其他污染物直接取24小时的均值即可。

还要注意,每一类是数据,属性列各不相同,共同有的是6种污染物,在每小时为单位的预报数据中独特有的21列属性,没小时实测数据中有11列属性,每天为单位的数据中只有6列污染物浓度属性。我论文中的方案是,考虑了神经网络模型的通用性,三类数据都只用了6类污染物浓度为6种特征,即神经网络的输入输出是6个。但是赛后想到,题目要求的是要利用预报数据的气象条件和其他特征去二次建模,如果不利用这些条件,就违背了题意。所以应该在训练每类数据的时候,模型的输入输出大小设定分别是21、11、6。最后只取输出的6列污染物浓度即可。

(3)第二个任务:根据预报的污染物浓度,计算AQI和首要污染物,和问题一一样,就没有任何难度。

2.4 问题四

(1)分析(这一点参考别人的思路)

此处四个监测点A、A1、A2、A3不再独立。而是相互关联。需要建立A、A1、A2、A3四个监测点的协同预报模型。每个监测点的相同采集方式的表中属性一样,那是可以用上问题三的模型的。

区域协同预报的目的主要是为了防止某个点的预测数据存在误差的情况下。如果存在误差,需要根据协同预报去修正预报数据。怎么去修正数据,这是这题研究的重点。

注意,并不是说用A1、A2、A3、A4的三个模型去预测A点的数据,而是监测点A可能自己根据该检测点采集的数据得到的二次预报结果还是存在误差,需要根据邻近的监测点A1、A2、A3预报结果去修正A。同理,其他三个点,也需要另外三个点的预报数据去修正。

因此可首先基于真实数据建立 A、A1、A2、A3 四个站点间与位置、污染物浓度数据有关的拟合模型,然后在将该拟合模型之间的关系带入到一次预报数据中,若一次预报数据与拟合得到的结果差距较大则将其替代(可设置一定的误差界限)若一致则保留,此时在利用问题三构建的模型进行计算,看与真实值的误差是否减小,若减小则表示区域协同预报可以提高准确度,若并未减小则表示效果不好。

目录
相关文章
|
4月前
|
数据挖掘 数据库
略微学习一下二区4.5分纯生信,单基因肺结核叶酸基因集+泛癌分析
研究摘要: 一项发表于2023年《MEDIATORS OF INFLAMMATION》杂志的文章发现,RTP4基因可能成为诊断肺结核的新生物标志物。研究者通过分析GEO数据库中的多个微阵列数据集,使用WGCNA方法识别与肺结核和叶酸生物合成相关的基因模块。RTP4在健康与肺结核患者间的表达有显著差异,并且在抗结核治疗前后表达量变化。泛癌分析显示,RTP4在不同肿瘤类型中的表达与预后关联不一,提示其可能在多种癌症中具有重要功能。这些发现支持RTP4作为诊断工具的潜力,并为进一步研究其在结核病和癌症中的作用奠定了基础。
65 1
|
11月前
|
算法 数据挖掘 数据处理
【数学建模】国赛真题分析 2012 A题 葡萄酒的评价
【数学建模】国赛真题分析 2012 A题 葡萄酒的评价
256 0
|
11月前
|
安全 算法 数据挖掘
【数学建模】国赛真题分析 2014A题 嫦娥三号软着陆轨道设计与控制策略(一)
【数学建模】国赛真题分析 2014A题 嫦娥三号软着陆轨道设计与控制策略(一)
98 0
|
1月前
|
机器学习/深度学习 数据挖掘
|
18天前
|
机器学习/深度学习 数据采集 算法
空气质量预报二次建模 2 方案设计附实现代码
该文详细分析了2021年数学建模国赛B题“空气质量预报二次建模”。首先,通过赛后总结提出了解决方案。针对问题一,使用Matlab代码实现;问题二涉及数据预处理,采用KNN插值填充缺失值,并通过Python实现。特征选择上,选择了与AQI关联度高的特征进行聚类分析。聚类算法选择了K-means和minibatchKMeans,并分析了气象特征。问题三中,设计并实现了基于LSTM的多变量时间序列预测模型,用于预测A、B、C三点的空气质量。问题四未详细展开。代码及更多细节可见GitHub。
32 0
|
1月前
|
机器学习/深度学习 数据可视化 Python
【江西省研究生数学建模竞赛】第三题 植物的多样性 建模方案及参考文献
本文提供了江西省研究生数学建模竞赛第三题“植物的多样性”的建模方案、参考文献和可视化示例,探讨了如何通过数学模型研究植物数量变化规律并提出保持森林多样性的策略。
26 0
【江西省研究生数学建模竞赛】第三题 植物的多样性 建模方案及参考文献
|
1月前
|
机器学习/深度学习 数据采集 算法
【2021 数学建模“华为杯”】B题:空气质量预报二次建模 2 方案设计附实现代码
2021年数学建模“华为杯”B题的方案设计和实现代码,包括数据预处理、特征选择、聚类算法、气象特征分析以及使用LSTM神经网络进行多变量时间序列预测以实现空气质量预报。
86 0
|
1月前
|
机器学习/深度学习 数据挖掘 Python
【第十届“泰迪杯”数据挖掘挑战赛】B题:电力系统负荷预测分析 问题二 时间突变分析 Python实现
第十届“泰迪杯”数据挖掘挑战赛B题中对电力系统负荷预测分析进行时间突变分析的Python实现方法,包括定义绘图函数、应用阈值查找异常值、手动设置阈值、使用分位数和3Sigma原则(IQR)设定阈值,以及根据分位数找到时间突变的步骤,并提供了完整代码的下载链接。
40 0
|
4月前
|
存储 自然语言处理 数据可视化
R语言文本挖掘:kmeans聚类分析上海玛雅水公园景区五一假期评论词云可视化
R语言文本挖掘:kmeans聚类分析上海玛雅水公园景区五一假期评论词云可视化
R语言文本挖掘:kmeans聚类分析上海玛雅水公园景区五一假期评论词云可视化
|
4月前
|
算法 数据挖掘
R语言面板数据回归:含时间固定效应混合模型分析交通死亡率、酒驾法和啤酒税
R语言面板数据回归:含时间固定效应混合模型分析交通死亡率、酒驾法和啤酒税