Існує цілий ряд можливостей, описаних JW Gillard в Історичному огляді лінійної регресії з помилками в обох змінних.
Якщо вас не цікавлять деталі чи причини вибору одного методу над іншим, просто перейдіть до найпростішого, який полягає в проведенні лінії через центр з нахилом , тобто відношення спостережуваних стандартних відхилень (що робить знак нахилу таким же, як знак коваріації і ); як ви, напевно, можете розробити, це дає перехоплення на -осі& beta ; = s у / и х х у у α = ˉ у - & beta ; ˉ х .(x¯,y¯)β^=sy/sxxyyα^=y¯−β^x¯.
Заслуги цього конкретного підходу є
- він дає той самий рядок, порівнюючи проти як проти ,y y xxyyx
- це інваріантність масштабів, тому вам не потрібно турбуватися про одиниці,
- він лежить між двома звичайними лінійними регресійними лініями
- вона перетинає їх там, де вони перетинають один одного в центрі спостережень, і
- це дуже легко обчислити.
Ухил - це геометричне середнє значення схилів двох звичайних схилів лінійної регресії. Це також, що ви отримаєте, якби стандартизували спостереження і , намалювали лінію на 45 ° (або 135 °, якщо є негативна кореляція), а потім де-стандартизували лінію. Це також можна розглядати як рівнозначне неявним припущенням, що дисперсії двох наборів помилок пропорційні дисперсії двох наборів спостережень; наскільки я можу сказати, ви стверджуєте, що не знаєте, в який спосіб це неправильно.уxy
Ось декілька код R для ілюстрації: червона лінія на графіку - це OLS регресія на , синя лінія - OLS регресія на , а зелена лінія - це простий метод. Зверніть увагу, що нахил повинен бути приблизно 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")