Sie sind nicht angemeldet.

  • Anmelden

Lieber Besucher, herzlich willkommen bei: MastersForum. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.

1

02.11.2008, 18:17

[Mathe] Lineare Regression

Ich muss mich zur Zeit mit Regression herumschlagen und habe keine vernünftige Literatur zur Hand. Die Wikip hat einen sehr netten Artikel zumindest über die lineare Regression, mich interessiert im Grunde nur die geschlossene Formel für die Koeffizienten a und b.

In http://de.wikipedia.org/wiki/Lineare_Reg…ressionsgeraden sind Formeln für a und b gegeben (ein bissel runterscrollen), die habe ich versucht nachzuvollziehen, um für quadratische und kubische Regression die Koeffizienten selbst finden zu können. Bei a komme ich auf das gleiche, bei b auf eine kürzere Form:



Ich kriege damit auch für ein komplizierteres Beispiel die gleichen Ergebnisse wie mit der Wikip-Formel für b, nur: Wieso? Zwischen den beiden Formeln kriege ich keine Umformung hin (vielleicht nur BvK), kann mir wer bestätigen dass sie identisch sind? Dann könnte man auch den Wikip-Artikel ändern...

2

03.11.2008, 01:17

also du willst den beweis haben dass deine formel oben der hier entspricht?

3

03.11.2008, 01:28

wenn das meinst, ja wär das selbe, wenn du bei deiner gleichung oben und unten vor der klammer nich xi*...sondern (xi-xquer)*... wirds das gleiche. is aber nich wirklich einfacher, weil so wies in wiki steht ist das einfach covarianz/varianz x

4

03.11.2008, 01:32

der beweis für die umforumungen is total easy, multiplizier einfach den ausdrcuk in der summe auf, dann siehts du, dass der eine teil verschwindet

wenn du bischen was hinter der regression verstehen willst, mach dir das ganze geometrisch klar, besonderns im fall einer einfachregression ist das sehr schön

literatur ist so ne sache, wenn du wirtschaftler bist, schau dir den wooldridge an, bei mehr mathe kenntnissen schau in ein statistik buch, da führen sie auch regression immer bischen mit ein; reine regressionsbüchern gehn wohl schon zu weit, aber falls dich interessiert, lies dich mal in generalized linear models ein, ganz interessantes thema

5

03.11.2008, 01:48

Deine lineare Regressionsgleichung ist y = Xb + e, du willst ||Xb-y||² minimieren.
In der 2-Norm steht dann da: (Xb-y)'(Xb-y) = e'e = y'y -2b'X'y + b'X'Xb
1. Ableitung nach b:
d(e'e)/db = -2X'y + 2X'Xb = 0
<=> X'Xb = X'y
<=> b = (X'X)^-1 * X'y
Wenn du nochmal nach b, also dann insgesamt nach bb' ableitest, bleibt 2X'X übrig. Wie man sich leicht aufgrund der SVD überlegt, ist dies zumindest positiv semi-definit, zumeist aber pos. definit -> Minimum.

Schauen wir uns die postuliete lineare Gleichung y = Xb + Residuum mal genauer an. Da steht, dass y eine lineare Funktion der X in b sind, also
y = x1*b1 + x2*b2 + x3*b3 + x4*b4 ...

Bei einer bis zu kubischen Regression hast du ein Polynom vom Grad 3, also Monome vom Grad 0 bis 3, wie oben (mit Index +1) beschrieben.
Wenn x deine Messwerte sind, so musst du folglich setzen:
x1 ist ein Vektor (n x 1) nur mit Einsen (x^0).
x2 ist der normale (gemessene) Datenvektor x
x3 ist der quadrierte Datenvektor x^2
x4 ist der Datenvektor zur Potenz 3: x^3
Aus diesen 4 Spalten besteht deine Datenmatrix X = (x1,x2,x3,x4). Der Vektor b = (b1,b2,b3,b4) gibt die Koeffizienten deines zu schätzenden Polynoms an. y ist ein (n x 1) Vektor der endogenen Variable.

Hoffe so spät abends keinen Fehler reingebaut zu haben. So sollte alles schon übersichtlich und konsistent sein.

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »AtroX_Worf« (03.11.2008, 01:49)


6

03.11.2008, 13:05

Zitat

Original von Rommel
wenn das meinst, ja wär das selbe, wenn du bei deiner gleichung oben und unten vor der klammer nich xi*...sondern (xi-xquer)*... wirds das gleiche. is aber nich wirklich einfacher, weil so wies in wiki steht ist das einfach covarianz/varianz x


Ja, die Formel meinte ich. Gut, dann hat die Formulierung in der Wikip doch ihren Sinn.

Zitat

Original von [pG]Sunzi
der beweis für die umforumungen is total easy, multiplizier einfach den ausdrcuk in der summe auf, dann siehts du, dass der eine teil verschwindet

wenn du bischen was hinter der regression verstehen willst, mach dir das ganze geometrisch klar, besonderns im fall einer einfachregression ist das sehr schön


Aufmultiplizieren des Ausdrucks welcher Summe? Was wird dann mit dem Index i? Oder meintest du ausmultiplizieren - da fällt in der Wikip-Formel ober- und unterhalb des Bruchstrichs nichts weg, jedenfalls sehe ich da nichts. Ist jetzt auch nicht tragisch, da die Wikip-Formel sich besser eignet (die Varianz muss ich sowieso ausrechnen).

Die graphische Darstellung dazu ist schon recht hilfreich fürs Verständnis, japp. Aber allzuweit vertiefen wollte ich es nicht (ist nur ein statistisches Merkmal unter vielen), trotzdem danke für die Literaturempfehlungen.

@Worf: Hmm, das ist fürs Verständnis nicht schlecht, aber ich brauche explizite Formeln für b1 bis b4, weil ich dem Rechner in der Anwendung keine Lösung von Gleichungssystemen zumuten kann... ?(

Das partielle Ableiten und 0 setzen führt schon bei der quadratischen Regression zu einer ziemlichen Sauerei, wenn man keine Werte einsetzt. Ich werde wohl fleissig Kurzbezeichnungen für mehrfach auftretende Terme einführen müssen.

:baaa:

7

03.11.2008, 14:05

Nimm doch die allgemeine Formel und ein beliebiges Computer-Algebra-System.

Was willst du nochmal genau wissen? Verstanden ahst du jetzt aber, wie es geht und vor allem aus was die Datenmatrix gebildet wird?
Ist alles so zeitkritisch, dass du nicht ein paar Matrizen miteinander multiplizieren und invertieren kannst?

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »AtroX_Worf« (03.11.2008, 14:10)


8

03.11.2008, 14:29

Zitat

Original von AtroX_Worf
Nimm doch die allgemeine Formel und ein beliebiges Computer-Algebra-System.

Was willst du nochmal genau wissen? Verstanden ahst du jetzt aber, wie es geht und vor allem aus was die Datenmatrix gebildet wird?
Ist alles so zeitkritisch, dass du nicht ein paar Matrizen miteinander multiplizieren und invertieren kannst?


Es muss halt echtzeitfähig sein und ein Algebraprogramm kann ich nicht mit vernünftigem Aufwand anschliessen. Explizite Formeln für b1, b2, ... wie aus der Wikip kann ich fast 1:1 in Java-Code übertragen, und ihr Berechnungsaufwand steigt auch nur linear mit der Menge der Punkte (pro Punkt eben ein Summand mehr in jeder Summe).

Bei einem Algebraprogramm habe ich keine Kontrolle was es genau macht, und wenn es durch Operationen auf Matrizen quadratische oder kubische Komplexität entwickelt, habe ich schnell ein Laufzeitproblem. Die Punktewolke radikal auszudünnen würde das halbwegs ausgleichen, aber wenn ich es damit übertreibe wird es dann zu ungenau.

9

03.11.2008, 14:45

Zitat

Original von Sheep

Zitat

Original von AtroX_Worf
Nimm doch die allgemeine Formel und ein beliebiges Computer-Algebra-System.

Was willst du nochmal genau wissen? Verstanden ahst du jetzt aber, wie es geht und vor allem aus was die Datenmatrix gebildet wird?
Ist alles so zeitkritisch, dass du nicht ein paar Matrizen miteinander multiplizieren und invertieren kannst?


Es muss halt echtzeitfähig sein und ein Algebraprogramm kann ich nicht mit vernünftigem Aufwand anschliessen. Explizite Formeln für b1, b2, ... wie aus der Wikip kann ich fast 1:1 in Java-Code übertragen, und ihr Berechnungsaufwand steigt auch nur linear mit der Menge der Punkte (pro Punkt eben ein Summand mehr in jeder Summe).

Bei einem Algebraprogramm habe ich keine Kontrolle was es genau macht, und wenn es durch Operationen auf Matrizen quadratische oder kubische Komplexität entwickelt, habe ich schnell ein Laufzeitproblem. Die Punktewolke radikal auszudünnen würde das halbwegs ausgleichen, aber wenn ich es damit übertreibe wird es dann zu ungenau.


Ich meinte natürlich du sollst dir mittels eines CAS die Formeln berechnen lassen btw Muster suchen. Aber dunno obs nicht vielleicht zu kompliziert wird. Ich denke mir aber mit vernüftiger Programmierung als LR-Zerlegung etc. und Lösung aus der Normalengleichung hast du ne gute Kondition und bist nicht wirklich viel langsamer als bei den direkt expliziten Lösungen. Glaube kaum, dass du viele unnötige Additionen, Multiplikationen drin hast.
Ach ja, LR geht glaube in O(2/3 n³), Cholesky (kannst du bei X'X machen) geht in O(1/3 n³).
Gibt zwar auch polynomielle Löser, aber die sind für die Praxis normalerweise nichts.
Wenn du nicht die genauen Lösungen brauchst ist ein iteratives Verfahren für dich vielleicht geeigneter.

Ach ja, schreib mal genau deine Anwendung. Für mich hört es sicher eher so an, als höttest du ein mathematisches/modelltheoretisches Problem und keines der Laufzeit.

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »AtroX_Worf« (03.11.2008, 14:50)


10

03.11.2008, 17:09

Zitat

Aufmultiplizieren des Ausdrucks welcher Summe? Was wird dann mit dem Index i? Oder meintest du ausmultiplizieren - da fällt in der Wikip-Formel ober- und unterhalb des Bruchstrichs nichts weg, jedenfalls sehe ich da nichts. Ist jetzt auch nicht tragisch, da die Wikip-Formel sich besser eignet (die Varianz muss ich sowieso ausrechnen).


in der summe ausmultiplizieren, dann die summe in 2 summen auseinanderziehen und dann siehst du, dass der eine teil wegfällt

11

03.11.2008, 19:09

Zitat

Original von [pG]Sunzi
in der summe ausmultiplizieren, dann die summe in 2 summen auseinanderziehen und dann siehst du, dass der eine teil wegfällt


Ok, sehe worauf du hinauswillst, Umformungen zwischen x_i und x_dach bzw. y_i und y_dach... Danke.

Zitat

Original von AtroX_Worf
Ach ja, LR geht glaube in O(2/3 n³), Cholesky (kannst du bei X'X machen) geht in O(1/3 n³).


Ist halt immer noch kubisch, bei ausreichend grossen n hilft auch ein freundliches 1/3 nicht. :(

Zitat

Wenn du nicht die genauen Lösungen brauchst ist ein iteratives Verfahren für dich vielleicht geeigneter.


Hmm, rückst du ein paar Stichworte raus? :)

Zitat

Ach ja, schreib mal genau deine Anwendung. Für mich hört es sicher eher so an, als höttest du ein mathematisches/modelltheoretisches Problem und keines der Laufzeit.


Ich brauche die Koeffizienten für ein Klassifikationsproblem, die werden dann wahrscheinlich nachträglich noch auf [0, 1] oder [-1, 1] plattgedrückt. Input ist erstmal eine Punktewolke in der Grössenordnung von einigen 100,000 Punkten (mit x_i = i und zufälligen positiven y_i), davon würde ich mir systematisch eine kleine Teilmenge herauspicken, z.B. 10 Punkte in gleichen Abständen.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Sheep« (03.11.2008, 19:13)