La regressione standard minimizza la distanza verticale tra i punti e la linea, quindi il passaggio tra le 2 variabili minimizzerà ora la distanza orizzontale (dato lo stesso diagramma a dispersione). Un'altra opzione (che prende diversi nomi) è quella di ridurre al minimo la distanza perpendicolare, questo può essere fatto usando i componenti principali.
Ecco un codice R che mostra le differenze:
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'))
Per cercare valori anomali puoi semplicemente tracciare i risultati dell'analisi dei componenti principali.
Potresti anche voler guardare:
Bland and Altman (1986), Metodi statistici per valutare l'accordo tra due metodi di misurazione clinica. Lancetta, pp 307-310