Ljung-Box检验输出异常:为何未返回各滞后阶数p值?
Ljung-Box检验输出差异问题解答
问题原因
你遇到的不是操作错误,而是statsmodels版本差异导致的API变化:
- 旧版statsmodels的
acorr_ljungbox直接返回两个数组(检验统计量、对应p值),对应你代码里的lbvalue, pvalue解包方式; - 新版statsmodels(0.13及以上版本)中,
acorr_ljungbox返回的是一个包含lb_stat(检验统计量)和lb_pvalue(对应p值)的DataFrame,此时直接解包会导致pvalue变量指向整个DataFrame的lb_pvalue列结构,和书中的输出形式不符。
解决方法
- 先检查你的statsmodels版本:
import statsmodels print(statsmodels.__version__)
- 如果是新版本,修改代码为以下形式,就能得到每个滞后阶数对应的p值:
residuals = model_fit.resid lb_results = acorr_ljungbox(residuals, lags=np.arange(1,11,1)) # 打印每个滞后的p值 print(lb_results['lb_pvalue'])
这样输出的结果就会和书中展示的每个滞后阶数对应p值的形式一致。
内容的提问来源于stack exchange,提问作者Andrewyapppp
相关产品推荐
相关产品推荐

