数学建模-二氧化碳排放及时空分布测度
二氧化碳排放及时空分布测度
整体求解过程概述(摘要)
面临全球气候变化的巨大挑战,我国积极响应《巴黎协定》的号召,提出“2030年前碳达峰,2060 年前实现碳中和”的碳排放发展目标,并将碳中和相关工作作为 2021 年的重点任务之一。目前我国主流的碳排放核算方法是基于产品、企业和项目的自下而上的方法,成本较大且效率较低,而且县级统计数据严重缺失,难以进行精细化的管理和政策指导。
夜光灯数据被广泛应用在社会经济指标的测度中,并表现出良好的解释能力。本文结合夜光灯和社会经济数据,利用提升回归树(BRT)建立其与碳排放的关系,并采用贝叶斯法优化(BO)模型超参数。本文利用 2000-2017 年中国省级数据,进行有监督学习,并通过 K 折交叉验证法对模型的表现结果进行评价,结果表明BO-BRT 具有较高的拟合优度和泛化能力。
基于 BO-BRT 模型,我们对 2000-2017 年中国县级碳排放数据进行测度,并结合标准差椭圆对中国碳排放空间分布进行分析,结果发现碳排放主轴逐渐向西旋转,表明中国发展过程内蒙古、新疆等西部地区碳排放量逐渐增加。
本文结合夜光灯和社会经济数据建立的我国县域碳排放量的估计模型提供了一种成本低、精度高的小尺度碳排放核算方法,对我国县域碳排放测度、碳减排措施的落实乃至其经济发展都有着重要指导意义,同时针对中国全域碳排放分析的结果,对国家加强顶层设计、统筹协调各个地区碳排放具有重大实践意义。
问题分析
在国内产业向低碳转型的过程中,宏观政府部门如何制定减排措施以及微观企业如何执行落实、我国区域经济结构如何协同发展都是各部门在未来计划里值得深入探讨的问题,而科学客观的碳排放数据则是政策实践强有力的理论支撑。科学测度碳排放,不仅可以对人类文明产业发展起到警示告诫作用,还能刺激各行业对于绿色和新清洁能源的技术创新与研究使用,推动促进中国作为世界第二大经济体进行绿色转型的模范作用,提早达到“碳高峰”对于人类社会发展与生态平衡二者之间的交锋也具有积极的示范意义。
在此上述背景之下,寻找一种低成本又高精度的二氧化碳排放强度测算方法对于研究我国高速增长的经济和二氧化碳排放量之间的关系显得尤为重要。本文通过收集国家统计局数据库中 2000-2017 年各省的年度 GDP、人均 GDP、人口总数、城镇化率等面板数据以及中国碳核算数据库中估算的 1997 - 2017 年中国2735 个县域的 CO2 排放量数据结合,并且从经过统一后的 DMSP/OLS 和 NPP/VIIRS卫星图像中得到了具有高质量并且时间跨度范围广度的稳定夜间灯光数据,并据此建立中国小地域尺度下的二氧化碳排放量核算模型,提出相应规划与建议。本文提出的结果有助于弥补现有的数据差距,并有助于制定减少中国二氧化碳排放的战略。除了应用在碳排放领域具有借鉴价值,而且对于今后人口分布、GDP 预测和污染物估计等社会指标测度也提供着重要的参考意义。
模型的建立与求解整体论文缩略图
全部论文请见下方“ 只会建模 QQ名片” 点击QQ名片即可
(代码和文档not free)
import numpy as np
import pandas as pd
import statsmodels.api as sm
import matplotlib.pyplot as plt
from statsmodels.graphics.tsaplots import plot_acf,plot_pacf
import itertools
from sklearn.metrics import r2_score as rs
import warnings
warnings.filterwarnings("ignore")#忽略输出警告
plt.rcParams["font.sans-serif"]=["SimHei"]#用来正常显示中文标签
plt.rcParams["axes.unicode_minus"]=False#用来显示负号
df=pd.read_excel("E:\or.xlsx"#指定Month列作为索引列
#天然气CO2排放量
NGE=df1["Natural Gas Electric Power Sector CO2 Emissions"]
NGE.head()
#折线图
fig, ax=plt.subplots(figsize=(15,15))
NGE.plot(ax=ax,fontsize=15)
ax.set_title("天然气碳排放",fontsize=25)
ax.set_xlabel("时间(月)",fontsize=25)
ax.set_ylabel("碳排放量(百万总吨)",fontsize=25)
ax.legend(loc="best",fontsize=15)
ax.grid()
#分解时序
#STL(Seasonal and Trend decomposition using Loess)是一个非常通用和稳健强硬的分解时间序列的方法
import statsmodels.api as sm
#decompostion=tsa.STL(NGE).fit()报错,这里前面加上索引sm
decompostion=sm.tsa.STL(NGE).fit()#statsmodels.tsa.api:时间序列模型和方法
decompostion.plot()
#趋势效益
trend=decompostion.trend
#季节效应
seasonal=decompostion.seasonal
#随机效应
residual=decompostion.resid
#平稳性检验
#自定义函数用于ADF检查平稳性
from statsmodels.tsa.stattools import adfuller as ADF
def test_stationarity(timeseries,alpha):#alpha为检验选取的显著性水平
adf=ADF(timeseries)
p=adf[1]#p值
critical_value=adf[4]["5%"]#在95%置信区间下的临界的ADF检验值
test_statistic=adf[0]#ADF统计量
if p<alpha and test_statistic<critical_value:
print("ADF平稳性检验结果:在显著性水平%s下,数据经检验平稳"%alpha)
return True
else:
print("ADF平稳性检验结果:在显著性水平%s下,数据经检验不平稳"%alpha)
return False
#将数据化为平稳数据
#一阶差分
NGE_diff1=NGE.diff(1)
#十二步差分
NGE_seasonal=NGE_diff1.diff(12)#非平稳序列经过d阶常差分和D阶季节差分变为平稳时间序列
print(NGE_seasonal)
#十二步季节差分平稳性检验结果
test_stationarity(NGE_seasonal.dropna(),1e-3)#使用dropna()去除NaN值