部分自相关函数的P值

时间:2018-05-31 14:53:48

标签: python correlation partial p-value

目标:计算部分自相关的p值,顺序为2到40. 自相关的相同。

目前:我使用" statsmodel" 的模块 acf pacf 来计算自相关和部分自相关。

from statsmodels.graphics.tsaplots import acf, pacf
[accf, qstat, pvalue] = acf(rtrn, unbiased=False, nlags=40, qstat=True, fft=False, alpha=None, missing='none')
paccf = pacf(rtrn, nlags=40, method='ywunbiased', alpha=None) 

# let's say rtrn is known
# rtrn = np.arange(80)
# accf = array([ 1.,  0.9625,  0.92502344, ..., -0.25011721])
# paccf = array([ 1., 0.97468354, -0.02532447, ..., -0.12554433])
# !!! I would like also the p-values of these correllations

有人可以告诉我公式或使用哪些模块吗?

提前感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

您可以使用statsmodel's "Ljung-Box test"

from statsmodels import stats

lbvalues, pvalues = stats.diagnostic.acorr_ljungbox(rtnr) #I guess rtnr is your data to test for 

答案 1 :(得分:0)

p 值与置信区间有关,因为如果您的 p 值恰好为 0.05,那么您在 0.05 处的置信区间将上升但不会超过 0。

考虑到这一点,我们可以反转置信区间的计算,这样我们就可以将 alpha 设为未知变量,并使用自相关值作为输入,而不是将 alpha 固定为 0.05。

如果您查看 stattools,它们是如何计算置信区间的:

from statsmodels.tsa import stattools
ret = stattools.pacf_ols(x, nlags=40)
varacf = 1. / len(x)  # for all lags >=1
interval = stattools.stats.norm.ppf(1. - alpha / 2.) * np.sqrt(varacf)
confint = np.array(lzip(ret - interval, ret + interval))

要反转这个方程来求解 p 值,您可以将间隔设置为等于 pacf 值,然后求解 alpha。

pvalues = stats.norm.sf(abs(ret) / np.sqrt(1. / len(x)))