Istnieje szereg możliwości opisanych przez JW Gillarda w historycznym przeglądzie regresji liniowej z błędami w obu zmiennych
Jeśli nie interesują Cię szczegóły ani powody, dla których wybierasz jedną metodę zamiast drugiej, po prostu wybierz najprostszą, czyli narysuj linię przez środek ciężkości z nachyleniem , tj. stosunek zaobserwowanych odchyleń standardowych (czyniąc znak nachylenia tym samym co znak kowariancji i ); jak zapewne możesz się poćwiczyć, daje to przecięcie osiβ = y r / y x x Y Y α = ˉ Y - β ˉ x .(x¯,y¯)β^=sy/sxxyyα^=y¯−β^x¯.
Zalety tego konkretnego podejścia są następujące
- daje tę samą linię porównując względem jak względem ,y y xxyyx
- jest niezmienny w skali, więc nie musisz się martwić o jednostki,
- leży między dwiema zwykłymi liniowymi liniami regresji
- przecina je tam, gdzie przecinają się w środku ciężkości obserwacji, i
- bardzo łatwo to obliczyć.
Nachylenie jest średnią geometryczną nachyleń dwóch zwykłych nachyleń regresji liniowej. Jest też, co można uzyskać, jeśli standaryzowany przez i obserwacje, narysował linię pod kątem 45 ° (lub 135 °, jeśli istnieje korelacja ujemna), a następnie de-standaryzowany linię. Można to również uznać za równoważne z domniemanym założeniem, że wariancje dwóch zestawów błędów są proporcjonalne do wariancji dwóch zestawów obserwacji; o ile mogę powiedzieć, twierdzisz, że nie wiesz, w którą stronę jest to źle.yxy
Oto kod R do zilustrowania: czerwona linia na wykresie to regresja OLS dla na , niebieska linia to regresja OLS dla na , a zielona linia to ta prosta metoda. Pamiętaj, że nachylenie powinno wynosić około 5.X X YYXXY
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")