目标:计算部分自相关的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
有人可以告诉我公式或使用哪些模块吗?
提前感谢您的帮助。
答案 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)))