如何绘制stattools ccf函数的置信区间?

2024-07-05 14:51:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用statsmodels中的ccf计算互相关函数。它工作得很好,只是我不知道如何绘制置信区间。我注意到acf似乎有更多的功能。下面是一个玩具的例子,让我们看看:

import numpy as np
import matplotlib.pyplot as plt
import statsmodels.tsa.stattools as stattools

def create(n):
    x = np.zeros(n)
    for i in range(1, n):
        if np.random.rand() < 0.9:
            if np.random.rand() < 0.5:
                x[i] = x[i-1] + 1
        else:
            x[i] = np.random.randint(0,100)
    return x
x = create(4000)
y = create(4000)
plt.plot(stattools.ccf(x, y)[:100])

这样可以得到:

enter image description here


Tags: 函数importifascreatenp绘制plt
1条回答
网友
1楼 · 发布于 2024-07-05 14:51:02

不幸的是,statsmodels互相关函数(ccf)没有提供置信区间。在R中,ccf()还将打印置信区间。在

在这里,我们需要自己计算置信区间,并在之后绘制出来。置信区间在这里计算为2 / np.sqrt(lags)。有关互相关置信区间的基本信息,请参阅:

import numpy as np
import matplotlib.pyplot as plt
import statsmodels.tsa.stattools as stattools

def create(n):
    x = np.zeros(n)
    for i in range(1, n):
        if np.random.rand() < 0.9:
            if np.random.rand() < 0.5:
                x[i] = x[i-1] + 1
        else:
            x[i] = np.random.randint(0,100)
    return x
x = create(4000)
y = create(4000)

lags= 4000
sl = 2 / np.sqrt(lags)

plt.plot(x, list(np.ones(lags) * sl), color='r')
plt.plot(x, list(np.ones(lags) * -sl), color='r')

plt.plot(stattools.ccf(x, y)[:100])

这将导致以下带有额外红线的绘图: CI Plot

相关问题 更多 >