论文部分内容阅读
摘 要:2020年初,中国面临新型冠状病毒(COVID-19)的威胁,为了对抗突然爆发的疫情,中国大陆地区采取了积极的应对措施,其中包括持续数十日的个人隔离与城市隔离【1】,隔离期间,工业、交通等设施停止或以低功率运行,企业暂缓复工,大范围的交通出行降低,对于大气质量有一定的影响,本文以盐城市近年的前三月的相关空气质量评价指标的数据为基础,运用R语言进行处理,从而获得疫情对于大气污染的直观影响。
关键词:大气污染;R语言
1:介绍
对于大气质量的评价常常有PM2.5、PM10、SO2等指标,其数据量较大处理过程较为繁琐,并且AQI指数只适合用来表征短期内的空气质量【2】,且考虑到AQI指数在处理颗粒物时所暴露的问题,所以对于分析拥有较大的时间跨度的大气质量变化,R语言是一个很好的工具。R语言【3】(The R Programming)诞生与1980年左右,其前身为贝尔实验室开发的S语言,目前R语言(以下简称R)广泛的用于统计计算、统计画图等领域,由于R开源且具有丰富的程序包,在处理大气污染相关的数据时具有速度快、操作简单、分析准确等其他软件不及的优势。
本文将以盐城市近五年前三个月的PM2.5、PM10、SO2、CO、NO2以及O3的浓度作为基础数据,并运用到R中包含的“ggplot2”、“OpenAir”、“stats”、“randomForest”程序包進行分析,同时本文将具体的探究R语言在执行环境数据时的使用,并不涉及基础的R的使用知识。
2:方法过程
大气污染的数据来自https://www.aqistudy.cn/,导入数据的方法有很多,可以将网页中的表格复制到Excel中,再将其导入到R或者可以使用“rvest”包进行网络爬虫直接读取数据,由于爬虫的代码相比于前者较为复杂所以我们采取第一种方法即读取Excel文件,R自带的函数只可以读取以“.csv”为后缀的文件所以我们此时需要加载“openxlsx”包才可以读取以“.xlsx”为后缀的文件,代码如下图【图1】。
将数据导入后可以先对原始数据做初步处理,我们先以时间为依据将数据分组进行处理,得到各个污染物数值的分布,分布图与代码见下图【图2】。
根据上述图像我们可以看出,2020年一、二、三月份的污染物浓度同前四年相比散点的位置较接近X轴,说明污染物的浓度低于前四年所测的数据,从直观上观测我们可以得出污染物浓度降低,大气质量改善的结论,但是从科学的角度来说这种初步的、定性的结论是粗糙的,下面我们将进一步的从定量的角度来说明这一变化。
我们采用t-检验来比较2020年的数据与其他四个月份的区别 ,一般的t-检验需要考虑两样本的方差是否相等,在这里我们采用Welch两样本t-检验来检验不同方差的样本来节约分析时的工作量【4】,由于t-检验要求只有两类样本所以我们依据年份将数据分为a组(年份为2020)和b组(年份为2020年以外的年份)来运行t-检验,得到的结果与相关的代码如下图所见【图3】。
t-检验显示各污染物的p值全部超过0.05,在统计学上及认为此次假设不具备显著性【5】,表明2020年污染物数据与其他年份存在显著性差异即2020年大气质量的平均水平与往年同时段的平均水平存在差异,同时从t检验所示的各污染物平均数据可以看出2020的污染物平均水平低于其余年份,所以从我们从统计的角度可以初步确定2020年大气质量优于往年,但是由于数据选取的不足,我们难以排除偶然因素的影响,所以对于数据我们将做进一步的处理,这里我们要介绍一种统计学和机器学习中的新的模型——随机森林【6】(randomForest),随机森林是指利用多棵决策树对样本进行训练并预测的一种分类器,在机器学习中,随机森林是一个包含多个决策树的分类器,并且其输出的类别是由个别树输出的类别的众数而定。Leo Breiman和Adele Cutler发展出推论出随机森林的算法。而 "Random Forests" 是他们的商标。这个术语是1995年由贝尔实验室的Tin Kam Ho所提出的随机决策森林(random decision forests)而来的。这个方法则是结合 Breimans 的 "Bootstrap aggregating" 想法和 Ho 的"random subspace method"以建造决策树的集合。关于随机森林的原理由于和本文无关就不做过多的说明了,我们需要了解的是随机森林在处理大量的变数以及在内部对于一般的化后的误差产生不偏差的估计时具有很大的优势,所以在本文我们选取随机森林为进一步处理的模型,首先我们根据六类污染物的浓度做加和运算,用得到的数据来表示大气质量的优劣程度,在选择判断数时我们参考AQI的计算方法得到AQI为优情况下各污染物浓度并考虑到盐城市本地全年的平均大气质量,我们将判断数设为217,当加和得到的数小于217时我们认为大气质量为优(用T表示),反之则为劣(用F表示),这样我们的原始数据就完成了二分类的改造,将其用于随机森林的模型之中,需要注意的是由于我们改变了原始数据所以我们需要重新导入数据,同时由于随机森林在标签变量为numeric与factor时执行的分别为回归与分类,所以我们还需将标签数据转变为factor类型,确定执行的为分类时我们还需将原始数据分为训练数据与测试数据,我们先用训练数据运行随机森林接着用测试数据对模型进行预测从而判断分类的准确性,当这些前期工作都就绪时我们就可以执行随机森林分类了,运行后的结果与运行代码如下图所见【图4】【图5】【图6】。
图4表明在大气质量为劣的分组中我们认为进行的分组与随机森林进行的分类相比误差在0.003349282,而在大气质量为优的分组中错误率为0.03703704,我们进行的分类与机器进行的分类误差在5%以内,这表明我们进行的分类具有较强的准确性,与测试数据的对比也证明了这一点,此时通过进一步的数据处理我们将数据误差控制在了5%以内,基本排除了由于数据偶然性造成的误判,剩余的工作就非常的简单了,我们只需统计出2020年份中T的占比并将其与其他年份T的占比进行比较,这一需求在其他软件中也可以简单的实现,在这里我们还是使用R进行处理,结果及代码如下图所示【图7】。 我们可以看出2016——2019四个年份中质量为T的天数为98约占总数的0.2715,2020年质量为T的天数为57约占总数的0.6264,后者约为前者的三倍,至此我们可以从定量的角度得到结论,疫情期间大气质量有较好的改善。
3:解释与思考
大气中污染物的类型大致有两种,即煤烟型与交通型,前者的主要污染物为二氧化硫、氮氧化物、悬浮物、PM0、一氧化碳,后者的污染物主要有氮氧化物、有机物,这两种不同的污染类型所发生时间也不同,前者多发生在冬季,后者发生于夏季,本次分析选取的数据除臭氧外都为煤烟型污染物且因为疫情发生在冬季所以同其他年份同时段的数据相比有较为明显的改善,而由于低空臭氧的产生往往都是由交通型污染产生的光化学烟雾二次反应生成的,所以在交通型污染不占主导的情况下,臭氧的数据与往年同时段相比,差异较之其他污染物略微不明显。
与此同时在本实验中没有采用比较AQI的数值来判断的原因有如下几点:首先前文中已经提到在比较长时段的数据时缺少精确度,其次如上文所讲因为缺少夏季的数据所以臭氧的数据缺少显著的差异,所以在进行AQI的计算中时某些情况下AQI数值也缺少显著的差异。
在某些方面该分析存在一定的问题,首先受限于人力与物力本次分析采用的数据虽然在时间上有一定的跨度但是在空间少缺少相应的跨度,仅仅考虑了盐城市的大气质量,本文的结论在全国范围内能否成立还需要进一步的验证。同时在做最后大气质量的优劣时仅仅对各项数据进行加和处理,而没有考虑到具体污染物的比重问题,这在经一步的探究时需要改进。
本次疫情对于全国乃至全球都是一个严峻的挑战,我们为此次战疫付出了许多,但是作为一名环境科学的研究者来说,我们很高兴的看到大气质量得到了改善,虽然这次改善牺牲了部分经济水平,但是我们发现了以前困扰我们许久的大气问题并不再是一味的變坏或者是维持原状,而是有了提高的可能性,下一步我们要做的就是在经济和环境之中找到一个更好的平衡点。
4:总结
在疫情期间,由于工厂的停工以及交通运输的低功率运行,在冬季占主导作用的煤烟型污染与不占主导的交通型污染收到抑制,使大气质量得到有效的提高,同时对于进一步探究人类活动(主要为经济活动)与环境关系提出了思考。
参考文献
[1] 人民日报http://society.people.com.cn/n1/2020/0123/c1008-31561292.html
[2] 百度百科https://baike.baidu.com/item/AQI/463245?fr=aladdin
[3] 百度百科https://baike.baidu.com/item/R语言
[4] 贾里德·P·兰德.R语言实用数据分析和可视化技术[M]208-209
[5] 浙江大学,盛骤,谢式千等.概率论与数理统计[M]178-182
[6] 百度百科https://baike.baidu.com/item/随机森林
关键词:大气污染;R语言
1:介绍
对于大气质量的评价常常有PM2.5、PM10、SO2等指标,其数据量较大处理过程较为繁琐,并且AQI指数只适合用来表征短期内的空气质量【2】,且考虑到AQI指数在处理颗粒物时所暴露的问题,所以对于分析拥有较大的时间跨度的大气质量变化,R语言是一个很好的工具。R语言【3】(The R Programming)诞生与1980年左右,其前身为贝尔实验室开发的S语言,目前R语言(以下简称R)广泛的用于统计计算、统计画图等领域,由于R开源且具有丰富的程序包,在处理大气污染相关的数据时具有速度快、操作简单、分析准确等其他软件不及的优势。
本文将以盐城市近五年前三个月的PM2.5、PM10、SO2、CO、NO2以及O3的浓度作为基础数据,并运用到R中包含的“ggplot2”、“OpenAir”、“stats”、“randomForest”程序包進行分析,同时本文将具体的探究R语言在执行环境数据时的使用,并不涉及基础的R的使用知识。
2:方法过程
大气污染的数据来自https://www.aqistudy.cn/,导入数据的方法有很多,可以将网页中的表格复制到Excel中,再将其导入到R或者可以使用“rvest”包进行网络爬虫直接读取数据,由于爬虫的代码相比于前者较为复杂所以我们采取第一种方法即读取Excel文件,R自带的函数只可以读取以“.csv”为后缀的文件所以我们此时需要加载“openxlsx”包才可以读取以“.xlsx”为后缀的文件,代码如下图【图1】。
将数据导入后可以先对原始数据做初步处理,我们先以时间为依据将数据分组进行处理,得到各个污染物数值的分布,分布图与代码见下图【图2】。
根据上述图像我们可以看出,2020年一、二、三月份的污染物浓度同前四年相比散点的位置较接近X轴,说明污染物的浓度低于前四年所测的数据,从直观上观测我们可以得出污染物浓度降低,大气质量改善的结论,但是从科学的角度来说这种初步的、定性的结论是粗糙的,下面我们将进一步的从定量的角度来说明这一变化。
我们采用t-检验来比较2020年的数据与其他四个月份的区别 ,一般的t-检验需要考虑两样本的方差是否相等,在这里我们采用Welch两样本t-检验来检验不同方差的样本来节约分析时的工作量【4】,由于t-检验要求只有两类样本所以我们依据年份将数据分为a组(年份为2020)和b组(年份为2020年以外的年份)来运行t-检验,得到的结果与相关的代码如下图所见【图3】。
t-检验显示各污染物的p值全部超过0.05,在统计学上及认为此次假设不具备显著性【5】,表明2020年污染物数据与其他年份存在显著性差异即2020年大气质量的平均水平与往年同时段的平均水平存在差异,同时从t检验所示的各污染物平均数据可以看出2020的污染物平均水平低于其余年份,所以从我们从统计的角度可以初步确定2020年大气质量优于往年,但是由于数据选取的不足,我们难以排除偶然因素的影响,所以对于数据我们将做进一步的处理,这里我们要介绍一种统计学和机器学习中的新的模型——随机森林【6】(randomForest),随机森林是指利用多棵决策树对样本进行训练并预测的一种分类器,在机器学习中,随机森林是一个包含多个决策树的分类器,并且其输出的类别是由个别树输出的类别的众数而定。Leo Breiman和Adele Cutler发展出推论出随机森林的算法。而 "Random Forests" 是他们的商标。这个术语是1995年由贝尔实验室的Tin Kam Ho所提出的随机决策森林(random decision forests)而来的。这个方法则是结合 Breimans 的 "Bootstrap aggregating" 想法和 Ho 的"random subspace method"以建造决策树的集合。关于随机森林的原理由于和本文无关就不做过多的说明了,我们需要了解的是随机森林在处理大量的变数以及在内部对于一般的化后的误差产生不偏差的估计时具有很大的优势,所以在本文我们选取随机森林为进一步处理的模型,首先我们根据六类污染物的浓度做加和运算,用得到的数据来表示大气质量的优劣程度,在选择判断数时我们参考AQI的计算方法得到AQI为优情况下各污染物浓度并考虑到盐城市本地全年的平均大气质量,我们将判断数设为217,当加和得到的数小于217时我们认为大气质量为优(用T表示),反之则为劣(用F表示),这样我们的原始数据就完成了二分类的改造,将其用于随机森林的模型之中,需要注意的是由于我们改变了原始数据所以我们需要重新导入数据,同时由于随机森林在标签变量为numeric与factor时执行的分别为回归与分类,所以我们还需将标签数据转变为factor类型,确定执行的为分类时我们还需将原始数据分为训练数据与测试数据,我们先用训练数据运行随机森林接着用测试数据对模型进行预测从而判断分类的准确性,当这些前期工作都就绪时我们就可以执行随机森林分类了,运行后的结果与运行代码如下图所见【图4】【图5】【图6】。
图4表明在大气质量为劣的分组中我们认为进行的分组与随机森林进行的分类相比误差在0.003349282,而在大气质量为优的分组中错误率为0.03703704,我们进行的分类与机器进行的分类误差在5%以内,这表明我们进行的分类具有较强的准确性,与测试数据的对比也证明了这一点,此时通过进一步的数据处理我们将数据误差控制在了5%以内,基本排除了由于数据偶然性造成的误判,剩余的工作就非常的简单了,我们只需统计出2020年份中T的占比并将其与其他年份T的占比进行比较,这一需求在其他软件中也可以简单的实现,在这里我们还是使用R进行处理,结果及代码如下图所示【图7】。 我们可以看出2016——2019四个年份中质量为T的天数为98约占总数的0.2715,2020年质量为T的天数为57约占总数的0.6264,后者约为前者的三倍,至此我们可以从定量的角度得到结论,疫情期间大气质量有较好的改善。
3:解释与思考
大气中污染物的类型大致有两种,即煤烟型与交通型,前者的主要污染物为二氧化硫、氮氧化物、悬浮物、PM0、一氧化碳,后者的污染物主要有氮氧化物、有机物,这两种不同的污染类型所发生时间也不同,前者多发生在冬季,后者发生于夏季,本次分析选取的数据除臭氧外都为煤烟型污染物且因为疫情发生在冬季所以同其他年份同时段的数据相比有较为明显的改善,而由于低空臭氧的产生往往都是由交通型污染产生的光化学烟雾二次反应生成的,所以在交通型污染不占主导的情况下,臭氧的数据与往年同时段相比,差异较之其他污染物略微不明显。
与此同时在本实验中没有采用比较AQI的数值来判断的原因有如下几点:首先前文中已经提到在比较长时段的数据时缺少精确度,其次如上文所讲因为缺少夏季的数据所以臭氧的数据缺少显著的差异,所以在进行AQI的计算中时某些情况下AQI数值也缺少显著的差异。
在某些方面该分析存在一定的问题,首先受限于人力与物力本次分析采用的数据虽然在时间上有一定的跨度但是在空间少缺少相应的跨度,仅仅考虑了盐城市的大气质量,本文的结论在全国范围内能否成立还需要进一步的验证。同时在做最后大气质量的优劣时仅仅对各项数据进行加和处理,而没有考虑到具体污染物的比重问题,这在经一步的探究时需要改进。
本次疫情对于全国乃至全球都是一个严峻的挑战,我们为此次战疫付出了许多,但是作为一名环境科学的研究者来说,我们很高兴的看到大气质量得到了改善,虽然这次改善牺牲了部分经济水平,但是我们发现了以前困扰我们许久的大气问题并不再是一味的變坏或者是维持原状,而是有了提高的可能性,下一步我们要做的就是在经济和环境之中找到一个更好的平衡点。
4:总结
在疫情期间,由于工厂的停工以及交通运输的低功率运行,在冬季占主导作用的煤烟型污染与不占主导的交通型污染收到抑制,使大气质量得到有效的提高,同时对于进一步探究人类活动(主要为经济活动)与环境关系提出了思考。
参考文献
[1] 人民日报http://society.people.com.cn/n1/2020/0123/c1008-31561292.html
[2] 百度百科https://baike.baidu.com/item/AQI/463245?fr=aladdin
[3] 百度百科https://baike.baidu.com/item/R语言
[4] 贾里德·P·兰德.R语言实用数据分析和可视化技术[M]208-209
[5] 浙江大学,盛骤,谢式千等.概率论与数理统计[M]178-182
[6] 百度百科https://baike.baidu.com/item/随机森林