Стандартна регресія мінімізує вертикальну відстань між точками та лінією, тому перемикання двох змінних тепер мінімізує горизонтальну відстань (з огляду на ту саму розсіювач). Інший варіант (який має кілька назв) - мінімізувати перпендикулярну відстань, це можна зробити за допомогою принципових компонентів.
Ось декілька код R, який показує відмінності:
library(MASS)
tmp <- mvrnorm(100, c(0,0), rbind( c(1,.9),c(.9,1)) )
plot(tmp, asp=1)
fit1 <- lm(tmp[,1] ~ tmp[,2]) # horizontal residuals
segments( tmp[,1], tmp[,2], fitted(fit1),tmp[,2], col='blue' )
o <- order(tmp[,2])
lines( fitted(fit1)[o], tmp[o,2], col='blue' )
fit2 <- lm(tmp[,2] ~ tmp[,1]) # vertical residuals
segments( tmp[,1], tmp[,2], tmp[,1], fitted(fit2), col='green' )
o <- order(tmp[,1])
lines( tmp[o,1], fitted(fit2)[o], col='green' )
fit3 <- prcomp(tmp)
b <- -fit3$rotation[1,2]/fit3$rotation[2,2]
a <- fit3$center[2] - b*fit3$center[1]
abline(a,b, col='red')
segments(tmp[,1], tmp[,2], tmp[,1]-fit3$x[,2]*fit3$rotation[1,2], tmp[,2]-fit3$x[,2]*fit3$rotation[2,2], col='red')
legend('bottomright', legend=c('Horizontal','Vertical','Perpendicular'), lty=1, col=c('blue','green','red'))
Щоб шукати інших людей, ви можете просто побудувати результати аналізу основних компонентів.
Ви також можете подивитися:
Bland and Altman (1986), Статистичні методи оцінки згоди між двома методами клінічного вимірювання. Ланцет, с. 307-310