¿Cómo comparar dos pendientes de regresión para un predictor en dos resultados diferentes?

10

Necesito comparar dos pendientes de regresión donde:

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

¿Cómo puedo comparar b1 y b2?

O en el lenguaje de mi ejemplo específico en roedores, quiero comparar

antero-posterior diameter ~  a + b1 * humeral length   
de naso-occipital length  ~  a + b2 * humeral length 
Dra. Alejandra Echeverria
fuente
2
Calcule un modelo de regresión con ambas variables MÁS la interacción de las dos variables (longitud humeral diámetro anteroposterior). La interacción prueba el supuesto de paralelismo de las pendientes de las dos variables. Si el término de interacción es significativo, las pendientes son diferentes. ×
COOLSerdash
¡¡Gracias!! Pero la longitud humeral y el diámetro anteroposterior del húmero son DV y la longitud naso-occipital es la IV. ¿Puedo ejecutar el análisis como sugieres?
Dra.
1
@ Dra.AlejandraEcheverria ¿Quiere decir que tiene un modelo de regresión lineal con dos variables independientes y que desea probar la igualdad de los dos coeficientes en las variables independientes, o tiene dos modelos de regresión lineal simples y desea comparar el coeficientes en los dos modelos?
Graeme Walsh
1
Estimado @Graeme Walsh, tengo dos modelos simples de regresión lineal y quiero comparar los coeficientes entre los dos modelos.
Dra.

Respuestas:

11

Bien, veamos tu situación. Tiene básicamente dos regresiones (APD = diámetro anteroposterior, NOL = longitud naso-occipital, HL = longitud humeral):

  1. UNAPAGre=β0 0,1+β1,1norteOL
  2. HL=β0 0,2+β1,2norteOL

Para probar la hipótesis , puede hacer lo siguiente:β1,1=β1,2

  1. Cree una nueva variable dependiente ( ) simplemente agregando APD a HLYnortemiw
  2. Cree una nueva variable independiente agregando NOL a sí mismo ( ) (es decir, duplicando NOL)Xnortemiw
  3. Cree una variable ficticia ( ) que sea 1 si los datos provienen del segundo conjunto de datos (con HL) y 0 si los datos provienen del primer conjunto de datos (APD).re
  4. Calcule la regresión con como variable dependiente, y los efectos principales y la interacción entre y la variable ficticia como variables explicativas. EDIT @Jake Westfall señaló que el error estándar residual podría ser diferente para las dos regresiones para cada DV. Jake proporcionó la respuesta que se ajusta a un modelo generalizado de mínimos cuadrados (GLS) que permite que el error estándar residual difiera entre las dos regresiones. X n e w DYnortemiwXnortemiwre

Veamos un ejemplo con datos inventados (en 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

Nota: La intersección y la pendiente para son exactamente las mismas que en la primera regresión (mod1). El coeficiente de denota la diferencia entre la intersección de las dos regresiones. Además: la desviación estándar residual de la segunda regresión se estimó mayor que la DE de la primera (aproximadamente 1.5 veces mayor). Esto es exactamente lo que hemos especificado en la generación de los datos (2 vs. 3). Ya casi llegamos: el coeficiente del término de interacción ( ) prueba la igualdad de las pendientes. Aquí la pendiente de la segunda regresión (mod2) es aproximadamente o aproximadamente . La diferencia deXnortemiwdummy.varx.new:dummy.varβX.nortemiw-βX.nortemiw×retumetrometroy.vunar15-20=-5 520es exactamente lo que hemos especificado cuando generamos los datos. Si trabaja en Stata, hay una buena explicación aquí.

Advertencia: esto solo funciona si el diámetro anteroposterior y la longitud nasoocipital (las dos variables dependientes) son independientes. De lo contrario, puede ser muy complicado.

EDITAR

Estas dos publicaciones en el sitio abordan la misma pregunta: primero y segundo .

revs COOLSerdash
fuente
Solo para evitar confusiones, parece que tienes NOL y HL mezclados. HL fue el predictor, NOL fue el segundo DV (y APD fue el primer DV, como usted señaló). Aunque acabo de darme cuenta de que el póster misma cambió el estado de sus variables en un comentario ...
Patrick Coulombe
@Patrick Coulombe Gracias por señalarlo. No estaba claro por su comentario de ayer.
COOLSerdash
@PatrickCoulombe Pensándolo bien: creo que Jeromy Anglim no entendió el comentario de Alejandra e intercambió las variables.
COOLSerdash
1
Esta solución parece razonable, pero estoy un poco preocupado por el hecho de que en su modelo combinado / interactivo, se supone que la varianza residual es igual en ambos niveles dummy.var, es decir, para ambos DV. Dependiendo de cuáles sean los DV en el contexto original, es posible que las variaciones residuales sean radicalmente diferentes en las regresiones separadas de cada DV. Me pregunto si sería mejor usar el mismo enfoque básico que propusiste, pero con un glsmodelo en el que estimamos diferentes variaciones residuales para cada DV. ¿Alguna idea sobre esto?
Jake Westfall
1
@COOLSerdash Claro, se vería así:library(nlme); mod4 <- gls(y.new~x.new*dummy.var, weights=varIdent(form= ~1 | dummy.var))
Jake Westfall