Statsmodels中UNEMP滞后项联合显著性F检验的代码如何编写?
检验UNEMP滞后项联合显著性的实现方法
statsmodels的拟合结果对象自带的f_test方法可以直接实现联合显著性检验,针对你的代码场景有两种常用写法:
方法1:字符串约束写法(适配公式API的最简方案)
因为你用了公式接口定义回归,直接传入系数约束的字符串即可,不用手动构造矩阵,代码可读性更高:
# 定义原假设:三个滞后项的系数同时为0 hypothesis = '(UNEMP.shift(1) = 0, UNEMP.shift(2) = 0, UNEMP.shift(3) = 0)' f_test_result = results.f_test(hypothesis) # 输出检验结果 print(f"F统计量: {f_test_result.fvalue[0][0]}") print(f"p值: {f_test_result.pvalue}") print(f"分子自由度/分母自由度: {f_test_result.df_num}, {f_test_result.df_denom}")
方法2:约束矩阵写法(和示例逻辑一致)
如果习惯用矩阵形式定义约束,可以按照如下代码实现:
import numpy as np # 生成和参数数量等长的单位矩阵 A = np.identity(len(results.params)) # 三个滞后项对应参数索引为1、2、3(第0位是截距项),提取对应行构造约束矩阵 A = A[1:4,:] f_test_result = results.f_test(A) # 直接打印格式化的结果汇总 print(f_test_result.summary())
结果解读
输出结果中的p值如果小于预设的显著性水平(通常为0.05),则拒绝「三个UNEMP滞后项的系数同时为0」的原假设,证明这三个滞后项整体对被解释变量TOTEMP存在显著的联合影响。
注意:你代码中使用了
shift生成滞后项,statsmodels会自动剔除存在缺失值的前三行样本,检验逻辑不受影响。
内容的提问来源于stack exchange,提问作者Djpengo
相关产品推荐
相关产品推荐

