如何比较两个不同结果的一个预测变量的两个回归斜率?

机器算法验证 回归 回归系数
2022-03-01 15:17:57

我需要比较两个回归斜率,其中:

$
y_1 ~ a + b_1x
y_2 ~ a + b_2x
$

如何比较 b1 和 b2?

或者用我在啮齿动物中的具体例子的语言,我想比较

antero-posterior diameter ~  a + b1 * humeral length   
de naso-occipital length  ~  a + b2 * humeral length 
1个回答

好吧,让我们看看你的情况。您基本上有两个回归(APD = 前后径,NOL = 鼻枕长度,HL = 肱骨长度):

  1. APD=β0,1+β1,1NOL
  2. HL=β0,2+β1,2NOL

检验假设β1,1=β1,2,您可以执行以下操作:

  1. 创建一个新的因变量 (Ynew) 只需将APD附加到 HL
  2. 通过将NOL附加到自身来创建一个新的自变量(Xnew)(即复制 NOL)
  3. 创建一个虚拟变量 (D) 如果数据来自第二个数据集(使用 HL),则为 1,如果数据来自第一个数据集 (APD),则为 0。
  4. 计算回归Ynew作为因变量,主效应和相互作用Xnew和虚拟变量D作为解释变量。编辑@Jake Westfall 指出,每个 DV 的两个回归的残差标准误差可能不同。Jake 提供的答案是拟合广义最小二乘模型 (GLS),该模型允许残差标准误差在两个回归之间有所不同。

让我们看一个包含虚构数据的示例(in R):

# Create artificial data

library(nlme) # needed for the generalized least squares

set.seed(1500)

NOL <- rnorm(10000,100,12)
APD <- 10 + 15*NOL+ rnorm(10000,0,2)
HL <- - 2  - 5*NOL+ rnorm(10000,0,3) 

mod1 <- lm(APD~NOL)
mod1

Coefficients:
(Intercept)          NOL
      10.11        15.00

mod2 <- lm(HL~NOL)
mod2

Coefficients:
(Intercept)          NOL
      -1.96        -5.00

# Combine the dependent variables and duplicate the independent variable

y.new <- c(APD, HL)
x.new <- c(NOL, NOL)

# Create a dummy variable that is 0 if the data are from the first data set (APD) and 1 if they are from the second dataset (HL)

dummy.var <- c(rep(0, length(APD)), rep(1, length(HL)))

# Generalized least squares model allowing for differend residual SDs for each regression (strata of dummy.var)

gls.mod3 <- gls(y.new~x.new*dummy.var, weights=varIdent(form=~1|dummy.var))

Variance function:
 Structure: Different standard deviations per stratum
 Formula: ~1 | dummy.var 
 Parameter estimates:
       0        1 
1.000000 1.481274 

Coefficients:
                    Value  Std.Error   t-value p-value
(Intercept)      10.10886 0.17049120    59.293       0
x.new            14.99877 0.00169164  8866.430       0
dummy.var       -12.06858 0.30470618   -39.607       0
x.new:dummy.var -19.99917 0.00302333 -6614.939       0

注:截距和斜率为Xnew与第一个回归 (mod1) 中的完全相同。的系数dummy.var表示两个回归的截距之差。此外:第二次回归的残差标准差估计大于第一次回归的 SD(大约 1.5 倍大)。正是我们在生成数据时指定的(2 对 3)。我们快到了:交互项 ( x.new:dummy.var) 的系数测试斜率的相等性。这里第二次回归(mod2)的斜率约为βx.newβx.new×dummy.var或大约1520=5. 的区别20正是我们在生成数据时指定的。如果你在 Stata 工作,这里有一个很好的解释

警告:这只有在前后径和鼻枕长度(两个因变量)是独立的情况下才有效。否则它会变得非常复杂。

编辑

该网站上的这两个帖子处理相同的问题:Firstsecond