Ich weiß, wie man eine lineare Regression auf einer Menge von Punkten durchführt. Das heißt, ich kann ein Polynom meiner Wahl an einen gegebenen Datensatz anpassen (im LSE-Sinne). Was ich jedoch nicht weiß, ist, wie ich meine Lösung zwingen kann, bestimmte Punkte meiner Wahl durchzugehen. Ich habe dies schon einmal gesehen, kann mich aber nicht erinnern, wie das Verfahren aufgerufen wurde, geschweige denn, wie es durchgeführt wurde.
Als sehr einfaches und konkretes Beispiel lassen Sie uns sagen, dass ich 100 Punkte auf der xy-Ebene verstreut habe und ich beschließe, ein Polynom beliebiger Ordnung durch sie zu ziehen. Ich kann diese lineare Regression sehr gut ausführen. Nehmen wir jedoch an, ich möchte meine Lösung "erzwingen", indem ich beispielsweise drei meiner Datenpunkte an den x-Koordinaten , und (und ihren entsprechenden y-Koordinaten) durchläuft natürlich).
Wie heißt dieses allgemeine Verfahren, wie wird es durchgeführt, und gibt es bestimmte Fallstricke, die ich beachten muss?
Bearbeiten:
Ich möchte hinzufügen, dass ich nach einem konkreten Weg suche, dies zu tun. Ich habe ein Programm geschrieben, das die lineare Regression auf zwei Arten ausführt: durch direktes Invertieren der Kovarianzmatrix oder durch Gradientenabstieg. Was ich frage ist, wie genau ändere ich Schritt für Schritt, was ich getan habe, so dass ich die Polynomlösung zwinge, bestimmte Punkte durchzugehen?
Vielen Dank!
Antworten:
Das betreffende Modell kann geschrieben werden
wobei ein Polynom vom Grad d - 1 ist, das durch vorbestimmte Punkte ( x 1 , y 1 ) , ... , ( x d , y d ) verläuft, und ε zufällig ist. (Verwenden Sie das Lagrange-Interpolationspolynom .) Schreiben ( x - x 1 ) ⋯ ( x - x d ) = rp(xi)=yi d−1 (x1,y1),…,(xd,yd) ε erlaubt es uns, dieses Modell umzuschreiben als(x−x1)⋯(x−xd)=r(x)
Dies ist ein Standard-OLS-Multiple-Regression-Problem mit derselben Fehlerstruktur wie das Original, bei dem die unabhängigen Variablen die Größen r ( x ) x i , i = 0 , 1 , … , p sindp+1 r(x)xi, i=0,1,…,p . Berechnen Sie einfach diese Variablen und führen Sie Ihre vertraute Regressionssoftware aus. Achten Sie dabei darauf, dass keine konstanten Terme enthalten sind. Es gelten die üblichen Vorbehalte gegen Regressionen ohne konstante Laufzeit. insbesondere kann das künstlich hoch sein; Die üblichen Auslegungen treffen nicht zu.R2
(Tatsächlich ist die Regression durch den Ursprung ein Sonderfall dieser Konstruktion, bei der , ( x 1 , y 1 ) = ( 0 , 0 ) und p ( x ) = 0 ist , so dass das Modell y = β ist 0 x + ⋯ + β p x pd=1 (x1,y1)=(0,0) p(x)=0 )y=β0x+⋯+βpxp+1+ε.
Hier ist ein Beispiel (in
R
)Die drei Fixpunkte sind durchgehend rot dargestellt - sie sind nicht Teil der Daten. Die ungezwungene Anpassung des Polynoms kleinster Quadrate vierter Ordnung wird mit einer schwarz gepunkteten Linie dargestellt (es gibt fünf Parameter). Die eingeschränkte Anpassung (in der Größenordnung von fünf, jedoch mit nur drei freien Parametern) wird mit der roten Linie angezeigt.
Die Ausgabe (
summary(fit0)
undsummary(fit)
) der kleinsten Quadrate zu überprüfen, kann lehrreich sein - das überlasse ich dem interessierten Leser.quelle
Wenn Sie eine Linie zwingen möchten, durch zwei Punkte in einer XY-Ebene zu gehen, ist dies auch recht einfach. Zwei beliebige Punkte können mit einer Linie angepasst werden. Sie können die Punkt-Steigungs-Formel verwenden , um Ihre Steigung zu berechnen, und dann einen der Punkte, die Steigung und die Gleichung einer Linie verwenden , um den Achsenabschnitt zu finden.
Ich fühle mich jedoch gezwungen, an dieser Stelle zu erwähnen, dass dies möglicherweise keine gute Sache ist (es sei denn, Ihre Theorie liefert sehr solide Gründe dafür). Möglicherweise möchten Sie auch die Bayes'sche Regression untersuchen , bei der Sie Ihrem Modell ermöglichen können, die beste Kombination aus den Informationen in Ihren Daten und einigen vorherigen Informationen zu finden (die Sie verwenden können, um den Achsenabschnitt stark gegen Null zu verschieben, ohne dies zu tun erzwingen).
quelle
Um die exzellente Abdeckung des linearen Falls durch @ gung ein wenig zu erweitern, gibt es im polynomialen Fall höherer Ordnung mehrere Möglichkeiten, die Sie entweder genau oder ungefähr durchführen können (aber so genau, wie Sie es benötigen).
Beachten Sie zunächst, dass die Freiheitsgrade für das Polynom (oder für eine beliebige angepasste Funktion) mindestens so groß sein müssen wie die Anzahl der "bekannten" Punkte. Wenn die Freiheitsgrade gleich sind, benötigen Sie die Daten überhaupt nicht, da die Kurve vollständig bestimmt ist. Wenn es mehr "bekannte" Punkte gibt, können Sie sie nicht lösen (es sei denn, sie liegen alle auf genau dem gleichen Polynom des angegebenen Grades. In diesem Fall ist eine geeignet große Teilmenge ausreichend). Von hier an werde ich nur darüber sprechen, wann das Polynom mehr df als die bekannten Punkte hat (wie eine Kubik - mit 4df - und drei bekannten Punkten, so dass die Kubik weder durch bekannte Punkte überbestimmt noch vollständig von ihnen bestimmt wird). .
1) "Die Kurve muss durch diesen Punkt verlaufen" ist eine lineare Einschränkung für die Parameter, die zu einer eingeschränkten Schätzung oder eingeschränkten kleinsten Quadraten führt (obwohl beide Terme andere Dinge als lineare Einschränkungen enthalten können, wie z. B. Positivitätsbeschränkungen). Sie können entweder lineare Abhängigkeiten einbeziehen
(a) Neufassung der Parametrisierung, um implizit jede Einschränkung einzuschließen, was zu einem Modell niedrigerer Ordnung führt.
(b) Verwenden von Standardwerkzeugen, die lineare Beschränkungen für die Parameter einer Anpassung der kleinsten Quadrate enthalten können. (in der Regel über etwas wie die Formel unter dem obigen Link angegeben)
2) Ein anderer Weg ist die gewichtete Regression. Wenn Sie den bekannten Punkten ein ausreichend großes Gewicht geben, erhalten Sie im Wesentlichen die gleiche Passform wie in (1). Dies ist häufig leicht zu implementieren, kann wesentlich schneller als das Neuparametrieren sein und kann in Paketen durchgeführt werden, die keine eingeschränkte Anpassung bieten.
Es gelten alle Einschränkungen von @ gung
quelle