做数据分析为何要学统计学(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月份左右开始出生人口急速下降。

相关推荐
一晌小贪欢6 小时前
Python 爬虫进阶:如何利用反射机制破解常见反爬策略
开发语言·爬虫·python·python爬虫·数据爬虫·爬虫python
躺平大鹅6 小时前
5个实用Python小脚本,新手也能轻松实现(附完整代码)
python
yukai080086 小时前
【最后203篇系列】039 JWT使用
python
独好紫罗兰7 小时前
对python的再认识-基于数据结构进行-a006-元组-拓展
开发语言·数据结构·python
Dfreedom.7 小时前
图像直方图完全解析:从原理到实战应用
图像处理·python·opencv·直方图·直方图均衡化
铉铉这波能秀7 小时前
LeetCode Hot100数据结构背景知识之集合(Set)Python2026新版
数据结构·python·算法·leetcode·哈希算法
Lun3866buzha7 小时前
YOLOv8-SEG-FastNet-BiFPN实现室内物品识别与分类:背包、修正带、立方体和铅笔盒检测指南
yolo·分类·数据挖掘
怒放吧德德8 小时前
Python3基础:基础实战巩固,从“会用”到“活用”
后端·python
aiguangyuan8 小时前
基于BERT的中文命名实体识别实战解析
人工智能·python·nlp
喵手8 小时前
Python爬虫实战:知识挖掘机 - 知乎问答与专栏文章的深度分页采集系统(附CSV导出 + SQLite持久化存储)!
爬虫·python·爬虫实战·零基础python爬虫教学·采集知乎问答与专栏文章·采集知乎数据·采集知乎数据存储sqlite