Algorithmen
|
Ausgewählte IT-Rezepte |
| Abstands-Quadrate | Methode von C.F. Gauß |
| Algorithmus | Berechnung einer Ausgleichs-Geraden (Lineare Regression) |
| Anwendung in Programmen & Programmiersprachen | |
Polynom-Funktionen für für Kalkulations-Programme
|
|
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
|