You need to enable JavaScript to run this app. Python调用statsmodels计算非归一化ACF的参数设置方法
优惠活动
大模型
产品
解决方案
定价
更多

Python调用statsmodels计算非归一化ACF的参数设置方法

Python计算非归一化自相关函数(ACF)的实现方案

statsmodels的acf函数设计上仅返回归一化后的自相关结果,无内置参数切换非归一化模式,可通过以下两种方式实现需求:

  • 方案1:使用同库acovf函数直接计算(推荐,和acf底层逻辑一致,精度高)
    acovf返回的非归一化自协方差序列就是标准定义下的非归一化ACF,修改后的代码如下:
from statsmodels.tsa.stattools import acovf
import numpy as np

x = np.loadtxt('MyFile.txt', usecols=6)
# biased参数设置为True对应acf默认的有偏估计逻辑,fft参数和原用法一致
# nlag设为len(x)-1即可得到长度为len(x)的0~len(x)-1阶滞后结果
y = acovf(x, fft=True, nlag=len(x)-1)
np.savetxt('AutoCorrelationFunction.txt', y)
  • 方案2:手动实现(可自定义是否去均值、估计逻辑等)
    如果需要适配特殊的非归一化ACF定义(比如不需要去均值),可以用FFT手动实现,示例代码如下:
import numpy as np

def unnormalized_acf(x, nlags=None, demean=True):
    n = len(x)
    if nlags is None:
        nlags = n
    if demean:
        x = x - x.mean()
    # 补零到2倍长度避免循环卷积误差
    fft_x = np.fft.fft(x, n=2*n)
    # 频域相乘得到自相关序列
    acf_seq = np.fft.ifft(fft_x * np.conj(fft_x)).real
    return acf_seq[:nlags]

# 调用示例
x = np.loadtxt('MyFile.txt', usecols=6)
y = unnormalized_acf(x, nlags=len(x), demean=True)
np.savetxt('AutoCorrelationFunction.txt', y)

调整demean参数即可控制计算前是否去除序列均值,适配不同的非归一化ACF定义需求。

内容的提问来源于stack exchange,提问作者user239504

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 18:36:10