概要

事情的起因是最近宜昌持续了一个多月的蓝天,我个人觉得宜昌的空气质量得到了明显改善。可是和李哲同学觉得这个不一定,除非在几个重点月份和去年相比有变化,一是9月10月秋收烧秸秆的时段,二是冬季12月-2月的逆温层时段。专业的就是不一样!于是根据李哲同学的帮助从环保部拿到了宜昌从2014年1月1号到2015年8月9日的AQI数据,做了一个简单的分析。

数据

先给大家看看数据大概是怎样的

library(ggplot2)
## Warning: package 'ggplot2' was built under R version 3.1.3
library(scales)
library(dplyr)
## Warning: package 'dplyr' was built under R version 3.1.2
library(lubridate)
library(reshape2)
## Warning: package 'reshape2' was built under R version 3.1.2
df <- read.table("AQI_yichang_from_2014-1-1_2015-8-09.txt", header = TRUE, fill=TRUE, fileEncoding="gbk")
df <- select(df, c(3,4))
df$Date <- as.Date(df$Date)
df$Year <- format(df$Date, "%Y")
head(df)
##         Date AQI Year
## 1 2015-08-09  47 2015
## 2 2015-08-08  59 2015
## 3 2015-08-07  70 2015
## 4 2015-08-06  56 2015
## 5 2015-08-05  40 2015
## 6 2015-08-04  45 2015

分析

先看看整体的分布状况,整体上似乎不差,集中在100左右

ggplot( data=df, 
        aes(df$AQI)) + 
        geom_histogram(breaks=seq(0, 420, by = 5),  aes(fill=..count..)) + 
        labs(title="2014-2015AQI distribtion") + 
        labs(x="AQI", y="Count") 

看看平均值,两年的平均值是116.86,2014年的平均值是123.38,2015年目前是107.29

mean(df$AQI)
## [1] 116.8578
mean(subset(df, Year=="2014")$AQI)
## [1] 123.3846
mean(subset(df, Year=="2015")$AQI)
## [1] 107.2782

接下来看看趋势,真的比去年好很多吗?

df$CommonDate <- as.Date(paste0("2014-",format(df$Date, "%j")), "%Y-%j")
ggplot( data = df,
        mapping = aes(x = CommonDate, y = AQI, shape = Year, colour = Year)) +
        geom_line() +
        facet_grid(facets = Year ~ .) +
        scale_x_date(labels = function(x) format(x, "%m-%d")) + 
        labs(x="Date", y="AQI") +
        labs(title="2014-2015 AQI Trend")

电波一般的图形肉眼难以判断, 按月看平均值试试

df.mean <-  tapply(df$AQI, substr(df$Date, 1, 7), mean)
df.mean <- melt(df.mean)
names(df.mean) <- c("Date", "mean")
df.mean$Month <- substr(df.mean$Date, 6, 8)
df.mean$Year <- substr(df.mean$Date, 1, 4)
ggplot( data=df.mean,
        mapping=aes(x = Month, y = mean, group = Year, color=Year)) +
        geom_line() + 
        labs(title="2014-2015 Avg AQI Trend by month") + 
        labs(x="Month", y="AQI Avgerage") 

再看看标准差,波动范围是不是也比之前小了?

df.sd <-  tapply(df$AQI, substr(df$Date, 1, 7), sd)
df.sd <- melt(df.sd)
names(df.sd) <- c("Date", "sd")
df.sd$Month <- substr(df.sd$Date, 6, 8)
df.sd$Year <- substr(df.sd$Date, 1, 4)
ggplot( data=df.sd,
        mapping=aes(x = Month, y = sd, group = Year, color=Year)) +
        geom_line() + 
        labs(title="2014-2015 AQI standard deviation") + 
        labs(x="Month", y="standard deviation") 

这个时候趋势就非常明显了,其实今年和去年到目前为止趋势相同。都是1到8月在不断变好,但是之后就在变差。标准差的趋势几乎也是上半年一直在变小,后来不断上升,且2015年AQI的波动也较2014年变小了。那么究竟关闭热电厂,禁止黄标车这些对宜昌的空气质量有没有影响了?这个趋势图无法过滤掉天气因素带来的影响,我没有污染源的数据没办法。如果去年天气和今年对AQI指数影响一致的话可以肯定事变好了一些。

t检验

想到最近看过组间的t校验,看看两组数据之差的置信区间是否大于0,如果大于0可以说2015年的空气数据好于去年,只是无法排除天气因素

df2014 <- subset(df, Year=="2014")
df2015 <- subset(df, Year=="2015")
df2014 <- subset(df2014, Date <= "2014-08-09")
t.test(df2014$AQI,df2015$AQI, paired = FALSE)$conf
## [1] 13.91174 39.82910
## attr(,"conf.level")
## [1] 0.95

可以看到结果是大于0的,符合直观感受。

结论