Lineare Regressionsgerade 3D < Gleichungssysteme < Lineare Algebra < Hochschule < Mathe < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 11:54 Di 08.09.2009 | Autor: | Adam |
Aufgabe | Suche lineare Regressionsgerade durch Punktwolke im Sinne der kleinsten Fehlerquadrate, in der Form: [mm] \fedong(\vec{x}) [/mm] = [mm] e*\vec{v} [/mm] + [mm] \vec{m}.
[/mm]
x ist definiert als Punk im Raum, [mm] \vec{x}:= \pmat{x \\y \\ z}
[/mm]
[mm] \fedoff [/mm] |
Ich habe diese Frage auch in folgenden Foren auf anderen Internetseiten gestellt: http://www.matheplanet.com/matheplanet/nuke/html/viewtopic.php?topic=128198
Gefundener Ansatz:
du hast eine Menge von Punkten [mm] p_1,...,p_n [/mm]
Bilde zuerst den Mittelpunkt: m = [mm] (p_1 [/mm] + ... + [mm] p_n)/n [/mm]
Bilde nun die Matrix A = [ [mm] (p_1 [/mm] - m) [mm] (p_2 [/mm] - m) ... [mm] (p_n [/mm] - m) ] (die Differenzvektoren bilden die Spalten)
Und jetzt bildest du die Kovarianzmatrix K = [mm] A*A^t (A^t [/mm] ist die transponierte Matrix zu A)
Nun berechnest du die Eigenwerte von K und wählst den betragsmäßig größten aus, den nennen wir e. Nun bestimmst du den normierten Eigenvektor zu e, d.h. der hat die Länge 1 und wir nennen ihn v.
Die Ausgleichsgerade ist dann x = e*v + m oder in gewohnter Form g(x) = x*v + m (x ist eine einfache reelle Zahl, ggf. ist dir die Schreibweise g(t) = t*v + m geläufiger).
Fragen:
1. Um die Kovarianzmatrix K zu berechnen, müsste man K nicht noch mit 1/(n-1) multiplizieren? In meiner Beispielrechnung hab ichs gemacht. Habs in Matlab ausprobiert u. mit meinem Programm verglichen, Matlab gab mir recht.
2. Für m soll ich den Mittelpunktvektor einsetzen?
3. Wie sieht meine Regressionsgerade aus? Ich habe ja keine Unbekannte mehr, da kann was nicht passen oder? Meine Berechnung am Beispiel: http://www.matheplanet.com/matheplanet/nuke/html/viewtopic.php?topic=128198
Ich wäre euch extrem dankbar, wenn ihr mir auf die Sprünge helfen könntet!
Adamn
|
|
|
|
Hallo Adam,
> Suche lineare Regressionsgerade
(eine Gerade ist natürlich immer linear ... )
> durch Punktwolke im Sinne
> der kleinsten Fehlerquadrate, in der Form:
> [mm]\fedon g(\vec{x})=e*\vec{v}[/mm] + [mm]\vec{m}.[/mm]
> x ist definiert als Punkt im Raum, [mm]\vec{x}:= \pmat{x \\y \\ z}[/mm]
> Gefundener Ansatz:
> du hast eine Menge von Punkten [mm]p_1,...,p_n[/mm]
> Bilde zuerst den Mittelpunkt: m = [mm](p_1[/mm] + ... + [mm]p_n)/n[/mm]
> Bilde nun die Matrix A = [ [mm](p_1[/mm] - m) [mm](p_2[/mm] - m) ... [mm](p_n[/mm] -
> m) ] (die Differenzvektoren bilden die Spalten)
> Und jetzt bildest du die Kovarianzmatrix K = [mm]A*A^t (A^t[/mm] ist
> die transponierte Matrix zu A)
> Nun berechnest du die Eigenwerte von K und wählst den
> betragsmäßig größten aus, den nennen wir e. Nun
> bestimmst du den normierten Eigenvektor zu e, d.h. der hat
> die Länge 1 und wir nennen ihn v.
>
> Die Ausgleichsgerade ist dann x = e*v + m
Unsinn...
> oder in gewohnter
> Form g(x) = x*v + m (x ist eine einfache reelle Zahl, ggf.
> ist dir die Schreibweise g(t) = t*v + m geläufiger).
Hier würde ich die Schreibweise mit t unbedingt
vorziehen, denn x wurde oben ohnehin schon für zwei
verschiedene Zwecke ge-(bzw. miss-)braucht.
> Fragen:
> 1. Um die Kovarianzmatrix K zu berechnen, müsste man K
> nicht noch mit 1/(n-1) multiplizieren? In meiner
> Beispielrechnung hab ichs gemacht. Habs in Matlab
> ausprobiert u. mit meinem Programm verglichen, Matlab gab
> mir recht.
Da es ja nur um die Richtung eines Eigenvektors geht,
spielt die Multiplikation mit einem Faktor [mm] \not=0 [/mm] keine Rolle.
Auch die Normierung des Eigenvektors auf die Länge 1
war eigentlich überflüssig, wenn es nur darum geht,
die Gerade darzustellen.
> 2. Für m soll ich den Mittelpunktvektor einsetzen?
Ja.
> 3. Wie sieht meine Regressionsgerade aus? Ich habe ja keine
> Unbekannte mehr, da kann was nicht passen oder?
Die Gleichung für g:
[mm] \overrightarrow{x}(t)=\overrightarrow{m}+t*\overrightarrow{v}
[/mm]
stellt sehr wohl eine Gerade dar, mit dem Parameter t.
Gruß Al-Chwarizmi
|
|
|
|
|
Status: |
(Frage) beantwortet | Datum: | 12:47 Di 08.09.2009 | Autor: | Adam |
Danke Al-Chwarizmi für deine rasche Antwort!
Weitere Fragen:
1) Zur Vergewisserung, die Ausgleichsgerade für mein angegebenes Beispiel sieht dann wie aus, wenn man die Werte einsetzt? Sorry, stehe bissl auf der Leitung:
2) Macht die Vorgehensweise Sinn? Sprich macht das Sinn von der Kovarianzmatrix die Eigenvektoren zu berechnen u. dadurch die Regressionsgerade aufzustellen?
Ausgangsmatrix P, Spalten stellen jeweils 1 Punkt im Raum dar P:= [mm] \pmat{3 & 5 & 1 \\ 4 & 2 & 8 \\ 9 & 4 & 3}
[/mm]
Mittelpunktvektor [mm] m:=\pmat{3 \\ 4.6 \\ 5}
[/mm]
Betragsmäßig größte Eigenwert von K:= 18.4292
Normierte Eigenvektor v:= [mm] \pmat{0.3545 \\ -0.6190 \\ 0.7007}
[/mm]
Herzlichen Dank!
Adam
|
|
|
|
|
> Danke Al-Chwarizmi für deine rasche Antwort!
>
> Weitere Fragen:
> 1) Zur Vergewisserung, die Ausgleichsgerade für mein
> angegebenes Beispiel sieht dann wie aus, wenn man die Werte
> einsetzt?
Falls deine Rechnungen stimmen (würden..., siehe unten):
[mm] $\pmat{x\\y\\z}\ [/mm] =\ [mm] \pmat{3 \\ 4.6 \\ 5}+t* \pmat{0.3545 \\ -0.6190 \\ 0.7007}$
[/mm]
> 2) Macht die Vorgehensweise Sinn? Sprich macht das Sinn von
> der Kovarianzmatrix die Eigenvektoren zu berechnen u.
> dadurch die Regressionsgerade aufzustellen?
Dashabe ich mir jetzt nicht im Detail überlegt, aber es
macht durchaus Sinn. Ich habe gerade in einem etwas
anderen Zusammenhang die Kovarianz gebraucht, um
zu prüfen, wie gut eine Ausgleichsgerade eine (ebene)
Punktwolke approximiert.
> Ausgangsmatrix P, Spalten stellen jeweils 1 Punkt im Raum
> dar P:= [mm]\pmat{3 & 5 & 1 \\ 4 & 2 & 8 \\ 9 & 4 & 3}[/mm]
Drei Punkte ergeben natürlich erst eine ziemlich
dürftige "Punktwolke". Aber um das Funktionieren
der Methode zu testen, würde es durchaus Sinn
machen, noch folgende Beispiele zu testen:
1.) nur 2 Punkte (0/0/0) und (1/0/0) auf der x-Achse
(da sollte die x-Achse als Regressionsgerade herauskommen)
2.) 3 Punkte fast auf einer Geraden: (0/0/0),(10/0/0),(5/1/0)
(Regressionsgerade [mm] $\pmat{x\\y\\z}\ [/mm] =\ [mm] \pmat{5 \\ \frac{1}{3} \\ 0}+t* \pmat{1 \\ 0 \\ 0}$
[/mm]
3.) Gleichseitiges Dreieck: (1/0/0),(0/1/0),(0/0/1)
(hier sollte das Verfahren scheitern, da es keine
"beste" Ausgleichsgerade gibt; zwar gibt es keine
rechnerische Katastrophe wie etwa Division durch
Null, aber man erhält zwei identische Eigenwerte
und dazu den Eigenwert Null, es gibt also keinen
größten Eigenwert, desse Eigenvektor die
Richtung der Regressionsgeraden anzeigen könnte)
> Mittelpunktvektor [mm] $m:=\pmat{3 \\ 4.6 \\ 5}$ [/mm]
in der 2. und 3. Komponente erhalte ich was andres ...
> Betragsmäßig größter Eigenwert von K:= 18.4292
> Normierter Eigenvektor v:= [mm]\pmat{0.3545 \\ -0.6190 \\ 0.7007}[/mm]
Inzwischen habe ich das Beispiel mit Mathematica
durchgeführt und komme auf den normierten
Eigenvektor (zum größten Eigenwert):
[mm] $\overrightarrow{v}\ [/mm] =\ [mm] \pmat{0.4247 \\ -0.7180 \\ 0.5515}$
[/mm]
Der Mittelpunktsvektor ist natürlich [mm] $\overrightarrow{m}\ [/mm] =\ [mm] \pmat{3\\4.6667\\5.3333}$ [/mm] .
> Herzlichen Dank!
> Adam
LG Al
|
|
|
|
|
Status: |
(Frage) überfällig | Datum: | 10:31 Mi 09.09.2009 | Autor: | Adam |
Al, was würde ich ohne dich machen .... hast mir alles super erklärt! Funktioniert jetzt alles bei mir so, wie du es beschrieben hast. VIELEN DANK !!!
Ich hoffe, dass ich deine Nerven nicht zu sehr strapaziere, wenn ich dir noch 1 Frage stelle:
FRAGE:
Angenommen, ich habe 4 Geraden (durch 4 verschiedene Punktwolken), diese 4 Geraden sollen sich schneiden an einem Punkt (im Raum). Ob sich die 4 Geraden tatsächlich an einem Punkt schneiden ist ungewiss. Wie berechne ich trotzallem den besten Kandidaten (x,y,z Wert) für diesen Schnittpunkt?
ANSATZ:
Schnittpunkt von 2 Geraden ist klar: av+b=cv+d ... dann mittels z.B. Gauß'schen Eliminationsverfahren lösen. Ich kann aber nicht davon ausgehn, dass tatsächlich Schnittpunkt vorliegt. Hab mir gedacht, irgendwie die Abstände berechnen.
Dank dir schon mal!
Adam
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 11:20 Fr 11.09.2009 | Autor: | matux |
$MATUXTEXT(ueberfaellige_frage)
|
|
|
|
|
> Al, was würde ich ohne dich machen .... hast mir alles
> super erklärt! Funktioniert jetzt alles bei mir so, wie du
> es beschrieben hast. VIELEN DANK !!!
>
> Ich hoffe, dass ich deine Nerven nicht zu sehr strapaziere,
> wenn ich dir noch 1 Frage stelle:
>
> FRAGE:
> Angenommen, ich habe 4 Geraden (durch 4 verschiedene
> Punktwolken), diese 4 Geraden sollen sich schneiden an
> einem Punkt (im Raum). Ob sich die 4 Geraden tatsächlich
> an einem Punkt schneiden ist ungewiss. Wie berechne ich
> trotzallem den besten Kandidaten (x,y,z Wert) für diesen
> Schnittpunkt?
>
> ANSATZ:
> Schnittpunkt von 2 Geraden ist klar: av+b=cv+d ... dann
> mittels z.B. Gauß'schen Eliminationsverfahren lösen. Ich
> kann aber nicht davon ausgehn, dass tatsächlich
> Schnittpunkt vorliegt. Hab mir gedacht, irgendwie die
> Abstände berechnen.
>
> Dank dir schon mal!
> Adam
Hallo Adam,
Im [mm] \IR^3 [/mm] ist es natürlich schon bei zwei Geraden nicht
selbstverständlich, dass es einen Schnittpunkt gibt.
Als bestmögliche Approximation könnte man dann den
Mittelpunkt der kürzesten Transversalen nehmen.
Wenn wir 4 Geraden [mm] g_i [/mm] haben, könnte man den Punkt
P suchen, für welchen die Summe $\ [mm] d_1^2+d_2^2+d_3^2+d_4^2$
[/mm]
der Quadrate der Abstände $\ [mm] d_i=d(P,g_i)$ [/mm] minimal wird.
Ist die Gerade [mm] g_i [/mm] durch einen Stützpunkt [mm] A_i [/mm] und einen
Richtungsvektor [mm] \vec{v}_i [/mm] gegeben, so berechnet sich der
Abstand [mm] d_i [/mm] nach der Formel
$\ [mm] d_i\ [/mm] =\ [mm] \frac{|\overrightarrow{A_iP}\times{\vec{v}_i}|}{|\vec{v}_i |}$
[/mm]
Die Berechnung des Minimums dürfte umständlich
werden ...
... aber es funktioniert ! Inzwischen habe ich es an
einem Beispiel mit drei Geraden ausprobiert. Am Ende
kommt man auf ein lineares Gleichungssystem für die
drei Koordinaten x,y,z des gesuchten Punktes.
LG Al-Chwarizmi
|
|
|
|