Ok, spójrzmy na twoją sytuację. Masz w zasadzie dwie regresje (APD = średnica przednio-tylna, NOL = długość nosowo-potyliczna, HL = długość ramienia):
- A P.D = β0 , 1+ β1 , 1⋅ N.O L
- H.L = β0 , 2+ β1 , 2⋅ N.O L
Aby przetestować hipotezę , możesz wykonać następujące czynności:β1 , 1= β1 , 2
- Yn e w
- Xn e w
- re
- Yn e wXn e wre
Spójrzmy na przykład z gotowymi danymi (w 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
Xn e wdummy.var
x.new:dummy.var
βx.new−βx.new×dummy.var15−20=−520
Ostrzeżenie: Działa to tylko wtedy, gdy średnica przednio-tylna i długość nosowo-potyliczna (dwie zmienne zależne) są niezależne. W przeciwnym razie może się to bardzo skomplikować.
EDYTOWAĆ
Te dwa posty na stronie dotyczą tego samego pytania: pierwszego i drugiego .