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

用ACF和PACF计算出一堆数据的周期个数以及周期时长,数据分析python

具体步骤
1使用ACF和PACF:可以通过查看ACF图中的周期性峰值,找到数据中的周期性。如果ACF图在某个滞后期处出现显著的正相关峰值,并且这种模式在多个滞后周期中重复出现,这就是周期性信号的特征。而PACF则可以帮助确定延迟的直接影响。

2找周期数和周期长度:周期的时长可以通过ACF中第一个显著的峰值(排除滞后期为0时的峰值)来确定,而周期的个数则可以通过分析整个序列中的周期性重复次数来估计。

下面是一个使用 statsmodels 库来计算并绘制ACF和PACF,并分析周期的Python代码。

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from statsmodels.graphics.tsaplots import plot_acf, plot_pacf
from statsmodels.tsa.stattools import acf, pacf# 生成模拟数据或导入真实数据
# 假设你的数据是一个时间序列 DataFrame 或 NumPy 数组
# data = pd.read_csv('your_data.csv')  # 你的真实数据
data = np.sin(np.linspace(0, 10 * np.pi, 500))  # 模拟数据# 绘制ACF和PACF
fig, ax = plt.subplots(2, 1, figsize=(10, 8))# ACF图
plot_acf(data, lags=50, ax=ax[0])
ax[0].set_title('Autocorrelation (ACF)')# PACF图
plot_pacf(data, lags=50, ax=ax[1])
ax[1].set_title('Partial Autocorrelation (PACF)')plt.tight_layout()
plt.show()# 计算ACF和PACF值
acf_values = acf(data, nlags=50)
pacf_values = pacf(data, nlags=50)# 寻找周期长度
def find_period(acf_values):# 查找第一个显著峰值的位置作为周期for lag in range(1, len(acf_values)):if acf_values[lag] > 0.5:  # 设定一个阈值,例如0.5,可以调整return lagreturn Noneperiod = find_period(acf_values)
print(f"Detected period length: {period}")
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from statsmodels.graphics.tsaplots import plot_acf, plot_pacf
from statsmodels.tsa.stattools import acf, pacf# 生成模拟数据或导入真实数据
data = np.sin(np.linspace(0, 20 * np.pi, 1000))  # 生成正弦波数据,假设有多个周期# 绘制ACF和PACF
fig, ax = plt.subplots(2, 1, figsize=(10, 8))# ACF图
plot_acf(data, lags=100, ax=ax[0])
ax[0].set_title('Autocorrelation (ACF)')# PACF图
plot_pacf(data, lags=100, ax=ax[1])
ax[1].set_title('Partial Autocorrelation (PACF)')plt.tight_layout()
plt.show()# 计算ACF值
acf_values = acf(data, nlags=100)# 寻找周期长度函数
def find_period(acf_values, threshold=0.5):# 查找第一个显著峰值的位置作为周期长度for lag in range(1, len(acf_values)):if acf_values[lag] > threshold:  # 使用阈值筛选显著峰值return lagreturn None# 确定周期长度
period_length = find_period(acf_values)
print(f"Detected period length: {period_length}")# 计算周期个数
if period_length:total_data_points = len(data)num_periods = total_data_points // period_lengthprint(f"Detected number of periods: {num_periods}")
else:print("No significant period detected.")

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【区块链 + 物联网】区块链边缘计算网关设备 | FISCO BCOS应用案例
  • 鸿蒙Next-拉起支付宝的三种方式——教程
  • 2024最新!Facebook手机版和网页版改名教程!
  • 【30天玩转python】条件语句与循环
  • RLC(电阻、电感、电容)
  • 简单的spring batch学习
  • 基础学习之——Docker 的基本概念和优势,以及在应用程序开发中的实际应用。
  • pycharm破解教程
  • 前端框架有哪些
  • 在VMware中的centos stream 9上用packstack安装openstack的单机版
  • 数字证书与公钥基础设施
  • 集成电路学习:什么是NOR Flash Memory非易失性闪存存储器
  • 1-17 平滑处理——中值滤波 opencv树莓派4B 入门系列笔记
  • [项目][CMP][Thread Cache]详细讲解
  • 无线信道中ph和ph^2的场景
  • JavaScript 如何正确处理 Unicode 编码问题!
  • 2017-08-04 前端日报
  • Angular2开发踩坑系列-生产环境编译
  • Flannel解读
  • Git学习与使用心得(1)—— 初始化
  • JavaScript HTML DOM
  • Java编程基础24——递归练习
  • Python_网络编程
  • SAP云平台运行环境Cloud Foundry和Neo的区别
  • 从tcpdump抓包看TCP/IP协议
  • 用quicker-worker.js轻松跑一个大数据遍历
  • 用Visual Studio开发以太坊智能合约
  • MiKTeX could not find the script engine ‘perl.exe‘ which is required to execute ‘latexmk‘.
  • ​iOS安全加固方法及实现
  • ​渐进式Web应用PWA的未来
  • !$boo在php中什么意思,php前戏
  • #include
  • (1)(1.8) MSP(MultiWii 串行协议)(4.1 版)
  • (LeetCode 49)Anagrams
  • (PHP)设置修改 Apache 文件根目录 (Document Root)(转帖)
  • (板子)A* astar算法,AcWing第k短路+八数码 带注释
  • (附源码)spring boot公选课在线选课系统 毕业设计 142011
  • (附源码)小程序 交通违法举报系统 毕业设计 242045
  • (回溯) LeetCode 77. 组合
  • (每日持续更新)jdk api之StringBufferInputStream基础、应用、实战
  • (一)python发送HTTP 请求的两种方式(get和post )
  • (一)十分简易快速 自己训练样本 opencv级联haar分类器 车牌识别
  • (原創) 如何優化ThinkPad X61開機速度? (NB) (ThinkPad) (X61) (OS) (Windows)
  • (转)nsfocus-绿盟科技笔试题目
  • *p++,*(p++),*++p,(*p)++区别?
  • .form文件_一篇文章学会文件上传
  • .NET / MSBuild 扩展编译时什么时候用 BeforeTargets / AfterTargets 什么时候用 DependsOnTargets?
  • .NET Core WebAPI中封装Swagger配置
  • .NET国产化改造探索(一)、VMware安装银河麒麟
  • .vue文件怎么使用_vue调试工具vue-devtools的安装
  • [ C++ ] STL---仿函数与priority_queue
  • [000-01-011].第2节:持久层方案的对比
  • [ACP云计算]易混淆知识点(考题总结)
  • [Android]常见的数据传递方式
  • [ANT] 项目中应用ANT