Есть ряд возможностей, описанных Дж. В. Гиллардом в «Историческом обзоре линейной регрессии с ошибками в обеих переменных».
Если вы не заинтересованы в деталях или причины для выбора одного метода над другим, просто идти с самым простым, что нарисовать линию через центр тяжести с угловым коэффициентом р = S у / s х , т.е. отношение наблюдаемых стандартных отклонений (делая знак наклона таким же, как знак ковариации x и y ); как вы , вероятно , можете работать, это дает перехват на у оси Оу из альфа = ··· у - & beta ; ˉ х .(x¯,y¯)β^=sy/sxxyyα^=y¯−β^x¯.
Преимущества этого конкретного подхода
- это дает ту же строку, сравнивая против у, как у против х ,xyyx
- он не зависит от масштаба, поэтому вам не нужно беспокоиться о единицах,
- он лежит между двумя обычными линиями линейной регрессии
- он пересекает их там, где они пересекаются в центре тяжести наблюдений, и
- это очень легко рассчитать.
Наклон - это среднее геометрическое наклона двух обычных наклонов линейной регрессии. Это также то, что вы получили бы, если бы вы стандартизировали наблюдения и y , нарисовали линию под углом 45 ° (или 135 °, если есть отрицательная корреляция), а затем отменили стандартизацию линии. Это также можно рассматривать как эквивалентность неявному предположению, что дисперсии двух наборов ошибок пропорциональны дисперсиям двух наборов наблюдений; насколько я могу судить, вы утверждаете, что не знаете, каким образом это неправильно.xy
Вот некоторый код R для иллюстрации: красная линия на графике - это регрессия OLS на X , синяя линия - регрессия OLS X на Y , а зеленая линия - это простой метод. Обратите внимание, что уклон должен быть около 5.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")