月度支出时间序列KPSS检验参数选择及结果解读疑问
关于KPSS检验
regression参数选择的清晰指南 针对你的4年月度支出时间序列(已观察到趋势),我来帮你理清KPSS检验里regression参数的选择逻辑,以及结果解读的关键点:
先搞懂两个参数的核心差异
regression='c':这个模式检验的是序列是否围绕固定均值平稳。简单说,它默认你的序列没有趋势,只看数据会不会在某个恒定的平均值附近上下波动。regression='ct':这个模式检验的是序列是否围绕线性趋势平稳。它允许你的序列有一个持续的上升/下降趋势,检验的是去除这个线性趋势之后的残差部分是否平稳。
结合你的场景,优先选regression='ct'
你已经明确观察到序列存在趋势,那第一步必须用'ct'模式来检验:
- 如果用
'c'模式,检验会把趋势当作“非平稳”的信号,大概率会得出“序列非平稳”的结论,但你根本分不清这个结论是因为趋势本身,还是序列真的存在单位根(真正的非平稳),这样的结果对你没什么参考价值。 - 用
'ct'模式的话,能精准判断:你的序列是“带着趋势但趋势之外的部分平稳”,还是“就算去掉趋势,依然是非平稳的”。
结果解读的关键(别和ADF搞混!)
KPSS检验的原假设是“序列平稳”(对应你选的'c'或'ct'的平稳类型),和ADF检验的原假设相反,这点一定要记牢:
- 如果p值 > 显著性水平(比如0.05):不能拒绝原假设,说明序列符合你所选的平稳类型——比如选
'ct'的话,就是“围绕线性趋势平稳”,不需要做差分处理。 - 如果p值 < 显著性水平:拒绝原假设,说明即使考虑了线性趋势,序列还是非平稳的,这时候可能需要做差分,或者进一步分析序列的其他非平稳来源。
给你的代码示例
from statsmodels.tsa.stattools import kpss # 针对带趋势的支出序列,先执行带趋势的KPSS检验 kpss_stat, p_value, used_lags, critical_values = kpss(your_monthly_expenses, regression='ct') print(f"KPSS统计量: {round(kpss_stat, 4)}") print(f"p值: {round(p_value, 4)}") print(f"临界值: {critical_values}")
内容的提问来源于stack exchange,提问作者TL16
相关产品推荐
相关产品推荐

