如何提取statsmodels格兰杰因果检验的显著滞后项系数
问题解答
可以从返回的statsmodels.regression.linear_model.RegressionResultsWrapper对象中提取格兰杰检验对应显著性滞后项的系数,格兰杰因果检验的底层逻辑就是拟合带多阶滞后项的线性回归模型,该对象本身就存储了这个回归模型的全部统计结果。
核心可调用属性
- 所有回归系数:通过
params属性获取,返回带参数名称的Series格式结果,参数默认命名规则为L{滞后阶数}.{变量标识},比如L1.x2就代表第2个变量的1阶滞后项,你可以通过参数名直接匹配对应的变量和滞后阶数 - 系数显著性p值:通过
pvalues属性获取,返回的序列索引和params完全对应,可用来筛选符合显著性要求的滞后项
提取示例代码
# 假设你拿到的回归结果对象名为granger_model significance_level = 0.05 # 你设定的显著性水平,比如常用的0.05 # 1. 获取所有系数和对应p值 all_coefs = granger_model.params all_pvalues = granger_model.pvalues # 2. 筛选所有显著的系数 significant_all_coefs = all_coefs[all_pvalues < significance_level] # 3. 仅筛选格兰杰检验对应的自变量(即被检验是否为原因的变量)的显著滞后项 # 示例中假设你检验的是第二个变量对第一个变量的因果关系,自变量滞后项标识为x2 x_lag_coefs = all_coefs.filter(regex=r'^L\d+\.x2$') x_significant_coefs = x_lag_coefs[all_pvalues[x_lag_coefs.index] < significance_level] # 打印结果 print("检验变量的显著滞后项系数:\n", x_significant_coefs)
提示:如果不确定参数的命名规则,可先执行
print(granger_model.params.index)打印所有参数的完整名称,再调整筛选规则即可。
内容的提问来源于stack exchange,提问作者pvalue
相关产品推荐
相关产品推荐

