(程序代码见后)
背景:
随着全球气候的变暖,空气质量每天发生变化,而人们的生活质量和空气质量息息相关。如下表1所示,空气质量和空气的成分有很大的关系,为此文中选择某城市一年内的空气指数数据进行分析。

注:数据源自中国气象网

  1. 数据基本描述
    对数据进行基本统计,得到时序数值共365个,AQI的基本数值情况如下表1所示,

通过查询空气质量指数得到AQI空气质量指数取值范围及其相应内别,如下表2所示:

注:数据源自中国气象网
由表1中最大AQI数值为299,得知空气质量最大为重度污染。中位数值为97,属于空气质量良好,平均空气质量为107,属于轻度污染,故初步看该城市空气质量效果较好。而不同时间段下的空气质量也可能不同,为此根据中国的季度时间划分:春季,为3,4,5月;夏季,为6,7,8月;秋季,为9,10,11月;冬季,为12,1,2月。对时间数据进行划分,得到不同季节的空气质量变化如下图所示:

从箱线图可以看出,AQI指数在200以上的主要集中在冬季和春季,整体空气质量指数值集中在200以下,极个别异常AQI数值超出200以上,初步可说明该城市的空气质量整体情况较好。为进一步探究对空气质量指数和时间的变化,故建立时间序列ARMA模型。

  1. ARMA模型
    2.1 ARMA模型概述
    ARMA模 全称为自回归移动平均模型(Auto-regressive Moving Average Model,简称 ARMA)是研究时间序列的重要方法。其在时序数据分析过程中既考虑了数据在时间序列上的依存性, 又考虑了随机波动的干扰性, 对对应时序的发生变量运行短期趋势的预测准确率较高, 是近年应用比较广泛的方法之一。ARMA模型是由美国统计学家G.E.P.Box 和 G.M.Jenkins在20世纪70年代提出的著名时序分析模型,即自回归移动平均模型。ARMA模型有自回归模型AR(q)、移动平均模型MR(q)、自回归移动平均模型ARMA(p,q) 3种基本类型。其中ARMA(p,q)自回归移动平均模型,模型可表示为:

    其中, 为自回归模型的阶数, 为移动平均模型的介数; 表示时间序列 在时刻 的值; 为自回归系数; 表示移动平均系数; 表示时间序列 在 时期的误差或偏差。
    2.2 ARMA模型建模流程
    首先用ARMA模型预测要求序列必须是平稳的,也就是说,在研究的时间范围内研究对象受到的影响因素必须基本相同。若所给的序列并非稳定序列,则必须对所给的序列做预处理,使其平稳化,然后用ARMA模型建模。建模的基本步骤如下:
    (1)求出该观察值序列的样本自相关系数(ACF)和样本偏相关(PACF)的值。
    (2)根据样本自相关系数和偏自相关系数的性质选择适当的 模型进行拟合。
    (3)估计模型中未知参数的值。
    (4)检验模型的有效性。如果拟合模型通不过检验,转向步骤(2),重新选择模型再拟合。
    (5)模型优化。如果拟合模型通过检验,仍然转向步骤(2),充分考虑各种可能,建立多个拟合模型,从所有通过检验的拟合模型中选择最优模型。
    (6)利用拟合模型,预测序列的将来走势。
    3.AQI时间序列模型的建立
    3.1 数据的预处理
    本文选取了1年AQI数据作为时间序列观察值。对此时间序列做时序图如图1所示:

    图1 AQI时序图

在发现经AQI数据的序列具有波动性,而我们的目的主要是利用ARMA 模型对其周期成分进行分析, 因此需要对此类的数据先进行消除趋势性的处理, 然后
从图(1)可以观察得出,序列大致趋于平稳。
为了进一步检验序列是否真正平稳,在此使用R语言统计软件对已转换进行平稳性检验。对时间序列的平稳性有两种检验方法,一种是根据时序图和自相关图显示的特征作出判断的图检验方法;一种是构造检验统计量进行假设检验的方法。目前最常用的平稳性统计检验方法是单位根检验(unit root test)。使用单位根检验法对变换数据进行检验得出检验结果如表1所示:
由时间序列的时序图可以发现AQI随时间的增长是呈上下波动趋势。因此,对原始序列不需作对数变换和差分,直接对数据进行检验即可。并作出单位根检验如下表1所示:
表1 AQI数据单位根检验

3.2 模型的识别与选择
计算出样本自相关系数和偏相关系数的值之后,我们主要是根据它们表现出来的性质,选择适当的ARMA模型拟合观察值序列。这个过程实际上就是要根据样本自相关系数和偏相关系数的性质估计自相关阶数 和移动平均阶数 ,因此模型的识别过程也成为定阶过程。一般ARMA模型定阶的基本原则如表2示:

表2 ARMA(p,q)模型选择原则
ACF PACF 模型定阶
拖尾 p阶截尾 AR§模型
q阶截尾 拖尾 MA(q)模型
拖尾 拖尾 ARMA(p,q)模型

对AQI数据进行分析,可得样本自相关系数和偏相关系数图如图2所示:

图2 序列自相关系数与偏相关系数图
由上图可以看出AQI序列拖尾不明显,为此分别对时序值数据进行一阶差分和取对数观察数据的正态性检验如下图所示:

通过对AQI序列进行处理后,发现对AQI数值进行取对数后,数据趋势刻画成一条直线较为明显。故AR模型的数据可选择对AQI数据取对数后建立自回归模型。

模型序号 对应模型 no-zero mean
1 ARIMA(2,0,2) 226.0505
2 ARIMA(0,0,0) 291.4564
3 ARIMA(1,0,0) 282.7597
4 ARIMA(0,0,1) 270.972
6 ARIMA(1,0,2) 225.5003
自相关系数和偏相关系数图的分析观察,可以知道模型大致可选取两种模型。第一种,自相关系数为拖尾,而偏相关系数为一阶截尾。此时选取模型可以为ARIMA(1,0,0)模型。第二种,自相关二阶截尾,而偏相关系数为一阶截尾。此时选取模型可以为ARIMA(1,0,2)模型。

3.3 参数估计
选择拟合好后的模型之后,下一步就是要利用序列的观察值确定该模型的口径,即估计模型中未知参数的值。对于一个非中心化ARMA(p,q)模型,有
式中,~

该模型共含 个未知参数: 。对于未知参数的估计方法有三种:矩估计﹑极大似然估计和最小二乘估计。其中使用最小二乘估计法对序列进行参数估计。
在ARMA(p,q)模型场合,记

残差项为:~

残差平方和为:~

是残差平方和达到最小的那组参数值即为 的最小估计值。
使用程序操作可得序列参数估计最佳值如下:
AIC=214.87 AICc=214.98 BIC=230.46

3.4 参数的显著性检验
参数的显著性检验就是要检验每一个未知参数是否显著非零。这个检验的目的是为了是使模型最精简。如果某个参数不显著,即表示该参数所对应的那个自变量对因变量的影响不明显,该自变量就可以从拟合模型中删除。最终模型将由一系列参数显著非零的自变量表示。由模型参数估计与检验结果,可以观察到t统计量值的 值均小于0.05。表明模型参数显著。
4.结 论
时间序列分析的ARMA 模型预测问题, 实质上是通过对时间变化过程的分析研究, 找出其发展变化的量变规律性, 用以预测未来的空气质量。预测时不必考虑其他因素的影响, 仅从序列自身出发, 建立相应的模型进行预测, 这就从根本上避免了寻找主要因素及识别主要因素和次要因素的困难; 和回归分析相比, 可以避免了寻找因果模型中对随机扰动项的限定条件在经济实践中难以满足的矛盾。实际上这也是ARMA 模型预测与其他预测方法相比的优越性所在。但由于空气质量受到人为、工业等不确定性因素影响,仅只能通过部分数据进行分析,分析具有一定的局限性。本文运用时间序列的分析方法,对空气质量进行分析。将ARIMA(1,0,0)模型对该序列进行拟合,最终得出空气质量的变化规律,总体而言空气质量较好。

代码操作

数据加载与准备

install.packages("tseries")
install.packages("forecast")
install.packages("decompose")
library(tseries)
library(forecast)
data <- read.csv("time.csv")
str(data)

描述统计分析

summary(data$AQI)# 查看数据趋势
boxplot(AQI~season, data, col=c(1,2,3,4), border=c("darkgray","purple"), ylab="AQI指数")
tsdisplay(data$AQI)  # 得到acf和pacf
r <- diff(log(data$AQI))# 取对数后差分
tsdisplay(r)

正态性检验

par(mfrow = c(2,2))
qqnorm(data$AQI, ylab = "原始AQI数值")
qqnorm(r, ylab = "取对数后的AQI数值")
qqnorm(data_d1, ylab = "一阶差分AQI数值")

acf/pacf检验和单位根检验

Box.test(data$AQI, lag = 52, type = "Ljung-Box") # 数据白噪声检验,通过Box-Ljung 检验,则说明时间序列模型可以用来对数据进行预测
par(mfrow = c(2,1))
acf(data$AQI)
acf(r)
pacf(data$AQI)
pacf(r)
adf.test(data$AQI) # 原始数据单位根检验
adf.test(r) # 对数后的数据单位根检验

p = 0.01 < 0.05,故拒绝原假设,数据是平稳的

模型检验和测试

ar(r, aic = F, order = 1) #1阶自回归模型
auto.arima(r, trace = T)# 寻找最佳模型
fit <- ar(r)#寻找最佳自回归模型
print(fit)

好了,其实上述的也并没有进行更多深入挖掘和分析,比如在不同的季节下建立分段模型等,个人看来此篇仍然有很多不足,后续将持续改进时间序列,在周期、趋势、季节、干扰因素等的考虑。

感兴趣和需要数据研究的,可加微信:tan1525859926

基于ARIMA模型的空气质量AQI时间序列分析相关推荐

  1. 基于ConvLSTM的伦敦空气质量预测(1) 数据处理

    基于ConvLSTM的伦敦空气质量预测(1) 数据处理 实验介绍 该实验使用了ConvLSTM模型,对伦敦地区的空气质量进行了时序预测.数据集来源于开源库openair.实验的目标是预测Bloomsb ...

  2. 基于 Python 的全国空气质量监测与可视化分析平台

    温馨提示:文末有 CSDN 平台官方提供的学长 Wechat / QQ 名片 :) 1. 项目背景 空气质量优劣程度与一个城市的综合竞争力密切相关,它直接影响到投资环境和居民健康,因此越来越受到政府和 ...

  3. CAMx模型的空气质量模拟及污染来源解析

    随着我国经济快速发展,我国面临着日益严重的大气污染问题.大气污染是工农业生产.生活.交通.城市化等方面人为活动的综合结果,同时气象因素是控制大气污染的关键自然因素.大气污染问题既是局部.当地的,也是区 ...

  4. AI实战:基于深度学习的空气质量预测模型开源代码汇总

    基于深度学习的空气质量预测模型开源代码汇总 一.传统机理空气质量模型 空气质量模型是基于人类对大气物理和化学过程科学认识的基础上,运用气象学原理及数学方法,从水平和垂直方向在大尺度范围内对空气质量进行 ...

  5. ESP32开发之旅——基于ESP32的室内空气质量检测系统

    ESP32开发之旅--基于ESP32的室内空气质量检测系统 前言 成果展示 核心代码 MQTT部分 获取传感器数据部分 连接WiFi部分 结尾 前言 本文主要是我课设项目的一个备忘,部分资料来源于网上 ...

  6. 深度学习时间序列预测:LSTM算法构建时间序列单变量模型预测空气质量(PM2.5)+代码实战

    深度学习时间序列预测:LSTM算法构建时间序列单变量模型预测空气质量(PM2.5)+代码实战 # 导入需要的包和函数: from __future__ import print_function im ...

  7. 基于单片机的室内空气质量检测系统(甲烷甲醛)

    设计简介: 本设计是基于单片机的室内空气质量检测系统,主要实现以下功能: 可通过LCD1602显示当前甲烷和甲醛的值: 可通过按键调整甲醛甲烷的最大值: 可通过MS1100检测甲醛的值: 可通过MQ- ...

  8. python空气质量分析与预测_python 空气质量AQI数据分析与预测 ---分析,相关系数矩阵...

    版权声明:本文为博主原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/YmeBtc/article/details ...

  9. 【毕设狗】【单片机毕业设计】基于单片机的室内空气质量检测系统的设计

    软件安装: Keil:点击下载 Proteus:点击下载 AD:点击下载 Visio:点击下载 设计简介: 本设计是基于单片机的室内空气质量检测系统的设计,主要实现以下功能: 实现通过甲烷气体传感器检 ...

最新文章

  1. [zt]如何用Javascript获得TextArea中的光标位置
  2. ios相机黑边_黑边很碍眼很难看 苹果iPhone6黑边有什么用呢?
  3. android检查新版本,详解Android Studio无法检测新版本问题解决
  4. ARM 汇编基础教程番外篇 ——配置实验环境
  5. Angular4+AdminLTE+Jeecg 前后端分离框架实战-张代浩-专题视频课程
  6. sm2算法c 语言实现,移远通信集成国密安全解决方案的C-V2X AP模组商用落地
  7. 电脑太慢了最简单的办法怎么弄_最简单快速的方法恢复电脑误删文件-数据恢复常见问题...
  8. Scala对象 转Json字符串
  9. Java基础——链表
  10. RT-thread Nano移植并实现多线程任务
  11. IE打开网页默认为英文
  12. python矩阵运算函数_Numpy 常用矩阵计算函数
  13. 1分钟理清楚C++类模板和模板类区别
  14. Python常见问题解决办法汇总
  15. Python的自省函数
  16. Visual C++ 6.0 ( VC 6 )带 SP6 中英文双语版 下载
  17. matlab错误dparsfa,Dpabi安装出错,求助大大佬
  18. 外包也开始卷起来了???
  19. 线性回归使用的基本条件
  20. matlab 取点画图,matlab绘图小技巧-图像光滑数据取点

热门文章

  1. 我是斗图王之python爬取表情包
  2. 深入理解内存:原理简介
  3. echarts 世界地图 地图不渲染问题
  4. Mac通过命令行搜索文件
  5. miniUI零碎知识点随手记
  6. 如何学习(1):构建全栈式知识结构
  7. 打印选课学生名单(25)
  8. BusyBox v1.22.1 (Ubuntu 1:1.22.0-15ubuntu1) built-in shell (ash) 开机黑屏
  9. ps人物素描及黑白上色
  10. 如何成为早起者(二)