当前位置: 首页 > news >正文

从0开始学习R语言--Day10--时间序列分析数据

在数据分析中,我们经常会看到带有时间属性的数据,比如股价波动,各种商品销售数据,网站的网络用户活跃度等。一般来说,根据需求我们会分为两种,分析历史数据的特点和预测未来时间段的数据。

移动平均

移动平均的原理是用几天的数据作为一个窗口,根据权重乘以值得出预测该天的数据。我们以分析销售数据作为例子:

set.seed(123)
weeks <- 1:15
sales <- round(5000 + cumsum(rnorm(15, sd=300)))  # 随机波动
ma3_forecast <- stats::filter(sales, rep(1/3,3), sides=1)
# 预测第16周
next_week <- tail(ma3_forecast,1)
plot(weeks, sales, type="o", ylim=c(4000,6000),main="便利店周销售额预测", ylab="销售额", xlab="周数")
lines(weeks, ma3_forecast, col="red", type="o")
points(16, next_week, col="red", pch=19)
abline(v=15.5, lty=2)
text(16, next_week, labels=paste("预测:",round(next_week)), pos=4)

这里由于是要进行预测数据,代码里的语法选择了sides=1,意思是用历史数据来预测,图中的红点是基于历史数据生成的对于预测点,从这里我们可以观察到红色曲线像是往右偏移了的灰色曲线,这表明了如果简单的用历史数据去预测,那么预测得到的数据的特点会具有滞后性。

接下来我们来看看研究过去的体温数据的例子:

set.seed(123)
days <- 1:14
true_temp <- 36.5 + 0.1 * sin(2 * pi * days/7)  # 真实体温有轻微周波动
measured_temp <- true_temp + rnorm(14, sd=0.3)  # 测量误差
ma3 <- stats::filter(measured_temp, rep(1/3, 3), sides=2) 
plot(days, measured_temp, type="o", col="gray", main="每日体温监测", ylab="体温(℃)", xlab="天数") # 原始数据
lines(days, true_temp, col="green", lwd=2) # 平滑后的趋势
lines(days, ma3, col="red", lwd=2, type="o")
legend("topright", legend=c("测量值", "真实值", "3天移动平均"),col=c("gray", "green", "red"), lty=1, pch=c(1,NA,1))

在这里我们用的是sides=2,表示中心平均,也就是三个数据的权重相同,当然了,如果数据本身特殊,也可以用不等量权重weight <- c(0.2,0.5,0.3),注意最左边的是最靠近预测天数的那一个数据点。之所以分析历史数据时我们用中心平均,是因为这样利用了前后信息,可以从数据点的下一个数据得出反馈。此外,通过比较原始数据与平滑数据的偏差,如果某点的偏差远大于其他点(如超出2倍标准差),我们也可以借机对其进行异常标记。像股价分析问题中,用中心化平滑股价波动,如果某天价格大幅度偏离平滑线,那就有可能是市场异常事件导致的。

http://www.xdnf.cn/news/652969.html

相关文章:

  • 手机平板等设备租赁行业MDM方案解析
  • OpenCV计算机视觉实战(8)——图像滤波详解
  • vite常见面试问题
  • 新书速览|ASP.NET MVC高效构建Web应用
  • 精益数据分析(87/126):市场-产品契合度重构——现有产品寻找新市场的实战指南
  • springboot 微服务下部署AI服务
  • 2025年5月26日工作总结
  • 论文阅读:2024 arxiv Prompt Injection attack against LLM-integrated Applications
  • c#基础07(调试与异常捕捉)
  • [Git] 如何将已经执行的修改操作撤销
  • 力扣热题100之LRU缓存机制
  • 力扣 394.字符串解码
  • mysql-tpcc-mysql压测工具使用
  • 【Java工程师面试全攻略】Day2:Java集合框架面试全解析
  • 榕壹云物品回收系统实战案例:基于ThinkPHP+MySQL+UniApp的二手物品回收小程序开发与优化
  • 【运维】OpenWrt DNS重绑定保护配置指南:解决内网域名解析问题
  • 项目亮点 封装request请求模块
  • 2025年- H51-Lc159 --199. 二叉树的右视图(层序遍历,队列)--Java版
  • AI学习笔记二十八:使用ESP32 CAM和YOLOV5实现目标检测
  • 使用docker容器部署Elasticsearch和Kibana
  • Rk3568 Andorid 11 ,根据prop属性的值控制是否禁止u盘连接
  • 倚光科技在二元衍射面加工技术上的革新:引领光学元件制造新方向​
  • 拓扑光子混沌算法
  • 开源第三方库发展现状
  • 《软件工程》第 9 章 - 软件详细设计
  • Ini配置文件读写,增加备注功能
  • VR 技术在农业领域或许是一抹新曙光​
  • Java Class 文件编码机制全解析
  • 分布式锁与锁续期
  • 轻量级视觉语言模型 Dolphin:高效精准的文档结构化解析利器