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

打卡day57

洗发水销售数据集的性质分析

数据加载与初步观察

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from statsmodels.tsa.stattools import adfuller
from statsmodels.graphics.tsaplots import plot_acf, plot_pacf# 加载数据
url = "https://raw.githubusercontent.com/jbrownlee/Datasets/master/shampoo.csv"
data = pd.read_csv(url, header=0, parse_dates=[0], index_col=0,)
print(data.head())

数据可视化

plt.figure(figsize=(10, 4))
plt.plot(data, marker='o', linestyle='-', color='b')
plt.title("Shampoo Sales Time Series")
plt.xlabel("Month")
plt.ylabel("Sales")
plt.grid(True)
plt.show()

在这里插入图片描述

# 2. 诊断原始数据
plt.figure(figsize=(12, 6))plt.plot(data)
plt.title('原始数据(有明显趋势)')

在这里插入图片描述

# ADF检验
adf_result_original = adfuller(data)
print(f'原始数据的ADF检验结果:')
print(f'  ADF Statistic: {adf_result_original[0]}')
print(f'  p-value: {adf_result_original[1]}') # p-value会非常大,说明是非平稳的
# 3. 进行一阶差分治疗
data_diff = data.diff().dropna() # .diff()进行差分, .dropna()移除第一个NaN值plt.plot(data_diff)
plt.title('一阶差分后的数据')
plt.tight_layout()
plt.show()# 4. 诊断“治疗后”的数据
adf_result_diff = adfuller(data_diff)
print(f'一阶差分后数据的ADF检验结果:')
print(f'  ADF Statistic: {adf_result_diff[0]}')
print(f'  p-value: {adf_result_diff[1]}') # p-value会变得非常小,说明数据变平稳了

在这里插入图片描述

# 3. 进行季节性差分(周期s=12)
seasonal_data_diff = data.diff(periods=12).dropna()plt.subplot(212)
plt.plot(seasonal_data_diff)
plt.title('季节性差分后 (s=12) 的数据')
plt.tight_layout()
plt.show()# 4. 检查差分后的平稳性
# 注意:原始数据因为有趋势,肯定不平稳。季节性差分通常也能消除一部分趋势。
adf_result_original = adfuller(data)
print(f'原始季节性数据的p-value: {adf_result_original[1]}')adf_result_seasonal_diff = adfuller(seasonal_data_diff)
print(f'季节性差分后数据的p-value: {adf_result_seasonal_diff[1]}')

在这里插入图片描述
趋势成分:销售额的长期增长趋势明显。
季节性成分:存在轻微的周期性波动(如每年某些月份的销售高峰)。
残差:噪声较小,说明数据规律性较强。

http://www.lqws.cn/news/567721.html

相关文章:

  • WebRTC系列:(一)MacOS开发环境搭建(Vscode + Clangd)
  • Ubuntu开放mysql 3306端口
  • 现代 JavaScript (ES6+) 入门到实战(八):总结与展望 - 成为一名现代前端开发者
  • NLP随机插入
  • 复旦大学经济学院系统思考训练
  • MyBatis批量删除
  • [论文阅读]MISSRce
  • Elasticsearch 索引设计与性能优化实战指南
  • M1芯片最终oracle成功版本拉取方法及配置
  • 二叉树找到下一个中序遍历节点的思路
  • foreach、for in 和for of的区别
  • VMware报错问题解决记录
  • NAND Flash BCH和FTL
  • 聊聊横向移动中的实际技术点 ----- ResponderSMB
  • FastAPI+Sqlite+HTML的登录注册与文件上传系统:完整实现指南
  • 驱动开发系列58 - 揭开内核IRQ框架的神秘面纱
  • 对基尼指数作出的努力
  • jenkins启动报错,一直无法启动
  • 介绍Windows下的由Sysinternals开发的一些小工具
  • 实战篇----利用 LangChain 和 BERT 用于命名实体识别-----完整代码
  • OpenAI 系列大模型发展时间轴与主要特性
  • 用Flink打造实时数仓:生产环境中的“坑”与“解药”
  • Mac homebrew 安装教程
  • linux系统---Nginx反向代理与缓存功能
  • Springboot 集成 SpringState 状态机
  • 代码随想录打卡第一天
  • C语言中常见字符串处理函数
  • 量子算法入门——5.Qiskit库介绍与简单应用(2)
  • Ubuntu服务器(公网)- Ubuntu客户端(内网)的FRP内网穿透配置教程
  • 博图SCL编程利器:CASE OF 语句详解与应用指南之设备运行模式选择框架