Il existe un éventail de possibilités décrites par JW Gillard dans Un aperçu historique de la régression linéaire avec des erreurs dans les deux variables
Si vous n'êtes pas intéressé par les détails ou les raisons de choisir une méthode sur une autre, rendez - vous avec le plus simple, ce qui est de tracer la ligne à travers le centre de gravité avec une pente de s = de la y / s x , à savoir le rapport des écarts-types observés (en faisant le signe de la pente le même que le signe de la covariance de x et y ); comme vous pouvez travailler, cela donne une interception sur la y axe des x de α = ˉ y - ß ˉ x .(x¯,y¯)β^=sy/sxxyyα^=y¯−β^x¯.
Les mérites de cette approche particulière sont
- il donne la même ligne comparant contre y que y contre x ,xyyx
- il est invariant à l'échelle, vous n'avez donc pas à vous soucier des unités,
- il se situe entre les deux droites de régression linéaire ordinaires
- il les croise là où ils se croisent au centre de gravité des observations, et
- c'est très facile à calculer.
La pente est la moyenne géométrique des pentes des deux pentes de régression linéaire ordinaire. C'est aussi ce que vous obtiendriez si vous standardisiez les observations et y , traciez une ligne à 45 ° (ou 135 ° s'il y a une corrélation négative), puis dépanalisiez la ligne. Cela pourrait également être considéré comme équivalent à faire une supposition implicite que les variances des deux ensembles d'erreurs sont proportionnelles aux variances des deux ensembles d'observations; pour autant que je sache, vous prétendez ne pas savoir de quelle manière cela est faux.xy
YXXY
X0 <- 1600:3600
Y0 <- 5*X0 + 700
X1 <- X0 + 400*rnorm(2001)
Y1 <- Y0 + 2000*rnorm(2001)
slopeOLSXY <- lm(Y1 ~ X1)$coefficients[2] #OLS slope of Y on X
slopeOLSYX <- 1/lm(X1 ~ Y1)$coefficients[2] #Inverse of OLS slope of X on Y
slopesimple <- sd(Y1)/sd(X1) *sign(cov(X1,Y1)) #Simple slope
c(slopeOLSXY, slopeOLSYX, slopesimple) #Show the three slopes
plot(Y1~X1)
abline(mean(Y1) - slopeOLSXY * mean(X1), slopeOLSXY, col="red")
abline(mean(Y1) - slopeOLSYX * mean(X1), slopeOLSYX, col="blue")
abline(mean(Y1) - slopesimple * mean(X1), slopesimple, col="green")