Siempre uso lm()
en R para realizar una regresión lineal de en . Esa función devuelve un coeficiente tal que
Hoy aprendí sobre mínimos cuadrados totales y esa princomp()
función (análisis de componentes principales, PCA) se puede utilizar para realizarla. Debería ser bueno para mí (más preciso). He hecho algunas pruebas usando princomp()
, como:
r <- princomp( ~ x + y)
Mi problema es: ¿cómo interpretar sus resultados? ¿Cómo puedo obtener el coeficiente de regresión? Por "coeficiente" me refiero al número que tengo que usar para multiplicar el valor de para dar un número cercano a .
Respuestas:
Mínimos cuadrados ordinarios versus mínimos cuadrados totales
Consideremos primero el caso más simple de una sola variable predictiva (independiente) . Por simplicidad, deje que x e y estén centrados, es decir, la intersección siempre es cero. La diferencia entre la regresión OLS estándar y la regresión TLS "ortogonal" se muestra claramente en esta figura (adaptada por mí) de la respuesta más popular en el hilo más popular en PCA:X X y
MCO se ajusta a la ecuación minimizando distancias al cuadrado entre los valores observados de Y y los valores predichos Y . TLS se ajusta a la misma ecuación al minimizar las distancias al cuadrado entre los puntos ( x , y ) y su proyección en la línea. En este caso más simple, la línea TLS es simplemente el primer componente principal de los datos 2D. Para encontrar β , haga PCA en los puntos , es decir, construya la matriz de covarianza y encuentre su primer vector propio ; entoncesy= βX y y^ ( x , y) β 2 × 2 Σ v = ( v x , v y ) β = v y / v x( x , y) 2 × 2 Σ v =( vX, vy) β= vy/ vX .
En Matlab:
En R:
Por cierto, esto dará paso a la pendiente correcta incluso si y no se centraron (porque las funciones integradas de PCA realizar automáticamente el centrado). Para recuperar la intersección, calcule .y β 0 = ˉ y - β ˉ xX y β0 0= y¯- βX¯
OLS vs. TLS, regresión múltiple
Dada una variable dependiente y muchas variables independientes (nuevamente, todas centradas para simplificar), la regresión se ajusta a una ecuaciónOLS hace el ajuste al minimizar los errores al cuadrado entre los valores observados de y los valores predichos . TLS hace el ajuste minimizando las distancias al cuadrado entre los puntos observados y los puntos más cercanos en el plano de regresión / hiperplano.x i y = β 1 x 1 + … + β p x p . y y ( x , y ) ∈ R p + 1y Xyo
¡Tenga en cuenta que ya no hay una "línea de regresión"! La ecuación anterior especifica un hiperplano : es un plano 2D si hay dos predictores, un hiperplano 3D si hay tres predictores, etc. Por lo tanto, la solución anterior no funciona: no podemos obtener la solución TLS tomando solo la primera PC (que es una linea). Aún así, la solución se puede obtener fácilmente a través de PCA.
Como antes, PCA se realiza en puntos . Esta rendimientos vectores propios en columnas de . Los primeros vectores propios definen un hiperplano dimensional que necesitamos; el último (número ) vector propio es ortogonal a él. La cuestión es cómo transformar la base de dada por el primer vectores propios en los coeficientes.p + 1 V p p H p + 1 v p + 1 H p β( x , y) p + 1 V pags pags H p + 1 vp + 1 H pags β
Observe que si establecemos para todo y solo , entonces , es decir, el vector se encuentra en el hiperplano . Por otro lado, sabemos que es ortogonal a él. Es decir, su producto punto debe ser cero:i ≠ k x k = 1 y = β k ( 0 , ... , 1 , ... , β k ) ∈ H H v p + 1 = ( v 1 , ... , v p + 1 )Xyo= 0 i ≠ k Xk= 1 y^= βk
En Matlab:
En R:
Nuevamente, esto producirá pendientes correctas incluso si e no estuvieran centradas (porque las funciones PCA integradas realizan automáticamente el centrado). Para recuperar la intersección, calcule .y β 0 = ˉ y - ˉ x βX y β0 0= y¯- x¯β
Como comprobación de cordura, observe que esta solución coincide con la anterior en caso de que solo haya un único predictor . De hecho, entonces el espacio es 2D, y por lo tanto, dado que el primer vector propio PCA es ortogonal al segundo (último), .( x , y ) v ( 1 ) y / v ( 1 ) x = - v ( 2 ) x / v ( 2 ) yX ( x , y) v( 1 )y/ v( 1 )X= - v( 2 )X/ v( 2 )y
Solución de forma cerrada para TLS
Sorprendentemente, resulta que hay una ecuación de forma cerrada para . El siguiente argumento está tomado del libro de Sabine van Huffel "Los mínimos cuadrados totales" (sección 2.3.2).β
Sea y las matrices de datos centradas. El último vector propio de PCA es un vector propio de la matriz de covarianza de con un valor propio . Si es un vector propio, entonces también lo es . Anotando la ecuación del vector propio:X y vp + 1 [ Xy ] σ2p + 1 - vp + 1/ vp + 1= ( β- 1 )⊤
Regresión múltiple multivariante
La misma fórmula puede generalizarse al caso multivariante, pero incluso para definir qué hace TLS multivariante, requeriría algo de álgebra. Ver Wikipedia en TLS . La regresión OLS multivariada es equivalente a un grupo de regresiones OLS univariadas para cada variable dependiente, pero en el caso TLS no es así.
fuente
Basado en la ingenua implementación de GNU Octave que se encuentra aquí , algo como esto podría funcionar (grano de sal, es tarde).
fuente
princomp
está ejecutando el análisis de componentes principales en lugar de la regresión total de mínimos cuadrados. Hasta donde yo sé, no hay función R ni paquete que haga TLS; a lo sumo hay regresión de Deming en MethComp .Sin embargo, trate esto como una sugerencia de que lo más probable es que no valga la pena.
fuente