36 votos

¿Cómo realizar la regresión ortogonal (mínimos cuadrados totales) a través de PCA?

Siempre uso lm() en R para realizar una regresión lineal de$y$ en$x$. Esa función devuelve un coeficiente$\beta$ tal que$$y = \beta x.$$

Today I learned about total least squares and that princomp() function (principal component analysis, PCA) can be used to perform it. It should be good for me (more accurate). I have done some tests using princomp(), like:

r <- princomp( ~ x + y)

My problem is: how to interpret its results? How can I get the regression coefficient? By "coefficient" I mean the number $ \ beta$ that I have to use to multiply the $ x$ value to give a number close to $ y $.

11voto

Juha Pohjalainen Puntos 439

Basado en la implementación ingenua de GNU Octave que se encuentra aquí , algo como esto podría funcionar (un grano de sal, es tarde).

 tls <- function(A, b){

  n <- ncol(A)
  C <- cbind(A, b)

  V <- svd(C)$v
  VAB <- V[1:n, (n+1):ncol(V)]
  VBB <- V[(n+1):nrow(V), (n+1):ncol(V)]
  return(-VAB/VBB)
}

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X