检验来自两个不同回归的系数相等性

Testing equality of coefficients from two different regressions

提问人:coffeinjunky 提问时间:4/12/2014 最后编辑:coffeinjunky 更新时间:10/16/2023 访问量:121456

问:

这似乎是一个基本问题,但我刚刚意识到我实际上不知道如何从两个不同的回归中测试系数的相等性。谁能对此有所了解?

更正式地说,假设我运行了以下两个回归: $$ y_1 = X_1\beta_1 + \epsilon_1 $$ 和 $$ y_2 = X_2\beta_2 + \epsilon_2 $$ 其中 $X_i$ 表示回归 $i$ 的设计矩阵,$\beta_i$ 表示回归 $i$ 中的系数向量。请注意,$X_1$ 和 $X_2$ 可能非常不同,具有不同的尺寸等。例如,我对$\hat\beta_{11}\neq \hat\beta_{21}$是否感兴趣。

如果这些来自相同的回归,这将是微不足道的。但是由于它们来自不同的,我不太确定该怎么做。有没有人有想法或可以给我一些建议?

我的问题很详细:我的第一个直觉是查看置信区间,如果它们重叠,那么我会说它们本质上是相同的。但是,此过程没有正确数量的测试(例如,每个单独的置信区间都有$\alpha=0.05$,但将它们放在一起看不会具有相同的概率)。我的“第二个”直觉是进行正常的 t 检验。也就是说,采取

$$ \frac{\beta_{11}-\beta_{21}}{sd(\beta_{11})} $$

其中 $\beta_{21}$ 作为我的原假设的值。不过,这没有考虑 $\beta_{21}$ 的估计不确定性,答案可能取决于回归的顺序(我称之为 1 和 2)。

我的第三个想法是,在标准测试中,对来自同一回归的两个系数相等性进行测试,即采取 $$ \frac{\beta_{11}-\beta_{21}}{sd(\beta_{11}-\beta_{21})} $$

由于两者都来自不同的回归,因此会出现复杂情况。请注意,

$$ 变量(\beta_{11}-\beta_{21}) = 变量(\beta_{11}) + 变量(\beta_{21}) -2 Cov(\beta_{11},\beta_{21}) $$ 但是由于它们来自不同的回归,我如何获得 $Cov(\beta_{11},\beta_{21})$?

这让我在这里问了这个问题。这一定是一个标准程序/标准测试,但我找不到任何与这个问题足够相似的东西。所以,如果有人能给我指出正确的程序,我将不胜感激!

假设检验 推理

评论

2赞 tomka 4/12/2014
这似乎与结构/联动方程建模有关。解决这个问题的一种方法是同时拟合两个方程,例如以最大似然拟合,然后对无约束模型使用约束(等参数模型)的似然比检验。实际上,这可以通过SEM软件(Mplus,lavaan等)来完成。
2赞 dimitriy 4/13/2014
您知道看似无关的回归 (SUR) 吗?
2赞 tomka 4/13/2014
我认为你的加薪问题,即如何获得两个系数的 cov,是通过 SEM 解决的,这将为您提供所有系数的 var-cov 矩阵。然后,您可以按照建议的方式使用 Wald 测试,而不是 LRT 测试。此外,您还可以使用重新采样/引导程序,这可能更直接。
3赞 coffeinjunky 4/13/2014
是的,你是对的,@tomka。在 SUR 模型中(您可以粗略地考虑 SEM 模型的特例),我可以得到适当的测试。谢谢你为我指明这个方向!我想我没有考虑过,因为这似乎有点像用大炮射麻雀,但我确实想不出更好的方法。如果你写了一个答案,我会把它标记为正确的。否则,我很快就会自己写出来,并附上快速的理论解释,并可能附上一个示例。
1赞 dimitriy 4/13/2014
SUR 非常容易实现。这是 Stata 的一个例子。使用 R,您需要 systemfit

答:

20赞 coffeinjunky 4/13/2014 #1

对于有类似问题的人,让我提供一个简单的答案大纲。

诀窍是将两个方程设置为一个看似不相关的方程组,并联合估计它们。也就是说,我们将 $y_1$ 和 $y_2$ 堆叠在一起,并对设计矩阵执行或多或少相同的操作。也就是说,要估计的系统是:

$\left(\array{y_1 \\ y_2}\right) = \left(\array{X_1 \ \ 0 \\ 0 \ \ X_2}\right)\left(\array{\beta_1 \\ \beta_2 }\right) + \left(\array{e_1 \\ e_2 }\right) $

这将导致一个方差-协方差矩阵,该矩阵允许检验两个系数的相等性。

评论

17赞 KH Kim 11/26/2014
我实现了您建议的方式,并将其与上述方式进行了比较。我发现关键的区别在于误差方差是否相同的假设。您的方法假定误差方差相同,并且上面的方法不假设它。
2赞 wkschwartz 10/23/2017
这对我来说效果很好。在 Stata 中,我做了这样的事情:使用聚类标准误差可以解释这样一个事实,即在堆叠数据集后,e1 和 e2 对于同一观测值不是独立的。expand =2, generate(indicator); generate y = cond(indicator, y2, y1); regress y i.indicator##c.X, vce(cluster id);
0赞 alexpghayes 7/26/2022
@KHKim 您可以通过使用稳健的协方差估计器来绕过该假设。
56赞 russellpierce 5/21/2014 #2

虽然这不是一个常见的分析,但它确实是一个有趣的分析。我将提供一种相当被接受的技术,它可能是等价的,也可能不是等价的(我会把它留给更好的人来评论)。

此方法是使用以下 Z 检验:

$$Z = \frac{\beta_1-\beta_2}{\sqrt{(SE\beta_1)^2+(SE\beta_2)^2}}$$

其中 $SE\beta$$\beta$ 的标准误差。

该方程由Clogg, C. C., Petkova, E., & Haritou, A. (1995)提供。比较模型间回归系数的统计方法。美国社会学杂志100(5),1261-1293。并被Paternoster, R., Brame, R., Mazerolle, P., & Piquero, A.(1998)引用。使用正确的统计检验来检验回归系数的相等性。犯罪学36(4),859-866。等式 4,无需付费专区即可使用。我调整了 Peternoster 的公式,使用 $\beta$ 而不是 $b$,因为您可能出于某种可怕的原因对不同的 DV 感兴趣,我对 Clogg 等人的记忆是他们的公式使用了 $\beta$我还记得将这个公式与 Cohen、Cohen、West 和 Aiken 进行交叉检查,同样想法的根源可以在系数之间差异的置信区间中找到,等式 2.8.6,第 46-47 页。

评论

0赞 russellpierce 9/25/2014
Смотритетакже: stats.stackexchange.com/questions/55501/...
0赞 Sibbs Gambling 5/27/2016
很棒的答案!后续问题:这是否也适用于模型 1 的 $\beta_1$ 和模型 2 的 $\beta_2$ 的线性组合?比如,$$Z=\frac{A\beta_1-B\beta_2}{\sqrt{(\text{SE}A\beta_1)^2+(\text{SE}B\beta_2)^2}}$$
4赞 Sibbs Gambling 5/27/2016
我还注意到这篇论文讨论了一个模型嵌套在另一个模型中的情况,并且两个模型的 DV 是相同的。如果不满足这两个条件怎么办?相反,我有两个模型的设计矩阵是相同的,但它们具有不同的 DV。这个公式仍然适用吗?多谢!
1赞 russellpierce 6/2/2016
@SibbsGambling:你可能想把这个问题本身作为一个问题来引起更多的关注。
1赞 Richard Hardy 10/17/2019
乍一看,这看起来像是 coffeinjunky 在答案中暗示的 SUR 解决方案的一个特例。这是一个特例,因为 $\beta_1$ 和 $\beta_2$ 的估计变量之间的协方差被隐式假定为零。我想知道这是否普遍合理。为了安全起见,我会选择更通用的解决方案,而不是咖啡因瘾君子。这让我想知道为什么这是公认的答案,显然是票数最多的。
8赞 Alexandre C-L 7/12/2019 #3
  • 当回归来自两个不同的样本时,您可以假设:$Var(\beta_1-\beta_2)=Var(\beta_1)+Var(\beta_2)$,这导致了另一个答案中提供的公式。

  • 但是您的问题与 $covar(\beta_1,\beta_2) \neq 0$ 的情况完全相关。在这种情况下,看似无关的方程似乎是最普遍的情况。 然而,它将提供与原始方程不同的系数,这可能不是您想要的。

  • (Clogg, C. C., Petkova, E., & Haritou, A. (1995)。比较模型间回归系数的统计方法。美国社会学杂志, 100(5), 1261-1293.在嵌套方程的特殊情况下给出答案(即要获得第二个方程,请考虑第一个方程并添加一些解释变量) 他们说这很容易实施。

  • 如果我很好地理解它,在这种特殊情况下,也可以实现 Haussman 测试。主要区别在于,他们的检验认为第二个(完整)方程为真,而豪斯曼检验认为第一个方程为真。

  • 请注意,Clogg et al (1995) 不适合面板数据。但他们的测试已被(Yan,J.,Aseltine Jr,RH和Harel,O.(2013)推广。比较聚类数据的嵌套线性模型与广义估计方程之间的回归系数。教育与行为统计杂志, 38(2), 172-189.使用 R 语言提供的包:geepack 请参见:https://www.jstor.org/stable/pdf/41999419.pdf?refreqid=excelsior%3Aa0a3b20f2bc68223edb59e3254c234be&seq=1

和(对于 R 包):https://cran.r-project.org/web/packages/geepack/index.html

0赞 GSA 3/26/2023 #4

使用一些数据,以下是如何使用Ray Paternoster等人(1998)引用的Clifford Clogg等人(1995)的论文。我有一个小脚本,可以改进它来做到这一点。

这假设您正在使用 并且您有两组回归系数,您已从模型中提取到两个数据帧中,如下所示。我已将输出截断为仅与此插图相关的输出:R language

df1 = model1$coefficients
df2 = model2$coefficients

df1 = data.frame(
  estimate = c(15.2418519, 2.2215987, 0.3889724, 0.5289710),
  std.error = c(1.0958919, 0.2487793, 0.1973446, 0.1639074),
  row.names = c('(Intercept)', 'psychoticism', 'extraversion', 'neuroticism')
  ); df1

df2 = data.frame(
  estimate = c(17.2373874, 0.8350460, -0.3714803, 1.0382513),
  std.error = c(1.0987151, 0.2494201, 0.1978530, 0.1643297),
  row.names = c('(Intercept)', 'psychoticism', 'extraversion', 'neuroticism')
); df2

下一步是遍历列并比较系数。该函数还假设您正在比较两个模型之间的所有系数。如果不是这种情况,您可以根据需要修改脚本。

函数中的计算是以分步方式完成的,因此很容易遵循 Clogg 等人 (1995) 提供的公式。同样,我已经自由地评论了它,所以很容易跟上。无论如何,下面是脚本

compare_coefs <- function(.data1, .data2){
  
  # imports map_dbl() and pluck() functions from purrr library
  import::here(map_dbl, pluck, .from = purrr)  
  
  # extract the relevant data
  b1 = map_dbl(.data1[-1, 1], pluck)     #get reg. coefs for model 1
  se1 = map_dbl(.data1[-1, 2], pluck)    #get std errors for model 1
  
  b2 = map_dbl(.data2[-1, 1], pluck)     #get reg. coefs for model 2
  se2 = map_dbl(.data2[-1, 2], pluck)    #get std. errors for model 2
  
  # Clogg et al. (1995) formula as cited by Ray Paternoster et al. (1998)
  b = b1 - b2
  s1 = se1^2
  s2 = se2^2
  sc = s1 + s2
  v = b / sqrt(sc)
  
  data.frame(diff=b, zdiff=v, `p-value`=format(2*pnorm(-abs(v)), scientific=FALSE))
  
  }

注意

在这个例子中,我比较了人格特征对两个犯罪指标的影响。具体来说,我想调查人格特征的影响(回归系数)在这两个指标上是否相同。