似不相关回归中如何正确开展带稳健标准误的联合显著性检验
问题描述
我尝试在采用稳健标准误的似不相关回归(Seemingly Unrelated Regression, SUR)设定下开展联合显著性检验。研究包含Y1、Y2、Y3三个结果变量,待检验的联合原假设为:处理变量Z对三个结果变量的平均效应均为0。
我确认自身的模型设定无误,但怀疑car::linearHypothesis函数中的hypothesis.matrix参数设置存在错误。
示例代码
模拟数据生成
library(tibble) library(car) library(systemfit) set.seed(343) N = 800 dat <- tibble( U = rnorm(N), Z = rbinom(N, 1, 0.5), Y = 0.2 * Z + U, Y1 = Y + rnorm(N, sd = 0.3), Y2 = Y + rnorm(N, sd = 0.5), Y3 = Y + rnorm(N, sd = 0.5) )
模型拟合
本案例中每个方程仅含相同的解释变量,因此SUR拟合结果与逐方程OLS完全一致:
# SUR拟合 sur <- systemfit(list(Y1 ~ Z, Y2 ~ Z, Y3 ~ Z), method = "SUR", data = dat) summary(sur) # 多元OLS拟合 ols <- lm(cbind(Y1, Y2, Y3) ~ Z, data = dat) summary(ols)
原有错误检验代码
我最初编写的稳健标准误联合检验代码如下,运行后出现单个系数p值均低于联合检验p值的反常结果,怀疑设定有误:
linearHypothesis(ols, hypothesis.matrix = "Z = 0", white.adjust = "hc2")
错误原因
原有代码存在两个核心问题:
- 字符形式的假设
"Z = 0"仅会匹配第一个结果方程(Y1)中的Z系数,本质是单系数显著性检验,完全没有覆盖Y2、Y3方程的Z系数,不属于目标跨方程联合检验。 - 针对多元响应lm模型,
white.adjust参数默认仅计算单方程层面的异方差稳健标准误,不会正确估计跨方程的系数协方差矩阵,会导致联合检验统计量出现偏差。
正确实现方法
联合检验需要手动构造覆盖三个方程Z系数的约束矩阵,同时显式传入包含跨方程协方差的HC2稳健协方差矩阵,两种等价实现方式如下:
方法1:基于systemfit拟合的SUR模型直接检验
# 构造约束矩阵:三行分别对应三个方程的Z系数为0的约束 # 系数顺序:Y1截距、Y1的Z系数、Y2截距、Y2的Z系数、Y3截距、Y3的Z系数 hyp_mat <- rbind( c(0, 1, 0, 0, 0, 0), c(0, 0, 0, 1, 0, 0), c(0, 0, 0, 0, 0, 1) ) # 传入HC2稳健协方差完成联合检验 linearHypothesis( sur, hypothesis.matrix = hyp_mat, vcov. = vcovHC(sur, type = "HC2") )
方法2:基于多元OLS模型检验
由于本案例中SUR与OLS系数估计完全等价,也可直接用ols对象完成检验,约束矩阵构造逻辑与上述一致:
hyp_mat_ols <- rbind( c(0, 1, 0, 0, 0, 0), c(0, 0, 0, 1, 0, 0), c(0, 0, 0, 0, 0, 1) ) linearHypothesis( ols, hypothesis.matrix = hyp_mat_ols, vcov. = vcovHC(ols, type = "HC2") )
运行后得到的联合检验F统计量约为25.6,p值远小于0.001,符合三个方程Z系数均显著为正的模拟数据设定,结果逻辑自洽。
内容的提问来源于stack exchange,提问作者Alex Coppock
相关产品推荐
相关产品推荐

