Mi chiedo se mi manca qualcosa di ovvio, ma non potresti farlo statisticamente usando ANCOVA? Un problema importante è che le pendenze nelle due regressioni sono stimate con errori. Sono stime delle pendenze delle popolazioni in generale. Se la preoccupazione è se le due linee di regressione sono parallele o meno nella popolazione, allora non ha senso confrontare direttamente con per l'equivalenza esatta; sono entrambi soggetti a errori / incertezze che devono essere presi in considerazione.a 2un'1un'2
Se pensiamo a questo da un punto di vista statistico, e possiamo unire i dati ed per entrambi i set di dati in qualche modo significativo (cioè ed in entrambi i gruppi sono tratti dalle due popolazioni con intervalli simili per i due variabili è solo la relazione tra loro che è diversa nelle due popolazioni), quindi possiamo adattare i seguenti due modelli:y x yXyXy
y^= b0+ b1x + b2g
e
y^=b0+b1x+b2g+b3Xg
Dove sono i coefficienti del modello e è una variabile / fattore di raggruppamento, che indica a quale set di dati appartiene ciascuna osservazione. gBiog
Possiamo utilizzare una tabella ANOVA o un rapporto F per verificare se il secondo modello più complesso si adatta meglio ai dati rispetto al modello più semplice. Il modello più semplice afferma che le pendenze delle due linee sono uguali ( ) ma le linee sono sfalsate l'una dall'altra di un importo .b 2B1B2
Il modello più complesso include un'interazione tra la pendenza della linea e la variabile di raggruppamento. Se il coefficiente per questo termine di interazione è significativamente diverso da zero o il rapporto ANOVA / F indica che il modello più complesso si adatta meglio ai dati, allora dobbiamo respingere l'ipotesi Null che le due linee siano parallele.
Ecco un esempio in R con dati fittizi. Innanzitutto, i dati con pendenze uguali:
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)
Che dà
> 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
Indica che non riusciamo a respingere l'ipotesi nulla di pendenze uguali in questo campione di dati. Ovviamente, vorremmo assicurarci che avessimo il potere sufficiente per rilevare una differenza se ce n'era davvero una, in modo tale da non indurre erroneamente a rifiutare il valore nullo perché la dimensione del nostro campione era troppo piccola per l'effetto previsto.
Ora con diverse piste.
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)
Che dà:
> 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
Qui abbiamo prove sostanziali contro l'ipotesi nulla e quindi possiamo rifiutarla a favore dell'alternativa (in altre parole, rifiutiamo l'ipotesi che le pendenze delle due linee siano uguali).
I termini di interazione nei due modelli che ho montato ( ) forniscono la differenza stimata nelle pendenze per i due gruppi. Per il primo modello, la stima della differenza nelle pendenze è piccola (~ 0,003)B3xg
> coef(m1)
(Intercept) x gB x:gB
2.100068977 0.500596394 2.659509181 0.002846393
e un -test su ciò non rifiutare l'ipotesi nulla che questa differenza di piste è 0: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
Se passiamo al modello adattato al secondo set di dati, in cui abbiamo differenziato le pendenze per i due gruppi, vediamo che la differenza stimata nelle pendenze delle due linee è ~ 1 unità.
> coef(m2)
(Intercept) x gB x:gB
2.3627432 0.4920317 2.8931074 1.0048653
La pendenza per il gruppo "A" è ~ 0,49 ( x
nell'output di cui sopra), mentre per ottenere la pendenza per il gruppo "B" è necessario aggiungere le pendenze di differenza (dare dal termine di interazione ricordare) alla pendenza del gruppo "A" ; ~ 0.49 + ~ 1 = ~ 1.49. Questo è abbastanza vicino alla pendenza dichiarata per il gruppo "B" di 1,5. Un test su questa differenza di pendenze indica anche che la stima della differenza è limitata da 0: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