R语言-中国各城市PM2.5数据间的相关分析
中国各城市PM2.5数据间的相关分析
相关分析(correlation analysis)是研究现象之间是否存在某种依存关系,并对具体有依存关系的现象探讨其相关方向以及相关程度,是研究随机变量之间的相关关系的一种统计方法。分类:
- 线性相关分析:研究两个变量间线性关系的程度,用相关系数r来描述。常用的三种计算方式有Pearson相关系数、Spearman和Kendall相关系数。
- 偏相关分析:当两个变量同时与第三个变量相关时,将第三个变量的影响剔除,只分析另外两个变量之间相关程度的过程。如控制年龄和工作经验的影响,估计工资收入与受教育水平之间的相关关系。
在变量较多的复杂情况下,变量之间的偏相关系数比简单相关系数更加适合于刻画变量之间的相关性。
PM2.5细颗粒物指环境空气中空气动力学当量直径小于等于2.5微米的颗粒物。它能较长时间悬浮于空气中,其在空气中含量浓度越高,就代表空气污染越严重。与较粗的大气颗粒物相比,PM2.5粒径小,面积大,活性强,易附带有毒、有害物质(例如,重金属、微生物等),且在大气中的停留时间长、输送距离远,因而对人体健康和大气环境质量的影响更大。
近日,京津冀遭遇“雾霾锁成”,廊坊、保定、石家庄、邢台、邯郸成为污染最严重地区。
很多网站提供了PM2.5(细颗粒物)及空气质量指数(AQI)的实时查询,比如:PM25.in、北京市环境检测中心等等。这些网站只是对数据进行了展示,有的还做了很漂亮的可视化,但却没有做进一步的数据分析。
舍恩伯格在《大数据时代》一书中这样写道:“我们没有必要非得知道现象背后的原因,而是要让数据自己发声。”以及“相关关系能够帮助我们更好地了解这个世界。”他认为,建立在相关关系分析法上面的预测是大数据的核心。通过找到“关联物”并监控它,我们就能够预测未来。
近年来,在生物学、社交网络和健康科学等领域常采用偏相关分析法应对高维变量的系统关联性问题;这种方法对分析我国几百个城市间的PM2.5数据之间的关联关系是否有效?下面,借助我从网上找到的PM2.5数据,通过R语言软件包对数据分别进行线性相关分析和偏相关分析。R是用于统计分析、绘图的语言和操作环境。R语言的spaceExt包的glasso.miss函数采用LASSO加罚的极大似然函数法,基于BIC准则确定惩罚参数,可以测算出几百个城市的PM2.5数据之间的偏相关系数稀疏矩阵,这个矩阵可以用来描述不同城市间PM2.5的复杂关系。
- 载入程序包&读入PM2.5数据
library(spaceExt)
library(igraph)
pm=read.csv(file.choose(),header = T)
- 数据查看
#查看部分数据摘要
ct=c(which(colnames(pm)=="北京市"),which(colnames(pm)=="天津市"),which(colnames(pm)=="石家庄市"))
knitr::kable(summary(pm[,ct]))
北京市 |
天津市 |
石家庄市 |
|
---|---|---|---|
Min. : 30.00 |
Min. : 37.0 |
Min. : 34.0 |
|
1st Qu.: 64.75 |
1st Qu.: 71.0 |
1st Qu.: 89.0 |
|
Median : 94.00 |
Median :105.0 |
Median :134.0 |
|
Mean :122.98 |
Mean :124.4 |
Mean :160.2 |
|
3rd Qu.:155.75 |
3rd Qu.:162.0 |
3rd Qu.:216.0 |
|
Max. :394.00 |
Max. :372.0 |
Max. :487.0 |
|
NA’s :1 |
NA |
NA |
boxplot(pm[,ct],col=3:5)
#移除PM2.5数据缺失较多的城市
sel=which(rowSums(is.na(pm))>120)
pm_s = pm[,sel]#数据标准化
pm_sc<-scale(pm_s[,-1])
- 线性相关分析
cor_pm = cor(pm_sc)
g1=graph.adjacency(cor_pm>0.8, mode="lower", weighted=NULL, diag=FALSE, add.colnames=NULL, add.rownames=NA)
cl=c("#FFFF37","#00FF7F","#FF8000","#FF0080","#FF77FF","#4DFFFF","deepskyblue","chocolate","#FFAD86","#C07AB8")
com = walktrap.community(g1, steps = 3)
#子群划分
V(g1)$sg = com$membership + 1
V(g1)$color = cl[V(g1)$sg]
- 偏相关分析
res=glasso.miss(pm_sc,rho=0.5,emIter=10 ,penalize.diagonal=FALSE)
## [1] "Em step: 1"
## [1] "Em step: 2"
## [1] "Em step: 3"
## [1] "Em step: 4"
## [1] "Em step: 5"
## [1] "Em step: 6"
## [1] "Em step: 7"
## [1] "Em step: 8"
## [1] "Em step: 9"
## [1] "Em step: 10"
- 图网络模型可视化
上图展现的是相关系数大于0.8的各城市间的关联关系,其中不同颜色是使用随机游走方法进行的子群划分。
这幅图用LASSO加罚的极大似然函数法,采用BIC准则方法确定惩罚参数(L1范数=0.5),估计PM2.5数据的高维偏相关稀疏矩阵,然后对矩阵进行的可视化。遗憾的是,没有出来期望中的效果;或许是数据不合理,或许是L1范数值不合适,也有可能是这种复杂的偏相关分析法在分析我国几百个城市间的PM2.5数据之间的关联关系是无效的。总之,线性相关分析可以得出不同城市间的简单相关关系,而我期望的通过偏相关分析得出不同城市间的复杂相关关系如果成功了,可以更深刻的揭示在PM2.5治理过程中,哪些城市更应得到特殊的重视。
- 解析Linux中的VFS文件系统之文件系统的注册(二)
- vivi虚拟摄像头驱动程序
- 系统架构 | 基于微服务架构,改造企业核心系统之实践
- 《Redis设计与实现》读书笔记(五) ——Redis中的整数集合
- 《Redis设计与实现》读书笔记(七) ——Redis对象综述及字符串对象实现原理
- 自动登录脚本
- 极致之处,精彩无限 - 优化了一半的SQL
- 编程修炼 | Scala中Stream的应用场景及其实现原理
- Linux之内存描述符mm_struct
- 大数据 | Spark的现状与未来发展
- 信号量、互斥锁、自旋锁、原子操作
- 理解OAuth 2.0
- node.js应用Redis数据库
- apache服务器配置
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法