Ich frage mich, ob mir etwas Offensichtliches fehlt, aber können Sie dies nicht statistisch mit ANCOVA tun? Ein wichtiger Punkt ist , dass die Pisten in den beiden Regressionen geschätzt werden mit Fehlern. Sie sind Schätzungen der Steigungen in der Gesamtbevölkerung. Wenn es darum geht, ob die beiden Regressionslinien in der Grundgesamtheit parallel sind oder nicht, ist es nicht sinnvoll, direkt mit zu vergleichen, um eine genaue Äquivalenz zu erhalten. Beide unterliegen Fehlern / Unsicherheiten, die berücksichtigt werden müssen.a 2ein1ein2
Wenn wir dies unter statistischen Gesichtspunkten betrachten und die Daten zu und für beide Datensätze auf sinnvolle Weise kombinieren können (dh und in beiden Sätzen werden aus den beiden Populationen mit ähnlichen Bereichen für die beiden gezogen Variablen Es ist nur die Beziehung zwischen ihnen, die in den beiden Populationen unterschiedlich ist. Dann können wir die folgenden zwei Modelle anpassen:y x yxyxy
y^= b0+ b1x + b2G
und
y^= b0+ b1x + b2G+ b3x g
Wobei die Modellkoeffizienten sind und eine Gruppierungsvariable / ein Gruppierungsfaktor ist, der angibt, zu welchem Datensatz jede Beobachtung gehört. gbichG
Wir können eine ANOVA-Tabelle oder ein F-Verhältnis verwenden, um zu testen, ob das zweite, komplexere Modell besser zu den Daten passt als das einfachere Modell. Das einfachere Modell besagt, dass die Steigungen der beiden Linien gleich sind ( ), die Linien jedoch um einen Betrag voneinander versetzt sind .b 2b1b2
Das komplexere Modell beinhaltet eine Wechselwirkung zwischen der Steigung der Linie und der Gruppierungsvariablen. Wenn der Koeffizient für diesen Interaktionsterm signifikant von Null abweicht oder das ANOVA / F-Verhältnis angibt, dass das komplexere Modell besser zu den Daten passt, müssen wir die Nullhypothese ablehnen, dass zwei Linien parallel sind.
Hier ist ein Beispiel in R unter Verwendung von Dummy-Daten. Erstens Daten mit gleichen Steigungen:
set.seed(2)
samp <- factor(sample(rep(c("A","B"), each = 50)))
d1 <- data.frame(y = c(2,5)[as.numeric(samp)] + (0.5 * (1:100)) + rnorm(100),
x = 1:100,
g = samp)
m1 <- lm(y ~ x * g, data = d1)
m1.null <- lm(y ~ x + g, data = d1)
anova(m1.null, m1)
Welches gibt
> anova(m1.null, m1)
Analysis of Variance Table
Model 1: y ~ x + g
Model 2: y ~ x * g
Res.Df RSS Df Sum of Sq F Pr(>F)
1 97 122.29
2 96 122.13 1 0.15918 0.1251 0.7243
Dies zeigt an, dass wir die Nullhypothese gleicher Steigungen in dieser Datenstichprobe nicht ablehnen. Natürlich möchten wir uns versichern, dass wir über genügend Leistung verfügen, um einen Unterschied zu erkennen, wenn es tatsächlich einen gibt, damit wir nicht fälschlicherweise die Null ablehnen, weil unsere Stichprobengröße für den erwarteten Effekt zu klein war.
Jetzt mit verschiedenen Pisten.
set.seed(42)
x <- seq(1, 100, by = 2)
d2 <- data.frame(y = c(2 + (0.5 * x) + rnorm(50),
5 + (1.5 * x) + rnorm(50)),
x = x,
g = rep(c("A","B"), each = 50))
m2 <- lm(y ~ x * g, data = d2)
m2.null <- lm(y ~ x + g, data = d2)
anova(m2.null, m2)
Welches gibt:
> anova(m2.null, m2)
Analysis of Variance Table
Model 1: y ~ x + g
Model 2: y ~ x * g
Res.Df RSS Df Sum of Sq F Pr(>F)
1 97 21132.0
2 96 103.8 1 21028 19439 < 2.2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Hier haben wir wesentliche Beweise gegen die Nullhypothese und können sie daher zugunsten der Alternative ablehnen (mit anderen Worten, wir lehnen die Hypothese ab, dass die Steigungen der beiden Linien gleich sind).
Die Interaktionsterme in den beiden von mir angepassten Modellen ( ) geben den geschätzten Unterschied in den Steigungen für die beiden Gruppen an. Für das erste Modell ist die Schätzung des Unterschieds in den Steigungen gering (~ 0,003).b3x g
> coef(m1)
(Intercept) x gB x:gB
2.100068977 0.500596394 2.659509181 0.002846393
und ein Test dazu würde die Nullhypothese, dass dieser Unterschied in den Steigungen 0 ist, nicht ablehnen können:t
> summary(m1)
Call:
lm(formula = y ~ x * g, data = d1)
Residuals:
Min 1Q Median 3Q Max
-2.32886 -0.81224 -0.01569 0.93010 2.29984
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 2.100069 0.334669 6.275 1.01e-08 ***
x 0.500596 0.005256 95.249 < 2e-16 ***
gB 2.659509 0.461191 5.767 9.82e-08 ***
x:gB 0.002846 0.008047 0.354 0.724
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 1.128 on 96 degrees of freedom
Multiple R-squared: 0.9941, Adjusted R-squared: 0.9939
F-statistic: 5347 on 3 and 96 DF, p-value: < 2.2e-16
Wenn wir uns dem Modell zuwenden, das an den zweiten Datensatz angepasst ist, bei dem wir die Steigungen für die beiden Gruppen unterschiedlich gemacht haben, sehen wir, dass der geschätzte Unterschied in den Steigungen der beiden Linien ~ 1 Einheit beträgt.
> coef(m2)
(Intercept) x gB x:gB
2.3627432 0.4920317 2.8931074 1.0048653
Die Steigung für Gruppe "A" beträgt ~ 0,49 ( x
in der obigen Ausgabe), während wir die Steigung für Gruppe "B" zur Steigung von Gruppe "A" addieren müssen, um die Steigung für Gruppe "B" zu erhalten. ;; ~ 0,49 + ~ 1 = ~ 1,49. Dies ist ziemlich nahe an der angegebenen Steigung für Gruppe "B" von 1,5. Ein Test für diese Steigungsdifferenz zeigt auch an, dass die Schätzung für die Differenz von 0 weg begrenzt ist:t
> summary(m2)
Call:
lm(formula = y ~ x * g, data = d2)
Residuals:
Min 1Q Median 3Q Max
-3.1962 -0.5389 0.0373 0.6952 2.1072
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 2.362743 0.294220 8.031 2.45e-12 ***
x 0.492032 0.005096 96.547 < 2e-16 ***
gB 2.893107 0.416090 6.953 4.33e-10 ***
x:gB 1.004865 0.007207 139.424 < 2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 1.04 on 96 degrees of freedom
Multiple R-squared: 0.9994, Adjusted R-squared: 0.9994
F-statistic: 5.362e+04 on 3 and 96 DF, p-value: < 2.2e-16