You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何简化statsmodels中生成正确滞后阶数互相关图的代码

基础示例代码

import pandas as pd
import numpy as np
import statsmodels.tsa.stattools as smt
import matplotlib.pyplot as plt

np.random.seed(123)
test = pd.DataFrame(np.random.randint(0,25,size=(79, 2)), columns=list('AB'))

代码可大幅简化,简化后版本如下:

# 计算正反向CCF值,和原有逻辑一致
backwards = smt.ccf(test['A'][::-1], test['B'][::-1], adjusted=False)[::-1]
forwards = smt.ccf(test['A'], test['B'], adjusted=False)

# 直接拼接CCF值,生成对应滞后阶数序列
full_ccf = np.concatenate([backwards, forwards[1:]])
lags = np.arange(-len(backwards)+1, len(forwards))

# 一步生成目标DataFrame
full = pd.DataFrame({'lag': lags, 'value': full_ccf})

# 绘图逻辑不变
full.set_index('lag').value.plot()

简化逻辑说明

  • 省去了创建两个临时DataFrame再合并的冗余操作,直接用np.concatenate拼接正反向CCF计算结果
  • 用np.arange直接生成从负向最大到正向最大的连续滞后阶数,无需手动生成负向lag、再排序的步骤
  • 代码逻辑完全匹配「拼接两个列表得到完整互相关序列」的核心概念,代码量减少近一半,可读性更高

互相关结果图

内容的提问来源于stack exchange,提问作者ℕʘʘḆḽḘ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 02:36:03