码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 数据分享|R语言分析上海空气质量指数数据:kmean聚类、层次聚类、时间序列分析:arima模型、指数平滑法...


    全文链接:http://tecdat.cn/?p=30131

    最近我们被客户要求撰写关于上海空气质量指数的研究报告。本文向大家介绍R语言对上海PM2.5等空气质量数据(查看文末了解数据免费获取方式)间的相关分析和预测分析,主要内容包括其使用实例,具有一定的参考价值,需要的朋友可以参考一下(点击文末“阅读原文”获取完整代码数据)。

    相关视频

    相关分析(correlation analysis)是研究现象之间是否存在某种依存关系,并对具体有依存关系的现象探讨其相关方向以及相关程度,是研究随机变量之间的相关关系的一种统计方法。分类:

    ·       线性相关分析:研究两个变量间线性关系的程度,用相关系数r来描述。常用的三种计算方式有Pearson相关系数、Spearman和Kendall相关系数。

    ·       偏相关分析:当两个变量同时与第三个变量相关时,将第三个变量的影响剔除,只分析另外两个变量之间相关程度的过程。如控制年龄和工作经验的影响,估计工资收入与受教育水平之间的相关关系。

    在变量较多的复杂情况下,变量之间的偏相关系数比简单相关系数更加适合于刻画变量之间的相关性。

    PM2.5细颗粒物指环境空气中空气动力学当量直径小于等于2.5微米的颗粒物。数据如下:

    5c10f4d974372a2253fafd1cb8cd8125.png

    它能较长时间悬浮于空气中,其在空气中含量浓度越高,就代表空气污染越严重。与较粗的大气颗粒物相比,PM2.5粒径小,面积大,活性强,易附带有毒、有害物质(例如,重金属、微生物等),且在大气中的停留时间长、输送距离远,因而对人体健康和大气环境质量的影响更大。

    1. pydat2=read.csv("上海市_05.csv",header=T)
    2. pydat3=read.csv("上海市_06.csv",header=T)
    3.  
    4. head(pydat)
    5. head(pydat2)
    6.  
    7. attach(pydat)
    8.  
    9. plot(pydat[,c(8:10)],
    10.      col=质量等级)#画出变量相关图

    4c44da7a489d1c92233331af1d991215.png

    col=质量等级)#画出变量相关图

    a78cb9541968486d4ef9a92ecf7269c6.png

    col=质量等级)#画出变量相关图

    4d95ff503545812134af5dda400d4998.png

    上面的图中不同颜色代表不同的空气质量地区,从所有变量的两两关系散点图来看,可以看到pm2.5和pm10的关系图可以比较好的区分出不同空气质量的地区。并且他们之间存在正相关关系。

    对数据进行聚类

    1. plot(hc1,
    2.      main="层次聚类")
    3.  
    4.             border = "red")

    d0daa2533e58fd953e6c39d3fe586207.png

    对数据进行层次聚类后,根据谱系图可以发现,所有样本大概可以分成5个类别。因此,后续对数据进行kmean聚类。


    点击标题查阅往期内容

    8366b8c3dddfa25fc3bf2ade896cbb52.jpeg

    R语言空气污染数据的地理空间可视化和分析:颗粒物2.5(PM2.5)和空气质量指数(AQI)

    outside_default.png

    左右滑动查看更多

    outside_default.png

    01

    b85d32cac1c0b20a8c3a6d676e80a45d.png

    02

    a42772ebbe642e3c27018cb5cb7a0d0e.png

    03

    4ba0195393d02ad3d7519a72e3f238a7.png

    04

    4e0155bfb7240bc7362e5039fa34edd8.png

    剔除缺失值

    1. plot(pydat[,8:12],
    2.      col =km$cluster,
    3.      main="聚类结果1")

    86e6b3b93ce59cdea3727a3b07e8617c.png

    main="聚类结果2")

    6bffe13370e498a1f4f7497be841ec44.png

    main="聚类结果3")

    16512c92b534a88b31d352307be04e2b.png

    通过kmeans的可视化结果来看,kmeans方法比较好的将所有样本点区分开来,其中绿色的样本点各项指标值较低,红色样本点各项指标值较高,蓝色和黑色样本点主要在O3,NO2 等指标上有较明显的区别。为了具体比较每个类的指标,下面对每个类的数据特征进行描述。

    1. #每个类中的空气质量情况
    2. par(mfrow=c(3,4))
    3.  
    4. boxplot(pydat[,8]~pydat[,23])#聚类结果和pm2.5的关系

    28f994f597375d625f56c6f08544ec98.png

    从上面的箱线图,可以看到每个类别的特征,第一类O3值较高,第二个类PM2.5的值较高,第三个类pm2.5,NO值较低,第4类O3水平较低,PM10值较高,第五类的各个指标值都相对较低。因此第5个类别空气质量比较好。其他各个类别的地区在不同指标上有不同特征。

    1. par(mfrow=c(2,3))
    2. hist(as.numeric(pydat[km$cluster==1,6]))

    aae8b9517ccc2e66e492e338e14585c0.png

    再看每个类中空气质量水平的频率,可以看到第一个类的地区空气质量水平大多在良好水平,第二个类地区水平层次不齐,第3个类空气质量水平在4居多,因此空气质量较差,第4个类别2,3居多,因此良好,第5个类大多地区集中在1-3,因此空气质量最好。

    1. unique(pydat[pydat[,23]==5,4])
    2.   unique(pydat[pydat[,23]==1,4])
    3.  [1]                十五厂         虹口           徐汇上师大     杨浦四漂       青浦淀山湖   
    4.  [7] 静安监测站     浦东川沙       浦东新区监测站 浦东张江     
    5. 12 Levels:  虹口 静安监测站 美国领事馆 普陀 浦东川沙 浦东新区监测站 浦东张江 ... 杨浦四漂
    6. > unique(pydat[pydat[,23]==2,4])
    7.  [1] 杨浦四漂       浦东新区监测站 徐汇上师大     静安监测站     青浦淀山湖     虹口         
    8.  [7] 十五厂         浦东川沙       浦东张江       普陀                         
    9. 12 Levels:  虹口 静安监测站 美国领事馆 普陀 浦东川沙 浦东新区监测站 浦东张江 ... 杨浦四漂
    10. > unique(pydat[pydat[,23]==3,4])
    11.  [1]                十五厂         虹口           徐汇上师大     杨浦四漂       青浦淀山湖   
    12.  [7] 静安监测站     浦东川沙       浦东新区监测站 浦东张江     
    13. 12 Levels:  虹口 静安监测站 美国领事馆 普陀 浦东川沙 浦东新区监测站 浦东张江 ... 杨浦四漂
    14. > unique(pydat[pydat[,23]==4,4])
    15.  [1] 虹口           静安监测站     十五厂                        浦东新区监测站 浦东张江     
    16.  [7] 徐汇上师大     青浦淀山湖     杨浦四漂       浦东川沙       普陀         
    17. 12 Levels:  虹口 静安监测站 美国领事馆 普陀 浦东川沙 浦东新区监测站 浦东张江 ... 杨浦四漂
    18. > unique(pydat[pydat[,23]==5,4])
    19. [1] 普陀       静安监测站
    20. 12 Levels:  虹口 静安监测站 美国领事馆 普陀 浦东川沙 浦东新区监测站 浦东张江 ... 杨浦四漂

    时间序列分析

    1. ###对AQi值进行时间序列分析
    2.  
    3. plot.ts(mynx1)

    指数平滑法

    plot.ts(train)

    74a076c8bd07f0d0ad204bf909fe0a48.png

    plot.ts(mynxSMA3)

    fa643304eb747fc34cf29e5a5111b34e.png

    plot.ts(mynxSMA10)

    6caec185f31bfaa9b984c117be4f11c4.png

    对时间序列进行平滑后,可以看到数据有较稳定的波动趋势。

    1. #画出原始时间序列和预测的
    2. plot(mynxforecasts)
    3. mynxforecasts$SSE

    8b8e241588cd6e0e113f2726fd2f4766.png

    得到红色的拟合数据和黑色的原始数据,可以看到模型拟合较好。

    预测

    1. mynxforecasts2
    2. plot.forecast(mynxforecasts2)
    3. lines(mynx1)#原始数据预测对比

    ce5f71e13bd3f3a64321a5dfc7e4aa50.png

    使用该模型对数据进行拟合,可以看到测试集的数据基本上再预测的置信区间之内。

    向后预测90天

    1. mynxforecasts2
    2. plot.forecast(mynxforecasts2)

    843e56458f5d8947d979e540c7d8a378.png

    然后对未来的数据进行预测额,可以得到预测的区间。

    由于后续预测的数值区间较大,因此我们使用arima模型进行拟合,测试效果。

    arima模型

    1. plot(pre)#绘制预测数据
    2. prev=train-residuals(fit3)#原始数据
    3. pre$mean#每天的预测均值
    4. lines(prev,col="red")#拟合原始数据

    5b948746786f63b114df3ee0b697ee77.png

    同样得到拟合和预测的值,红色代表拟合的样本点,黑色代表原始的样本点,后面的代表预测的数据和置信区间,可以看到样本拟合的状况较好,预测的区间比指数平滑法要精确。

    数据获取

    在公众号后台回复“空气数据”,可免费获取完整数据。

    4437a931f3fd0b867fd5c0bf4e186c6a.jpeg

    本文中分析的数据分享到会员群,扫描下面二维码即可加群!

    177f48caae1e4c2e35be958c864ec636.png

    079a13efc2c6447c51f24660dafe05b4.png

    点击文末“阅读原文”

    获取全文完整代码数据资料。

    本文选自《R语言分析上海空气质量指数数据:kmean聚类、层次聚类、时间序列分析:arima模型、指数平滑法》。

    41f9b6f5e5ea1804f68a5c392b167ac3.jpeg

    e8495b0c77d5e66c587e53ceb5667902.png

    点击标题查阅往期内容

    R语言分布滞后非线性模型(DLNM)空气污染研究温度对死亡率影响建模应用

    Python中的ARIMA模型、SARIMA模型和SARIMAX模型对时间序列预测

    Python用RNN神经网络:LSTM、GRU、回归和ARIMA对COVID19新冠疫情人数时间序列预测

    数据分享|PYTHON用ARIMA ,ARIMAX预测商店商品销售需求时间序列数据

    Python用RNN神经网络:LSTM、GRU、回归和ARIMA对COVID19新冠疫情人数时间序列预测

    【视频】Python用LSTM长短期记忆神经网络对不稳定降雨量时间序列进行预测分析|数据分享

    深度学习实现自编码器Autoencoder神经网络异常检测心电图ECG时间序列

    spss modeler用决策树神经网络预测ST的股票

    Python中TensorFlow的长短期记忆神经网络(LSTM)、指数移动平均法预测股票市场和可视化

    RNN循环神经网络 、LSTM长短期记忆网络实现时间序列长期利率预测

    结合新冠疫情COVID-19股票价格预测:ARIMA,KNN和神经网络时间序列分析

    深度学习:Keras使用神经网络进行简单文本分类分析新闻组数据

    用PyTorch机器学习神经网络分类预测银行客户流失模型

    PYTHON用LSTM长短期记忆神经网络的参数优化方法预测时间序列洗发水销售数据

    Python用Keras神经网络序列模型回归拟合预测、准确度检查和结果可视化

    R语言深度学习卷积神经网络 (CNN)对 CIFAR 图像进行分类:训练与结果评估可视化

    深度学习:Keras使用神经网络进行简单文本分类分析新闻组数据

    Python用LSTM长短期记忆神经网络对不稳定降雨量时间序列进行预测分析

    R语言深度学习Keras循环神经网络(RNN)模型预测多输出变量时间序列

    R语言KERAS用RNN、双向RNNS递归神经网络、LSTM分析预测温度时间序列、 IMDB电影评分情感

    Python用Keras神经网络序列模型回归拟合预测、准确度检查和结果可视化

    Python用LSTM长短期记忆神经网络对不稳定降雨量时间序列进行预测分析

    R语言中的神经网络预测时间序列:多层感知器(MLP)和极限学习机(ELM)数据分析报告

    R语言深度学习:用keras神经网络回归模型预测时间序列数据

    Matlab用深度学习长短期记忆(LSTM)神经网络对文本数据进行分类

    R语言KERAS深度学习CNN卷积神经网络分类识别手写数字图像数据(MNIST)

    MATLAB中用BP神经网络预测人体脂肪百分比数据

    Python中用PyTorch机器学习神经网络分类预测银行客户流失模型

    R语言实现CNN(卷积神经网络)模型进行回归数据分析

    SAS使用鸢尾花(iris)数据集训练人工神经网络(ANN)模型

    【视频】R语言实现CNN(卷积神经网络)模型进行回归数据分析

    Python使用神经网络进行简单文本分类

    R语言用神经网络改进Nelson-Siegel模型拟合收益率曲线分析

    R语言基于递归神经网络RNN的温度时间序列预测

    R语言神经网络模型预测车辆数量时间序列

    R语言中的BP神经网络模型分析学生成绩

    matlab使用长短期记忆(LSTM)神经网络对序列数据进行分类

    R语言实现拟合神经网络预测和结果可视化

    用R语言实现神经网络预测股票实例

    使用PYTHON中KERAS的LSTM递归神经网络进行时间序列预测

    python用于NLP的seq2seq模型实例:用Keras实现神经网络机器翻译

    用于NLP的Python:使用Keras的多标签文本LSTM神经网络分类

    8e639ebb86e81d98a934ecabf178cd27.png

    aedd82f45d07fa3a8fa388fc6b9b44e2.jpeg

    39d971ca58fbe906492bf1b9b76cf140.png

  • 相关阅读:
    用自己的编程语言实现了一个网站(增强版)
    SpringBoot 使用 Sa-Token 完成注解鉴权功能
    工作10年血泪总结,6条职场禁忌千万别碰
    【SM6225】移动usb3 硬盘识别慢
    哈夫曼树的定义、原理及哈夫曼编码
    TypeScript 初识笔记
    Linux| jq命令对JSON格式数据操作
    Java线程同步的四种方式详解(建议收藏)
    DOM对象和jquery对象
    Cpolar+Tipas:在Ubuntu上搭建私人问答网站,为您提供专业的问题解答
  • 原文地址:https://blog.csdn.net/tecdat/article/details/132893606
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号