做数据分析为何要学统计学(10)——如何进行时间序列分析

时间序列是由随时间变化的值构成,如产品销量、气温数据等等。通过对时间序列展开分析,能够回答如下问题:

  • (1)被研究对象的活动特征是否有周期性(也称季节性)
  • (2)被研究对象的活动特征是否有趋势性(上升或下降)

时间序列分析有多种方法,常用方法为STL(Seasonal and Trend decomposition using Loess)算法。该方法是一种把时间序列分解为趋势项(trend component)、季节项(seasonal component)和残差项(remainder/residual component/random)的过滤过程。如下图:

STL算法在1990年由密歇根大学的R. B. Cleveland教授以及AT&T Bell实验室的W. S. Cleveland等人研发。其特点是:

  • 稳健的估计趋势项和季节项,而不会被数据中的异常行为扭曲
  • 可以指定季节项的周期为采样时间间隔任意大于一的整数倍
  • 可以分解有缺失值的时间序列

以下用纽约 1946年1月到1959年12月的每月新生儿数作为时间序列分析人口增长的规律。代码如下:

python 复制代码
#读入时间序列数据
import pandas as pd
X=pd.read_csv("https://robjhyndman.com/tsdldata/data/nybirths.dat",header=None,names=["birth"])
#绘制折线图
X.plot()
python 复制代码
#进行时间序列分析
import  statsmodels.api as sm
import matplotlib.pyplot as plt
res = sm.tsa.seasonal_decompose(X,period=12)
res.plot()
plt.xlabel("Month")
plt.show()

结果如下

可以看人口出生在第38个月左右后出生有明显上升趋势,而且从每年3月-6期间,出生人口开始进入高峰期,从8月份左右开始出生人口急速下降。

相关推荐
海绵宝宝转agent24 分钟前
learn-claude-code第1-5章开源学习笔记分享
人工智能·笔记·python·学习
小奇不哭32 分钟前
ROS2 单节点,RGB-D 深度相机局部路径提取 + B 样条平滑路径 + YOLOv8 障碍物检测 + 深度测距,用于移动机器人视觉局部循迹。
python·yolov8·ros2·cv2·路径探索循迹
小小龙学IT43 分钟前
Python scikit-learn 机器学习库深度解析
python·机器学习·scikit-learn
2601_962071571 小时前
类变量和全局变量的查找路径有什么区别?
开发语言·python
卷无止境2 小时前
独立开发者的"富矿地带":哪些垂直领域值得你押注一辈子?
后端·python
Java后端的Ai之路2 小时前
Python进阶探索29_eval内置函数
开发语言·python·探索·eval·内置函数
计算机毕业编程指导师2 小时前
计算机毕设选题推荐:基于Hadoop与Spark的Steam游戏数据分析系统源码 毕业设计 选题推荐 毕设选题 数据分析 机器学习 深度学习
大数据·hadoop·python·计算机·spark·毕业设计·steam游戏
计算机毕业编程指导师3 小时前
【计算机毕设选题推荐】基于Hadoop+Spark的白鹿抖音评论大数据分析与可视化系统源码 毕业设计 选题推荐 毕设选题 数据分析 机器学习 深度学习
大数据·hadoop·python·计算机·spark·毕业设计·抖音评论
Zootopia6263 小时前
飞行力学知识梳理1|飞行性能与稳定性
人工智能·python·算法·机器学习·无人机·学习方法·信息与通信
Y3815326623 小时前
搜索 API 延迟优化:并发数、超时与超时的真实代价
python·搜索引擎