时间序列_python自相关系数(ACF)绘图
一、概述
自相关函数,用来度量同一事件在不同时期之间的相关程度,或者说是一个信号经过类似于反射、折射等其它情况的延时后的副本信号与原信号的相似程度。
R(τ)=E[(Xt−μ)(Xt−τ−μ)]σ2R(\tau) = \frac{E[(X_t - \mu)(X_{t-\tau} - \mu)]}{\sigma ^ 2} R(τ)=σ2E[(Xt−μ)(Xt−τ−μ)]
简单讲就是比较不同时间延迟两个序列的相似程度,就好比下图蓝色框内序列和红色框内序列之间的相关性。
二、python实现&statsmodels自带绘制
python绘制
基于公式,计算滞后h的自相关系数
import numpy as np
import matplotlib.pyplot as plt
from numba import jit
from statsmodels.graphics.tsaplots import plot_acf@jit(nopython=True)
def self_corr(in_arr, h):"""自相关系数:E((X_t-u)(X_{t-h} -u))/var(X)简单化简了下"""u = np.mean(in_arr)s1 = in_arr[h:]s2 = in_arr[:-h] if h !=0 else in_arrreturn np.sum((s1 - u) * (s2 - u) / np.sum((in_arr-u)*(in_arr-u)))
基于相关系数,计算每次滞后的自相关系数,并绘制图形
def m_acf_plot(s, lags, ax='no', show_flag=False):acf_list = []plot_fig = axif ax == 'no':plot_fig = pltplt.figure(figsize=(10, 6))for i in range(0, lags+1):p_ = np.round(self_corr(s, i), 5)acf_list.append(p_)plot_fig.vlines(x=i, ymin=0, ymax=p_, alpha=0.7)plot_fig.scatter(list(range(lags+1)), acf_list)plot_fig.axhline(y=0, c='steelblue')try:plot_fig.title('ACF plot')except:plot_fig.set_title('ACF plot')if show_flag:plt.show()return acf_list
statsmodels绘制及比对
x = np.arange(600) / 100 * np.pi
y = np.sin(x)
fig, axes = plt.subplots(3, 1, figsize=(12, 10))
axes[0].plot(y)
for i in [200, 400]:axes[0].vlines(x=i, ymin=-1, ymax=1, linestyle='--', alpha=0.6)plot_acf(y, ax=axes[1], lags=300)
acf_list=m_acf_plot(y, lags=300, ax=axes[2])
plt.show()
绘制结果如下,可以看出我们绘制的图形与statsmodels的绘制是一致。
三、从ACF中的发现
从上图中我们基本能够看出,序列在经过了200个t滞后和序列的相关又达到了峰值,所以序列的周期大概是200
时间序列_python自相关系数(ACF)绘图相关推荐
- 自相关系数 ACF与偏自相关系数PACF,拖尾和截尾
1.ACF y(t,s)=E(Xt-µt)(Xs-µs) 定义ρ(t,s)为时间序列的自相关系数,为ACF ρ(t,s)=y(t,s)/sqrt(DXt * DXs) E为期望,D为方差 2.PACF ...
- python绘制四叶草_python绘图四叶草_Python教程,python,绘图
Python阶乘求和的方法_Python教程 Python阶乘求和的方法:首先定义一个getSum函数,在函数内使用for循环调用fact函数:然后在fact函数内对一个数进行求阶乘运算,并将计算的结 ...
- ARIMA 时间序列1: 差分, ACF, PACF
ARIMA ARIMA(p,d,q)模型全称为差分自回归移动平均模型 (Autoregressive Integrated Moving Average Model,简记ARIMA). 自回归(AR) ...
- python绘制折线图中文图例不显示_python使用matplotlib绘图时图例显示问题的解决...
前言 matplotlib是基于Python语言的开源项目,旨在为Python提供一个数据绘图包.在使用Python matplotlib库绘制数据图时,需要使用图例标注数据类别,但是传参时,会出现图 ...
- python画图的模块_python强大的绘图模块matplotlib示例讲解
Matplotlib 是 Python 的绘图库.作为程序员,经常需要进行绘图,在我自己的工作中,如果需要绘图,一般都是将数据导入到excel中,然后通过excel生成图表,这样操作起来还是比较繁琐的 ...
- 如何用python绘图、柱形图、线形图等_python使用Plotly绘图工具绘制散点图、线形图...
今天在研究Plotly绘制散点图的方法,供大家参考,具体内容如下 使用Python3.6 + Plotly Plotly版本2.0.0 在开始之前先说说,还需要安装库Numpy,安装方法在我的另一篇博 ...
- java调python画图_Python Matplotlib plot 绘图
1.绘制x和y点 plot()函数用于在图中绘制点(标记). 默认情况下,plot()函数在点到点之间画一条线. 该函数具有用于在图中指定点的参数. 参数1是一个数组,其中包含x轴上的点. 参数2是一 ...
- 海龟画图 python太阳花_python 简单的绘图工具turtle使用详解
目录 1. 画布(canvas) 1.1 设置画布大小 2. 画笔 2.1 画笔的状态 2.2 画笔的属性 2.3 绘图命令 3. 命令详解 4. 绘图举例 4.1 太阳花 4.2 绘制小蟒蛇 4.3 ...
- python中bar的用法_python使用matplotlib绘图 -- barChart
matplotlib 是python最著名的绘图库,它提供了一整套和matlab相似的命令API,十分适合交互式地进行制图.而且也可以方便地将它作为绘图控件,嵌入GUI应用程序中.它的文档相当完备,并 ...
最新文章
- C# WinForm 弹出模式窗口操作滚动条
- 音频监控叫好又叫座,核心部件拾音器怎么装?
- 2011-05-20
- 如何创建最简单的 ABAP 数据库表,以及编码从数据库表中读取数据 (上) 试读版
- 随机组卷功能,你值得拥有~~~
- multisim仿真D触发器设计的模六计数器并在数码管显示0-5
- 新东方年会节目员工吐槽公司问题 俞敏洪:奖励12万
- FISCO BCOS(四)——— 在Ubantu上安装python3.8
- springboot异常处理机制之统一异常处理和自定义异常类
- 表达式类型错误oracle,这个语句报pls_00382 表达式类型错误 求问为什么。
- 通过stm32cubemx配置DCMI驱动ov5640摄像头
- 【LeetCode】马三来刷题之Remove Duplicates from Sorted Array
- 电脑上怎么录制视频 电脑实用快捷键
- WordNet介绍,一个开放知识图谱
- 孤尽训练营打卡日记day14--第二周总结
- 【原创】关于noot的学习笔记
- Win10自动拨号上网设置方法
- 【变色龙】app封装系统源码+某站在售封装系统
- Linux运维|记录一个挖矿病毒
- 【Unity VR开发】结合VRTK4.0:直线
热门文章
- 麦克风声音传感器(arduino IDE)
- 安卓 flutter app证书绑定校验抓包绕过
- Socket accept建立TCP连接失败
- java jasperException异常
- 《SPARK官方教程系列》(标贝科技)
- python 多项式求系数_python – sklearn:如何获得多项式特征的系数
- 光量子计算机在哪个国家诞生,光量子计算机是在中国诞生的吗
- 函数指针作为函数参数 定义、使用、调用简例
- /*指针:编写函数strend(s,t),如果字符串t出现在了字符串s的尾部,返回1,否则0*/
- csr8670--button按键的实现