Ich benutze immer lm()
in R, um eine lineare Regression von auf durchzuführen . Diese Funktion gibt einen Koeffizienten so dass
Heute habe ich etwas über die kleinsten Fehlerquadrate gelernt und diese princomp()
Funktion (Hauptkomponentenanalyse, PCA) kann verwendet werden, um sie auszuführen. Es sollte gut für mich sein (genauer). Ich habe einige Tests durchgeführt mit princomp()
:
r <- princomp( ~ x + y)
Mein Problem ist: Wie interpretiere ich die Ergebnisse? Wie kann ich den Regressionskoeffizienten erhalten? Mit "Koeffizient" meine ich die Zahl , die ich verwenden muss, um den Wert zu multiplizieren , um eine Zahl in der Nähe von .
Antworten:
Ordentliche kleinste Quadrate vs. gesamte kleinste Quadrate
Betrachten wir zunächst den einfachsten Fall nur einer (unabhängigen) Prädiktorvariablen . Der Einfachheit halber seien sowohl als auch zentriert, dh der Achsenabschnitt ist immer Null. Der Unterschied zwischen der Standard-OLS-Regression und der "orthogonalen" TLS-Regression wird in dieser (von mir angepassten) Zahl aus der beliebtesten Antwort im beliebtesten Thread auf PCA deutlich:x yx x y
OLS passt die Gleichung indem quadratische Abstände zwischen beobachteten Werten und vorhergesagten Werten minimiert werden . TLS passt die gleiche Gleichung an, indem quadratische Abstände zwischen Punkten und deren Projektion auf der Linie minimiert werden. In diesem einfachsten Fall ist die TLS-Linie einfach die erste Hauptkomponente der 2D-Daten. Um zu finden , machen Sie PCA an Punkten, dh konstruieren Sie die Kovarianzmatrix und finden Sie ihren ersten Eigenvektor ; dann ist .y y ( x , y ) , β ( x , y ) 2 × 2 Σ v = ( v x , v y ) β = v y / v xy=βx y y^ (x,y) β (x,y) 2×2 Σ v =( vx, vy) β= vy/ vx
In Matlab:
In R:
Übrigens führt dies zu einer korrekten Neigung, selbst wenn und nicht zentriert waren (da die integrierten PCA-Funktionen automatisch die Zentrierung durchführen). Berechnen Sie zum Wiederherstellen des Abschnitts .y β 0 = ˉ y - β ˉ xx y β0= y¯- βx¯
OLS vs. TLS, multiple Regression
Bei einer abhängigen Variablen und vielen unabhängigen Variablen (ebenfalls der Einfachheit halber alle zentriert) passt die Regression zu einer GleichungOLS führt die Anpassung durch, indem die quadratischen Fehler zwischen den beobachteten Werten von und den vorhergesagten Werten minimiert werden . TLS führt die Anpassung durch, indem die quadratischen Abstände zwischen beobachteten Punkten und den nächsten Punkten auf der Regressionsebene / Hyperebene minimiert werden.x i y = β 1 x 1 + … + β p x p . y y ( x , y ) ∈ R p + 1y xich
Beachten Sie, dass es keine "Regressionslinie" mehr gibt! Die obige Gleichung gibt eine Hyperebene an : Es ist eine 2D-Ebene, wenn zwei Prädiktoren vorhanden sind, und eine 3D-Hyperebene, wenn drei Prädiktoren vorhanden sind eine Linie). Dennoch kann die Lösung leicht über PCA erhalten werden.
Wie zuvor wird die PCA an Punkten durchgeführt. Dies ergibt Eigenvektoren in Spalten von . Die ersten Eigenvektoren definieren eine dimensionale Hyperebene , die wir brauchen; der letzte (Nummer ) Eigenvektor ist orthogonal dazu. Die Frage ist, wie die Basis von die durch die ersten Eigenvektoren gegeben ist, in die Koeffizienten transformiert werden kann.p + 1 V p p H p + 1 v p + 1 H p β( x , y) p + 1 V p p H p + 1 vp + 1 H p β
Beachten Sie, dass wenn wir für alle und nur , dann , dh der Vektor liegt in der Hyperebene . Andererseits wissen wir, dass orthogonal dazu ist. Das heißt, ihr Skalarprodukt muss Null sein:xich= 0 x k = 1 y = β k ( 0 , ... , 1 , ... , β k ) ∈ H H V p + 1 = ( v 1 , ... , v p + 1 )i≠k xk=1 y^=βk
In Matlab:
In R:
Dies führt wiederum zu korrekten Steigungen, selbst wenn und nicht zentriert sind (da die integrierten PCA-Funktionen automatisch die Zentrierung durchführen). Berechnen Sie zum Wiederherstellen des Abschnitts .y β 0 = ˉ y - ˉ x βx y β0=y¯−x¯β
Beachten Sie zur Überprüfung der Gesundheit, dass diese Lösung mit der vorherigen Lösung übereinstimmt, wenn nur ein einziger Prädiktor . In der Tat ist dann der -Raum 2D, und wenn der erste PCA-Eigenvektor orthogonal zum zweiten (letzten) ist, gilt .( 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
Closed-Form-Lösung für TLS
Überraschenderweise stellt sich heraus, dass es eine geschlossene Formgleichung für . Das folgende Argument stammt aus Sabine van Huffels Buch "Die kleinsten Quadrate" (Abschnitt 2.3.2).β
Sei und die zentrierten Datenmatrizen. Der letzte PCA-Eigenvektor ist ein Eigenvektor der Kovarianzmatrix von mit einem Eigenwert . Wenn es ein Eigenvektor ist, ist es auch . Schreiben Sie die Eigenvektorgleichung auf:X y vp+1 [Xy] σ2p+1 ( X ⊤ X X ⊤ y y ⊤ X y ⊤ y ) ( β - 1 ) = σ 2−vp+1/vp+1=(β−1)⊤
Multivariate multiple Regression
Dieselbe Formel kann auf den multivariaten Fall verallgemeinert werden, aber selbst um zu definieren, was multivariates TLS tut, wäre etwas Algebra erforderlich. Siehe Wikipedia zu TLS . Multivariate OLS-Regression entspricht einer Reihe von univariaten OLS-Regressionen für jede abhängige Variable, im TLS-Fall ist dies jedoch nicht der Fall.
quelle
Basierend auf der naiven GNU Octave-Implementierung, die hier zu finden ist , könnte so etwas (Salzkorn, es ist spät) funktionieren.
quelle
princomp
führt eine Hauptkomponentenanalyse anstelle der Regression der kleinsten Quadrate durch. Soweit ich weiß, gibt es weder eine R-Funktion noch ein Paket, das TLS unterstützt. es gibt höchstens Deming-Regression bei MethComp .Betrachten Sie dies jedoch als einen Vorschlag, der sich höchstwahrscheinlich nicht lohnt.
quelle