一. 理论假设

在研究开始之前,需要建立理论假设,即假设哪些社会经济因素可能会影响二氧化碳排放。根据相关文献研究,选取以下可能的因素:

经济水平(PG):经济增长可能与能源消耗增加有关,从而影响二氧化碳排放,选择人均GDP为衡量指标;

人口规模(PO):人口数量可能会影响能源需求和排放水平;

能源强度(EI):以单位GDP能耗增速表示,反应经济增长对能源的依赖程度,与碳排放密切相关;

产业结构(IS):用第二产业增加值占地区生产总值比重表示,第二产业为工业制造业,是碳排放最多的产业;

城市化水平(UR):用非农人口占总人口的比重来代表城市化水平,有学者认为城市相比于农村会产生更多的能源消费,但也有学者认为城市化的公共服务建设会提高能源的利用效率。

表1 变量说明及定义
符号 变量 指标解释 单位
PG 经济水平 人均GDP
PO 人口规模 常住人口数 万人
IS 产业结构 第二产业增加值/地区生产总值 %
EI 能源强度 单位GDP能耗增速 %
UR 城市化水平 城镇常住人口数/人口规模 %

二. 数据获得及处理

CO2排放数据从中国碳核算库(CEADs)获得,相关变量数据从中经网获得,获取数据范围为1997年至2019年,由于西藏及港澳台碳排放数据缺失,因此在获取相关变量数据时自动剔除,获取到数据后,发现原始数据部分缺失,例如单位GDP能耗增速和城镇常住人口数据部分省份和部分年份数据缺失,因此选择整体完整的数据进行分析。

三. 描述性统计分析

  1. 2015年各省数据简单分析

提取2015年的各项数据使用stat.desc函数进行描述性统计分析,数据集为data1。

# 加载 readxl 包
library(readxl)
# 文件路径和名称
excel_file <- "C:/Users/李尔春/Desktop/碳排放驱动因素分析作业/data/data1.xlsx"

# 读取 Excel 文件中的第一个工作表
data <- read_excel(excel_file)

# 对数据进行描述性统计
library(pastecs)
desc_stats <- format(stat.desc(data, basic = TRUE, desc = TRUE, norm = TRUE, p = 0.95),digits = 2)

#加载knitr包,输出统计结果
library(knitr)
kable(desc_stats,format = "markdown",digits = 2,align = "c",caption = "表 1 2015年数据统计结果")
表 1 2015年数据统计结果
地区 TCCO2 人均GDP Population Industrial structure 单位GDP能耗增速 城市化水平
nbr.val NA 3.0e+01 3.0e+01 3.0e+01 30.000 30.00 3.0e+01
nbr.null NA 0.0e+00 0.0e+00 0.0e+00 0.000 0.00 0.0e+00
nbr.na NA 0.0e+00 0.0e+00 0.0e+00 0.000 0.00 0.0e+00
min NA 4.4e+01 2.6e+04 5.8e+02 20.218 -10.69 1.6e+01
max NA 1.5e+03 1.1e+05 1.2e+04 56.606 1.20 1.7e+02
range NA 1.4e+03 8.8e+04 1.1e+04 36.388 11.89 1.5e+02
sum NA 1.1e+04 1.5e+06 1.4e+05 1252.851 -163.16 1.8e+03
median NA 2.5e+02 4.0e+04 3.9e+03 41.879 -5.64 5.6e+01
mean NA 3.7e+02 5.0e+04 4.6e+03 41.762 -5.44 6.1e+01
SE.mean NA 5.6e+01 4.1e+03 5.2e+02 1.466 0.43 4.6e+00
CI.mean NA 1.2e+02 8.3e+03 1.1e+03 2.998 0.89 9.3e+00
var NA 9.5e+04 5.0e+08 8.2e+06 64.449 5.63 6.2e+02
std.dev NA 3.1e+02 2.2e+04 2.9e+03 8.028 2.37 2.5e+01
coef.var NA 8.3e-01 4.5e-01 6.2e-01 0.192 -0.44 4.1e-01
skewness NA 1.8e+00 1.4e+00 7.1e-01 -0.270 0.41 2.6e+00
skew.2SE NA 2.1e+00 1.7e+00 8.3e-01 -0.316 0.48 3.1e+00
kurtosis NA 3.5e+00 1.3e+00 -3.5e-01 -0.069 0.54 9.7e+00
kurt.2SE NA 2.1e+00 7.9e-01 -2.1e-01 -0.041 0.32 5.8e+00
normtest.W NA 8.1e-01 8.2e-01 9.4e-01 0.974 0.96 7.0e-01
normtest.p NA 1.0e-04 1.3e-04 8.6e-02 0.662 0.37 1.8e-06
  1. 数据完整性

    nbr.na列显示,没有列出现缺失值,这意味着数据集在所有列上都是完整的。

  2. 总体统计

    TCCO2的最小值和最大值之间有很大的范围,这表明不同地区之间的总碳排放量差异很大。

    人均GDP和人口数量也显示出较大的变异性,这可能反映了不同地区的经济发展水平和人口规模的显著差异

  3. 分布特征

    skewness的值表明大多数变量的分布可能是偏斜的,特别是TCCO2的偏度较高,表明数据向右偏斜,即大多数地区的碳排放量较低,而少数地区的碳排放量远高于平均水平。

    kurtosis的值表明不同变量的峰度差异较大,有的分布可能较为平坦,有的则较为尖峭。

  4. 正态性检验

    normtest.p的值表明大多数变量可能不遵循正态分布,尤其是TCCO2和人均GDP的p值非常低,远低于通常的显著性水平(如0.05),这意味着我们可以拒绝这些变量来自正态分布的假设,但是产业结构和能源强度的p值较大,不拒绝正态分布的假设。

# 加载所需的库
library(readxl)
library(dplyr)
## 
## 载入程辑包:'dplyr'
## The following objects are masked from 'package:pastecs':
## 
##     first, last
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(tidyr)
## 
## 载入程辑包:'tidyr'
## The following object is masked from 'package:pastecs':
## 
##     extract
library(ggplot2)

# 设置Excel文件路径
file_path <- "C:/Users/李尔春/Desktop/碳排放驱动因素分析作业/data/data2.xlsx" 
sheet_name <- "TCCO2"

# 读取Excel文件中的特定工作表
df <- read_excel(file_path, sheet = sheet_name)

# 将数据转换为长格式
df_long <- pivot_longer(df, cols = -province, names_to = "year", values_to = "emissions")

# 绘制趋势图
ggplot(df_long, aes(x = year, y = emissions, group = province, color = province)) +
  geom_line() +
  geom_point() +
  theme_minimal() +
  labs(title = "各省碳排放趋势图",
       x = "年份",
       y = "碳排放量",
       color = "省份") +
  theme(legend.position = "bottom")

# 设置Excel文件路径
file_path <- "C:/Users/李尔春/Desktop/碳排放驱动因素分析作业/data/data2.xlsx" 

# 从Excel文件中读取数据
data <- read_excel(file_path, sheet="TCCO2")

# 将数据从宽格式转换为长格式
long_data <- pivot_longer(
  data,
  cols = -province, # 除province外的所有列
  names_to = "Year", # 新的“Year”列,包含原来的列名
  values_to = "CO2" # 新的“CO2”列,包含原来的数值
)

# 使用ggplot2包绘制趋势图
trend <- ggplot(long_data, aes(x = Year, y = CO2, group = province)) +
  facet_wrap(. ~ province) +
  geom_line(linewidth = 1) +  # 正确的设置方式
  geom_point(size = 1.5, shape = 16) +
  theme(axis.text.x = element_text(angle = 90, vjust = 0.5)) +
  ylab(expression(CO[2] / Mt)) +
  theme(plot.title = element_text(hjust = 0.5)) +
  theme_bw()

# 打印趋势图
print(trend)

Including Plots

You can also embed plots, for example: