事情的起因是最近宜昌持续了一个多月的蓝天,我个人觉得宜昌的空气质量得到了明显改善。可是和李哲同学觉得这个不一定,除非在几个重点月份和去年相比有变化,一是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校验,看看两组数据之差的置信区间是否大于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的,符合直观感受。