You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

似不相关回归中如何正确开展带稳健标准误的联合显著性检验

问题描述

我尝试在采用稳健标准误的似不相关回归(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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 23:36:35