提问人:coffeinjunky 提问时间:4/12/2014 最后编辑:coffeinjunky 更新时间:10/16/2023 访问量:121456
检验来自两个不同回归的系数相等性
Testing equality of coefficients from two different regressions
问:
这似乎是一个基本问题,但我刚刚意识到我实际上不知道如何从两个不同的回归中测试系数的相等性。谁能对此有所了解?
更正式地说,假设我运行了以下两个回归: $$ 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})$?
这让我在这里问了这个问题。这一定是一个标准程序/标准测试,但我找不到任何与这个问题足够相似的东西。所以,如果有人能给我指出正确的程序,我将不胜感激!
答:
对于有类似问题的人,让我提供一个简单的答案大纲。
诀窍是将两个方程设置为一个看似不相关的方程组,并联合估计它们。也就是说,我们将 $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) $
这将导致一个方差-协方差矩阵,该矩阵允许检验两个系数的相等性。
评论
expand =2, generate(indicator); generate y = cond(indicator, y2, y1); regress y i.indicator##c.X, vce(cluster id);
虽然这不是一个常见的分析,但它确实是一个有趣的分析。我将提供一种相当被接受的技术,它可能是等价的,也可能不是等价的(我会把它留给更好的人来评论)。
此方法是使用以下 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 页。
评论
当回归来自两个不同的样本时,您可以假设:$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
使用一些数据,以下是如何使用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))
}
注意
在这个例子中,我比较了人格特征对两个犯罪指标的影响。具体来说,我想调查人格特征的影响(回归系数)在这两个指标上是否相同。
评论