| Die Lineare Regression ist ein Verfahren zur Berechnung der 'Ausgleichsgeraden'. Das ist eine Gerade, die so angelegt wird, dass sie möglichst nahe an allen gegebenen (mehr oder weniger verstreuten) Daten-Punkten liegt. | Man nutzt das Verfahren u.a., um Lineare Funktionen anschaulich darzustellen (Y abhängig von X), sowie um Prognose-Werte zu berechnen. |
Algorithmen
|
Ausgewählte IT-Rezepte |
| Live Demo | Ausgleichs-Gerade durch Datenpunkte |
| Abstands-Quadrate | Methode von C.F. Gauß |
| Algorithmus | Berechnung einer Ausgleichs-Geraden (Lineare Regression) |
| Sonderfälle | Horizontale oder vertikale Ausgleichs-Gerade |
|
Interpolieren Extrapolieren |
Berechnung neuer (unbekannter) Datenpunkte |
| Anwendung in Programmen & Programmiersprachen | |
OpenOffice-Calc, MS-Excel, ... |
|
Anwendung in Webseiten (z.B. dieser) |
|
Anwendung in Webserver-Programmen |
|
Hilfsprogramm für Kalkulations-Programme |
|
| Polynom-Regression | Berechnung von Ausgleichs-Kurven |
Methode der kleinsten Abstands-Quadrate |
|
GaußEine Lösung wurde erstmals von Carl Friedrich Gauß (1777-1855) im Alter von ca. 18 Jahren gefunden.Im konkreten Fall wurden die Koordinaten eines bis dahin unbekannten Himmelskörpers mit relativ großen Fehlern bestimmt, und man wollte seine weitere Bahn berechnen. Seine 'Methode der kleinsten Abstands-Quadrate' wird heute in zahlreichen Varianten allgemein verwendet. |
Das Prinzip lässt sich am besten beschreiben, wenn man sich einige
beliebig verteilte Daten-Punkte in einer ebenen Fläche vorstellt. • Man legt in diese Fläche eine Gerade und verschiebt sie so lange, bis sie 'am besten' zu den Punkten passt. Man braucht dazu ein Maß für die Güte der Anpassung: • C.F. Gauß definierte dieses Maß als Summe der Abstands-Quadrate: Man bestimmt die Abstände aller Daten-Punkte von der Geraden, berechnet deren Quadrate und summiert diese. • Die 'Ausgleichs-Gerade' ist dann erreicht, wenn die Summe der Abstands-Quadrate ein Minimum annimmt. |
Lineare Regression (Ausgleichs-Gerade)Das Verfahren wird am häufigsten auf Daten-Punkte in einer (XY)-Ebene angewendet. Die Methode der kleinsten Abstands-Quadrate liefert als Ergebnis eine Gerade, die man als Ausgleichs-Gerade bezeichnet.Ein Algorithmus zur Berechnung wird auf dieser Seite vorgestellt, weitere Beispiele für Kalkulations-Programme und gängige Programmiersprachen auf weiteren Webseiten. Eine Gerade wird am besten so formuliert (alternative Varianten):
y = f(x)
y = k * x + d y = f0 + f1 * x |
Mehrere DimensionenDie Methode ist nicht auf eine 2-dimensionale Ebene begrenzt. Sie lässt sich auf beliebig viele Dimensionen erweitern.Man kann damit nicht nur eine sondern mehrere Abhängigkeiten beschreiben: y = f(a,b,c,d,...)
Solche Aufgaben lassen sich zwar nicht mehr anschaulich beschreiben, aber
problemlos mit den gleichen - etwas allgemeiner formulierten - Algorithmen
berechnen.
|
Polynom-RegressionEine Gerade ist ein häufiges, jedoch nicht das einzige Modell zur Beschreibung einer Wechselwirkung (Korrelation).Mit einem Polynom kann man theoretisch jeden beliebigen Zusammenhang zwischen 2 Variablen x,y formulieren: y = f0 + f1 * x + f2 * x^2 + ...
Auch von einer solchen Polynom-Funktion lassen sich die Abstands-Quadrate
berechnen und deren Summe optimieren. Man erhält dabei ein genau passendes
oder das best-möglich angepasste Polynom - je nach der Anzahl der
verwendeten Polynom-Glieder.Eine Ausgleichs-Gerade kann man als Sonderfall eines Polynoms 1.Ordnung formulieren: y = f0 + f1 * x
|
Hilfs-FunktionenDie Methode der kleinsten Abstands-Quadrate lässt sich jede beliebige Funktion anwenden. Typische Beispiele sind 1/y, ln(y) (Logarithmus) , exp(y) (Exponential), sqrt(y) (Wurzel), sin(y), cos(y) (Winkelfunktiionen) usw.Durch Kombination solcher und anderer Funktionen mit einer Ausgleichs-Geraden oder einem Ausgleichs-Polynom lassen sich beliebige Wechselwirkungen beschreiben, und deren Messwerte glätten, interpolieren, extrapolieren, ... |
KorrelationDie Berechnung einer Ausgleichs-Geraden oder -Kurve ist nur dann sinnvoll, wenn man irgend eine Beziehung (Korrelation) zwischen den X-Koordinaten und den Y-Koordinaten annehmen kann.● Im einfachsten Fall ist das eine lineare Beziehung, d.h. der Y-Wert nimmt mit wachsendem X-Wert zu und umgekehrt. Beispiel: Je mehr Muskelkraft ein Mensch hat, umso weiter kann er einen Stein werfen. Diese Annahme trifft wahrscheinlich auf viele,Menschen zu. Die Messwerte einzelner Personen werden jedoch stark streuen, da ihre Wurfweite auch von Geschicklichkeit, Training usw. abhängt. In diesem Fall ist eine Ausgleichs-Gerade sinnvoll, da sie von der Situation einzelner Messungen unabhängig macht, und den Durchschnitt vieler Menschen beschreiben kann. |
Eine lineare Beziehung ist zwar einfach zu berechnen, gilt jedoch meist nur in einem begrenzten Bereich. Wenn man bestimmte Grenzen überschreitet, z.B. besonders kleine oder besonders große X-Werte untersucht, dann weicht das reale Verhalten fast immer von der Ausgleichs-Geraden ab. ● Mindestens in diesen Fällen muss man das einfache lineare Modell ändern - In der Daten-Analyse muss man Hilfs-Funktionen, Polynome oder andere Methoden anwenden. ● Auf zufällig verteilte und auf nicht korrelierte Daten lässt sich überhaupt keine Ausgleichs-Funktion anwenden. Man kann zwar formal eine solche berechnen, das ergibt jedoch keine sinnvolle Aussage. Die Statistik bietet Methoden zur Messung und Bewertung der Korrelation. (Korrelations-Analyse). |
Mess-FehlerReale Mess-Daten sind immer mit einem Fehler behaftet. Es ist prinzipiell unmöglich, einen Wert 'unendlich' genau zu messen. Je nach der verwendeten Methode, Sorgfalt und Anzahl der Messungen ergibt sich immer ein Messwert mit einem gewissen Fehler.Dieses Problem war ernsthaften Wissenschaftlern schon immer bekannt, man konnte dafür jedoch vor den Entdeckungen von Gauß weder eine Beschreibung finden noch konkrete Vorschriften zur Verwendung 'unsicherer' Mess-Daten ableiten. ● Die Angabe eines Messwerts ist prinzipiell nur dann seriös, wenn man gleichzeitig dessen (wahrscheinlichen) Fehler angibt. |
Typische Beispiele sind medizinische Messwerte wie z.B. die Anzahl der Leukozyten (weissen Blutkörperchen), die im Bereich 4-10/nl liegen sollte: Ein Messwert von 6∓1/nl ist unbedenklich; ein Messwert von 6∓5/nl ist jedoch bedenklich und sollte zumindest genauer bestimmt werden. Ein Messwert von 6/nl ohne Angabe des Fehlers ist praktisch wertlos. Leider hat sich das auch 200 Jahre nach Gauß noch nicht überall herumgesprochen. Insbesondere Juristen können mit 'unscharfen' Aussagen oft nichts anfangen und versuchen, Sachverständige zu 'fehlerfreien' aber unhaltbaren Aussagen zu zwingen... |
|
Wikipedia: Methode der kleinsten Quadrate, Lineare Regression, Korrelation, ... |
Weitere Stichworte: Least squares fitting, Regressions-Analyse, NonLineare Regression, Polynom-Regression, usw. |
Berechnung einer Ausgleichs-Geraden (Lineare Regression) |
|
Liste (Array) von DatenMan benötigt eine Liste bekannter (z.B. gemessener) Daten-Paare, z.B.P0(x0,y0), P1(x1,y1), P2(x2,y2), ...
Für Listen eignet sich besonders der Daten-Typ Array.♦ Details zu Arrays in JavaScript, Perl, PHP, VBA, ... |
Man setzt eine ganzzahlige (Integer) Variable n auf die Länge der Liste (Anzahl der Array-Elemente). Die Liste muss mindestens n=2 Punkte umfassen: Dieser Fall ist trivial, denn durch 2 Punkte lässt sich immer eine 'fehlerfreie' Gerade legen. Man verwendet die Methode sinnvoll nur für Listen mit mindestens n>=3 Punkten. |
SchleifeVor Beginn der Schleife werden diese Gleitkomma-Variablen (Real, Double) initialisiert (d.h. sie erhalten Anfangswerte):
sx=0; sy=0;
sxy=0; sxq=0; |
In der Schleife werden alle Daten-Elemente durchlaufen.
Man zählt sie mit einem Index i=0
bis i=n In den Variablen sx, sy werden die Koordinaten aller DatenPunkte summiert:
sx = sx + x(i)
In den Variablen sxy, sxq werden die Produkte bzw.
die Quadrate der X-Koordinaten summiert:
sy = sy + y(i)
sxy = sxy + x(i)*y(i)
sxq = sxq + x(i)*x(i) |
MittelwerteNach dem Ende der Schleife beerchnet man die Mittelwerte der Koordinaten: |
xm = sx / n
ym = sy / n |
Steigung(Anstieg) der Ausgleichs-Geraden: |
k = (sxy - n * xm * ym) / (sxq - n * xm * xm)
|
Achsenabschnitt(Ordinaten-Abschnitt) der Ausgleichs-Geraden: |
d = ym - k * xm |
Ausgleichs-GeradeDiese Funktion berechnet alle Punkte auf der Ausgleichs-Geraden:y = k * x + d
|
Die 'geglätteten' Daten werden aus den X-Koordinaten aller vorgegebenen Daten mit der Ausgleichs-Geraden berechnet: y(i) = k * x(i) + d
|
Sonderfälle (Horizontale, Vertikale) |
|
Sonderfall HorizontaleWenn alle bekannten Daten die gleichen Y-Koordinaten haben, dann ergibt sich eine horizontale Ausgleichs-Gerade mit k=0Der Achsenabschnitt d nimmt den gleichen Wert an wie alle Y-Koordinaten. Dieser Fall wird vom Algorithmus problemlos verarbeitet. |
Sonderfall VertikaleWenn alle bekannten Daten die gleichen X-Koordinaten haben, bzw. wenn sxq - n * xm * xm = 0
dann ergibt sich eine senkrechte Ausgleichs-Gerade mit dem
Anstieg k=∞ In diesem Fall ist d unbestimmt. • Diesen Fall muss man in eigenen Programmen erkennen und getrennt verwalten, da übliche Programme mit dem Wert ∞ nicht arbeiten können und einen Fehler melden. |
Interpolieren und Extrapolieren |
|
InterpolierenMit Hilfe der Ausgleichs-Geraden kann man die Lage beliebiger zusätzlicher Punkte berechnen. Wenn sich diese innerhalb des Bereichs der vorgegebenen Daten befinden, nennt man das Interpolation:y = k * x + d
für x > min(xi)
und x < max(xi)
|
ExtrapolierenMan kann die Ausgleichs-Gerade dazu verwenden, um Punkte außerhalb der vorgegebenen Daten zu berechnen, d.h. für x< min(xi) oder x> max(xi)Ein typisches Beispiel ist die Prognose zukünftiger (Erwartungs)-Werte. Es hängt von der jeweiligen Aufgabe ab, ob und wie weit im voraus eine derartige Prognose sinnvoll ist. |
UmkehrungNormalerweise verwendet man eine Ausgleichs-Gerade, um aus vorgegebenen X-Koodinaten die unbekannten Y-Koordinaten zu berechnen. Bei der Umkehrung berechnet man aus vorgegebenen Y-Koordinaten die unbekannten X-Koordinaten:x = (y - d) / k
|
NullStelleEine spezielle (umgekehrte) Anwendung ist die Suche nach NullStellen, wo eine Linie mit y=0 die X-Achse schneidet.x(null) = - d / k
Dieses Verfahren wird u.a. beim Numerischen Differenzieren verwendet, um
aus der 1.Ableitung die Extremwerte (Minima, Maxima) einer Funktion zu
bestimmen, oder aus der 2.Ableitung die Wendepunkte.
|
Algorithmus 2 |
|
|
Im Beispiel rechts der gleiche Algorithmus in einer zur Programmierung
geeigneten Form. Diese Variante hat den Vorteil, dass nur eine einzige
Schleife notwendig ist, in der alle 4 Summen-Variablen berechnet werden. Sie finden diesen Algorithmus in allen speziellen Beispielen dieser Seite, je nach den Möglichkeiten der einzelnen Programmiersprachen. Die Namen der Variablen wurden möglichst wenig verändert. Ein Sonderfall tritt ein, wenn (sum_xx - n*xm*xm)=0
Das ergibt eine senkrechte Ausgleichs-Gerade mit k=∞ In diesem Fall ist d unbestimmt. |
Berechnung einer Ausgleichsgeraden
# Initialisierung
sum_x = 0sum_y = 0 sum_xy = 0 sum_xq = 0 # Summierungs-Schleife
for(i=0; i<n; i++) {
sum_x = sum_x + x[i]
}
sum_y = sum_y + y[i] sum_xy = sum_xy + x[i] * y[i] sum_xx = sum_xx + x[i] * x[i] # Mittelwerte
xm = sum_x/nym = sum_y/n # Ausgleichsgerade
k = (sum_xy - n*xm*ym) / (sum_xx - n*xm*xm)d = ym-k*xm |