Как сравнить два наклона регрессии для одного предиктора для двух разных результатов?

10

Мне нужно сравнить два наклона регрессии, где:

$
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 
Ог. Алехандра Эчеверрия
источник
2
Рассчитать регрессионную модель с обеими переменными плюс взаимодействие двух переменных (длина плеча переднезаднего диаметра). Взаимодействие проверяет предположение о параллельности наклонов двух переменных. Если член взаимодействия является значительным, наклоны разные. ×
COOLSerdash
Спасибо!! Но длина плеча и переднезадний диаметр плечевой кости составляют DV, а носо-затылочная длина - IV. Могу ли я провести анализ, как вы предлагаете?
Дра.
1
@ Dra.AlejandraEcheverria Вы имеете в виду, что у вас есть одна модель линейной регрессии с двумя независимыми переменными и что вы хотите проверить равенство двух коэффициентов на независимых переменных, или у вас есть две простые модели линейной регрессии, и вы хотите сравнить коэффициенты по двум моделям?
Грэм Уолш
1
Уважаемый @ Грэм Уолш, у меня есть две простые модели линейной регрессии, и я хочу сравнить коэффициенты по двум моделям.
Дра.

Ответы:

11

Хорошо, давайте посмотрим на вашу ситуацию. У вас в основном две регрессии (APD = переднезадний диаметр, NOL = назо-затылочная длина, HL = длина плеча):

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

Чтобы проверить гипотезу , вы можете сделать следующее:β1,1=β1,2

  1. Ynew
  2. Xnew
  3. D
  4. YnewXnewD

Давайте посмотрим на пример с подготовленными данными (в 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

Xnewdummy.varx.new:dummy.varβx.newβx.new×dummy.var1520=520

Предупреждение: Это работает, только если переднезадний диаметр и назо-затылочная длина (две зависимые переменные) независимы. Иначе это может стать очень сложным.

РЕДАКТИРОВАТЬ

Эти два поста на сайте касаются одного и того же вопроса: первый и второй .

COOLSerdash
источник
Просто чтобы избежать путаницы, похоже, что вы перепутали NOL и HL. HL был предиктором, NOL был вторым DV (а APD был первым DV, как вы указали). Хотя я только что заметил, что сам плакат изменил статус своих переменных в комментарии ...
Патрик Куломб
@Patrick Coulombe Спасибо за указание на это. Это не было ясно из ее комментария вчера.
COOLSerdash
@PatrickCoulombe Вторую мысль: я думаю, что Джероми Англим неправильно понял комментарий Алехандры и обменялся переменными.
COOLSerdash
1
Это решение кажется разумным, но я немного обеспокоен тем фактом, что в вашей комбинированной / интерактивной модели остаточная дисперсия предполагается равной на обоих уровнях dummy.var, то есть для обоих DV. В зависимости от того, что DV в исходном контексте, возможно, что остаточные отклонения радикально отличаются в отдельных регрессиях каждого DV. Интересно, будет ли лучше использовать тот же базовый подход, который вы предложили, но с glsмоделью, в которой мы оцениваем различные остаточные отклонения для каждого DV. Есть мысли по этому поводу?
Джейк Уэстфолл,
1
@COOLSerdash Конечно, это будет выглядеть примерно так:library(nlme); mod4 <- gls(y.new~x.new*dummy.var, weights=varIdent(form= ~1 | dummy.var))
Джейк Уэстфолл