2022年亚太杯APMCM数学建模大赛
C题 全球变暖与否
原题再现:
加拿大的49.6°C创造了地球北纬50°以上地区的气温新纪录,一周内数百人死于高温;美国加利福尼亚州死亡谷是54.4°C,这是有史以来地球上记录的最高温度;科威特53.5°C,甚至在阳光下超过70°C,在中东的许多国家超过50°C。
自今年以来,我们已经看到了大量惊人的温度报告。地球正在燃烧的事实是毫无疑问的。在6月底到7月初这些地区出现可怕的高温之后,意大利再次创下欧洲气温纪录,达到惊人的48.8°C,许多国家宣布意大利处于高温状态紧急事件,全球气候变暖是一种与自然有关的现象。这是由于温室效应的持续积累,导致地球大气系统吸收和释放的能量不平衡,以及能量在地球大气系统中的不断积累,导致温度上升和全球气候变暖。
在工业革命之前,二氧化碳(CO2)在大气中一直在百万分之280(ppm)左右。CO的浓度22004年3月,大气中达到了377.7 ppm,导致了当时10年的最大平均增长。[1]根据美国国家海洋和大气管理局(NOAA)和斯克里普斯海洋研究所(SIO)的科学家称,每月平均CO2浓度水平在2022年5月达到421 ppm。[2]的一个经济合作与发展组织(OEC
D)的报告预测了一个CO2到2050年,该水平为685 ppm。[3]
APMCM组委会已经要求您的团队解决当前报告和未来全球温度水平的预测。他们提供了数据集2022_APMCM_C_Data。csv,其中包含239177条记录,以协助您的研究。
要求
1.你同意有关全球气温的说法吗?使用2022_APMCM_C_Data。附件中的csv和其他您的团队收集的数据集,以分析全球温度变化。
a)你同意2022年3月全球气温的上升导致了比过去10年期间更大的上升吗?为什么或为什么不呢?
b)根据历史数据,请建立两个或两个以上的数学模型来描述过去,并预测未来的全球温度水平。
c)使用1个(b)中的每个模型来分别预测2050年和2100年的全球气温。你们的模型是否同意2050年或2100年全球观测点的平均温度将达到20.00°C的预测?如果
不是在2050年或2100年,那么您的预测模型中的观测点的平均温度何时会达到20.00°C?
d)你认为1(b)的模型最准确?为什么
2.影响温度变化的原因是什么?
a)使用问题1的结果和附件2022_ APMCM_C_ Data中的数据。csv和您的团队收集的其他数据集,建立一个数学模型来分析全球温度、时间和位置之间的关系(如果有的话),并解释这种关系或证明它们之间没有关系。
b)请收集相关数据,分析自然灾害的因素(如火山爆发、森林火灾、COVID-19等)。这对全球温度有什么影响吗?
c)你认为影响全球温度变化的主要原因是什么?
d)你认为有什么措施来遏制或减缓全球变暖吗?
3.准备一篇非技术性的文章(最多1页),请写一篇非技术性的文章文章(最多1页)给APMCM组委会,解释你的团队的发现和对未来的建议。
您的PDF解决方案总共不超过25页,应该包括:
一页汇总表。
目录。
你的完整解决方案。
有一页纸的非技术性文章。
注:APMCM竞赛的页面限制版数为25页。您提交的所有方面都达到了25页的限制(摘要,表,目录,文章)。但是,参考文献列表和附录的页面并不受限制。
整体求解过程概述(摘要)
全球变暖引发的一系列危害,影响到人类生存的方方面面。本文通过数学模型分析,采用多种预测与分析的算法研究全球温度变化、影响全球温度变化的原因,并且基于研究结果对于全球变暖的问题提出科学合理的建议。
针对问题一,首先,我们将题目所提供的数据进行数据预处理,基于题目提供的2012年到2013年的数据出的绘制拟合曲线图与统计分析,得到气温变化规律,再通过Python从网站上采集了从2012年至今的每日全球平均气温数据,分析出2022年3月全球气温上升导致比过去10年观察到的增幅更大是不正确的。其次,综合第一小问绘制的拟合曲线图,我们建立多项式拟合模型以及根据实际背景在模型中加入适当熵权参数λ修正后的利用指数平滑法的时间序列模型,描述过去并且预测未来的全球温度水平,并且预测出2050年与2100年的平均气温分别为19.6℃与20℃。最后,对建立的两个模型进行分析,得到时间序列模型的准确性更高。
针对问题二,首先,我们选择两个城市为代表,将数据可视化,采用控制变量法,得到同一地点一年中不同时间与温度的关系、同一时间不同地点与温度的关系,再选择一个城市为代表,得到同一地点不同年份与温度的关系。其次,将题目提供的位置数据处理成单一变量,将位置、时间、平均温度、平均温度的置信度进行斯皮尔曼相关性分析,得到温度、时间、位置之间的关系。接着,通过Python在网络上搜集火山爆发、森林火灾、COVID-19、极端气候、冰川融化、海平面上升等自然灾害对温度影响的数据,对数据进行基于熵权法的多元因子分析,得到自然灾害对全球气温的影响,并且获得自然灾害对温度影响权重占比。最后,我们通过查阅相关资料,分析出我们认为的影响全球气变化的主要因素,再通过结合第三小问中分析出的主要影响因素,提出抑制或减缓全球变暖的措施。
针对问题三,我们解释了我们的发现,得到了气温变化与位置、时间以及经济的关系和规律,并且提出了对于气温影响人口和环境保护的建议。
综合来看,本文较好地分析了全球气温水平,对未来全球温度增长水平进行预测,并且为抑制或减缓全球气候变暖提供一份强有力的理论依据。
模型假设:
为了便于模型建立,简化运算,本文对模型做出如下基本假设:
1. 假设题目所给的数据大部分真实可靠;
2. 假设我们爬取的数据里已涵盖战争,疫情等因素对于全球气温的影响;
3. 假设在考虑预测全球变暖未来气温时环境保护思想已深入人心;
4. 假设未来科技发展均符合低碳环保理念;
5. 假设未来疫情消失且全球各个国家和平共处;
问题分析:
问题一的分析
问题一可以分为四个小问,第一小问需要我们通过数据分析出2022年3月全球气温上升导致比过去10年观察到的增幅更大是否正确。对于第一小问,我们先将题目所提供的数据进行数据预处理,转换日期数据格式,基于题目提供的各国的2012年到2013年的数据出的绘制拟合曲线图与统计分析,得到气温变化规律,再通过Python从伯克利地球气温统计网站上采集了从2012年至今的每日全球平均气温数据,基于这些数据可以分析出,2022年3月全球气温上升导致比过去10年观察到的增幅更大是否正确。第二小问需要我们建立两个模型描述过去并且预测未来的全球温度水平。综合第一小问绘制的拟合曲线图,我们通过多项式拟合和函数逼近的方法,得到拟合多项式曲线函数,从而描述过去并且预测未来的全球温度水平;除此之外,我们建立利用指数平滑法的时间序列模型,并且根据实际背景在模型中加入适当熵权参数λ修正该模型,从而描述过去并且预测未来的全球温度水平。对于第三小问,我们可以基于第二小问中得到的模型预测2050年和2100年的全球平均温度,并观测到平均温度在什么时候达到20℃。第四小问需要我们判断第二小问中建立的哪一个模型更为准确,我们可以通过考虑多方面因素,如社会因素等判断哪一个模型更为准确。
问题二的分析
问题二可以分为四个小问,第一小问需要我们根据题目提供数据已经自己收集的数据建立一个数学模型研究全球温度、时间、位置之间的关系。对于第一小问,首先,选择两个代表国家为例,将数据可视化,采用控制变量法进行初步分析,得到同一地点一年中不同时间与温度的关系、同一时间不同地点与温度的关系。其次,控制位置不变,选择一个城市为代表,得到同一地点不同年份与温度的关系[5]。最后,将题目提供的位置数据处理成单一变量,将位置、时间、平均温度、平均温度的置信度进行斯皮尔曼相关性分析,得到温度、时间、位置之间的关系。对于第二小问,先通过Python在网络上搜集火山爆发、森林火灾、COVID-19、极端气候、冰川融化、海平面上升等自然灾害对温度影响的数据,对数据进行基于熵权法的多元因子分析,得到自然灾害对全球气温的影响,并且获得自然灾害对温度影响权重占比。对于第三小问,我们通过查阅相关资料,分析出我们认为的影响全球气变化的主要因素。对于第四小问,我们通过结合第三小问中分析出的主要影响因素,并结合相关资料,提出抑制或减缓全球变暖的措施。
问题三的分析
问题三需要撰写一篇非技术性文章,解释团队的发现和对未来的建议。我们基于问题一与问题二得到的结果,得到了气温变化与位置、时间以及经济的关系和规律,并加以解释,最后提出了对于气温影响人口和环境保护的建议。
模型的建立与求解整体论文缩略图
全部论文及程序请见下方“ 只会建模 QQ名片” 点击QQ名片即可
程序代码:
部分python程序如下:
import pandas as pd
import datetime
df = pd.read_csv("2022_APMCM_C_Data.csv",encoding='gb2312')
df['dt'].apply(lambda x: type(x))
df['dt']=pd.to_datetime(df['dt'])
df['dt'] = df['dt'].apply(lambda x: x.strftime('%Y%m%d'))
df10years = df [(df['dt'] <= '20220228') & (df['dt'] >= '20120201')]
df10years = df10years.sort_values(by='dt')
df10yearsChina = df10years[df10years['Country']=='China']
df10yearsNanjing = df10years[df10years['City']=='Nanjing']
df10yearsRussia = df10years[df10years['Country']=='Russia']
from pyecharts import Bar
import pandas as pd
bar = Bar("Change of Russia and AverageTemperature in the past 10 years")
datax = df10yearsRussia['dt']
datay = df10yearsRussia['AverageTemperature']
bar.add("", datax, datay,is_random=True)
bar.render("近10年来俄罗斯温度直方图.html")
import pandas as pd
import datetime
df = pd.read_csv("2022_APMCM_C_Data.csv",encoding='gb2312')
df['dt'].apply(lambda x: type(x))
df['dt']=pd.to_datetime(df['dt'])
df['dt'] = df['dt'].apply(lambda x: x.strftime('%Y%m%d'))
df10years = df [(df['dt'] <= '20220228') & (df['dt'] >= '20120201')]
df10years = df10years.sort_values(by='dt')
df10yearsChina = df10years[df10years['Country']=='China']
df10yearsNanjing = df10years[df10years['City']=='Nanjing']
df10yearsRussia = df10years[df10years['Country']=='Russia']
from pyecharts import Bar
import pandas as pd
bar = Bar("Change of Russia and AverageTemperature in the past 10 years")
datax = df10yearsRussia['dt']
datay = df10yearsRussia['AverageTemperature']
bar.add("", datax, datay,is_random=True)
bar.render("近10年来俄罗斯温度直方图.html")