一、概述

自相关函数,用来度量同一事件在不同时期之间的相关程度,或者说是一个信号经过类似于反射、折射等其它情况的延时后的副本信号与原信号的相似程度。
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)绘图相关推荐

  1. 自相关系数 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 ...

  2. python绘制四叶草_python绘图四叶草_Python教程,python,绘图

    Python阶乘求和的方法_Python教程 Python阶乘求和的方法:首先定义一个getSum函数,在函数内使用for循环调用fact函数:然后在fact函数内对一个数进行求阶乘运算,并将计算的结 ...

  3. ARIMA 时间序列1: 差分, ACF, PACF

    ARIMA ARIMA(p,d,q)模型全称为差分自回归移动平均模型 (Autoregressive Integrated Moving Average Model,简记ARIMA). 自回归(AR) ...

  4. python绘制折线图中文图例不显示_python使用matplotlib绘图时图例显示问题的解决...

    前言 matplotlib是基于Python语言的开源项目,旨在为Python提供一个数据绘图包.在使用Python matplotlib库绘制数据图时,需要使用图例标注数据类别,但是传参时,会出现图 ...

  5. python画图的模块_python强大的绘图模块matplotlib示例讲解

    Matplotlib 是 Python 的绘图库.作为程序员,经常需要进行绘图,在我自己的工作中,如果需要绘图,一般都是将数据导入到excel中,然后通过excel生成图表,这样操作起来还是比较繁琐的 ...

  6. 如何用python绘图、柱形图、线形图等_python使用Plotly绘图工具绘制散点图、线形图...

    今天在研究Plotly绘制散点图的方法,供大家参考,具体内容如下 使用Python3.6 + Plotly Plotly版本2.0.0 在开始之前先说说,还需要安装库Numpy,安装方法在我的另一篇博 ...

  7. java调python画图_Python Matplotlib plot 绘图

    1.绘制x和y点 plot()函数用于在图中绘制点(标记). 默认情况下,plot()函数在点到点之间画一条线. 该函数具有用于在图中指定点的参数. 参数1是一个数组,其中包含x轴上的点. 参数2是一 ...

  8. 海龟画图 python太阳花_python 简单的绘图工具turtle使用详解

    目录 1. 画布(canvas) 1.1 设置画布大小 2. 画笔 2.1 画笔的状态 2.2 画笔的属性 2.3 绘图命令 3. 命令详解 4. 绘图举例 4.1 太阳花 4.2 绘制小蟒蛇 4.3 ...

  9. python中bar的用法_python使用matplotlib绘图 -- barChart

    matplotlib 是python最著名的绘图库,它提供了一整套和matlab相似的命令API,十分适合交互式地进行制图.而且也可以方便地将它作为绘图控件,嵌入GUI应用程序中.它的文档相当完备,并 ...

最新文章

  1. C# WinForm 弹出模式窗口操作滚动条
  2. 音频监控叫好又叫座,核心部件拾音器怎么装?
  3. 2011-05-20
  4. 如何创建最简单的 ABAP 数据库表,以及编码从数据库表中读取数据 (上) 试读版
  5. 随机组卷功能,你值得拥有~~~
  6. multisim仿真D触发器设计的模六计数器并在数码管显示0-5
  7. 新东方年会节目员工吐槽公司问题 俞敏洪:奖励12万
  8. FISCO BCOS(四)——— 在Ubantu上安装python3.8
  9. springboot异常处理机制之统一异常处理和自定义异常类
  10. 表达式类型错误oracle,这个语句报pls_00382 表达式类型错误 求问为什么。
  11. 通过stm32cubemx配置DCMI驱动ov5640摄像头
  12. 【LeetCode】马三来刷题之Remove Duplicates from Sorted Array
  13. 电脑上怎么录制视频 电脑实用快捷键
  14. WordNet介绍,一个开放知识图谱
  15. 孤尽训练营打卡日记day14--第二周总结
  16. 【原创】关于noot的学习笔记
  17. Win10自动拨号上网设置方法
  18. 【变色龙】app封装系统源码+某站在售封装系统
  19. Linux运维|记录一个挖矿病毒
  20. 【Unity VR开发】结合VRTK4.0:直线

热门文章

  1. 麦克风声音传感器(arduino IDE)
  2. 安卓 flutter app证书绑定校验抓包绕过
  3. Socket accept建立TCP连接失败
  4. java jasperException异常
  5. 《SPARK官方教程系列》(标贝科技)
  6. python 多项式求系数_python – sklearn:如何获得多项式特征的系数
  7. 光量子计算机在哪个国家诞生,光量子计算机是在中国诞生的吗
  8. 函数指针作为函数参数 定义、使用、调用简例
  9. /*指针:编写函数strend(s,t),如果字符串t出现在了字符串s的尾部,返回1,否则0*/
  10. csr8670--button按键的实现