Führen Sie eine lineare Regression durch, erzwingen Sie jedoch, dass die Lösung bestimmte Datenpunkte durchläuft


13

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 x=3 , x=19 und x=89 (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!


Warum nennst du es "linear", wenn du ein Polynom verwendest? Jeder Punkt, den Sie durchlaufen möchten, ist eine Einschränkung, die Ihren Freiheitsgrad verringert. Sie können dann einen eingeschränkten Optimierungsalgorithmus verwenden.
curious_cat

3
Es ist linear, weil Sie Koeffizienten zu einer linearen Kombination finden. Wenn Sie beispielsweise Ihre Daten in eine Kubikgröße einpassen möchten, ermitteln Sie die Koeffizienten ( ) von y = c 0 + c 1 x + c 2 x 2 + c 3 x 3 . cy=c0+c1x+c2x2+c3x3
Spacey

1
@Mohammad: Eine andere Möglichkeit zur Annäherung an die gewünschten Werte wäre die Verwendung einer Lösung mit gewichteten kleinsten Quadraten und die Gewichtung der Punkte, durch die die Regressionslinie verlaufen soll. Dies sollte die Lösung zwingen, sehr genau an die von Ihnen ausgewählten Punkte heranzugehen.
Jason R

@JasonR Schön dich hier zu sehen. Ja, WLS ist in der Tat ein interessanter Anwärter. Ich bin mit Whubers Antwort gegangen, weil die Polynom-Faktorisierung klug ist und weil sie die Fehlerstruktur gut beibehält.
Spacey

Antworten:


18

Das betreffende Modell kann geschrieben werden

y=p(x)+(x-x1)(x-xd)(β0+β1x++βpxp)+ε

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)=yid1(x1,y1),,(xd,yd)ε erlaubt es uns, dieses Modell umzuschreiben als(xx1)(xxd)=r(x)

yp(x)=β0r(x)+β1r(x)x+β2r(x)x2++βpr(x)xp+ε,

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+1r(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)

# Generate some data that *do* pass through three points (up to random error).
x <- 1:24
f <- function(x) ( (x-2)*(x-12) + (x-2)*(x-23) + (x-12)*(x-23) )  / 100
y0 <-(x-2) * (x-12) * (x-23) * (1 + x - (x/24)^2) / 10^4  + f(x)
set.seed(17)
eps <- rnorm(length(y0), mean=0, 1/2)
y <- y0 + eps
data <- data.frame(x,y)

# Plot the data and the three special points.
plot(data)
points(cbind(c(2,12,23), f(c(2,12,23))), pch=19, col="Red", cex=1.5)

# For comparison, conduct unconstrained polynomial regression
data$x2 <- x^2
data$x3 <- x^3
data$x4 <- x^4

fit0 <- lm(y ~ x + x2 + x3 + x4, data=data)
lines(predict(fit0), lty=2, lwd=2)

# Conduct the constrained regressions
data$y1 <- y - f(x)
data$r <- (x-2)*(x-12)*(x-23)
data$z0 <- data$r
data$z1 <- data$r * x
data$z2 <- data$r * x^2

fit <- lm(y1 ~ z0 + z1 + z2 - 1, data=data)
lines(predict(fit) + f(x), col="Red", lwd=2)

Handlung

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)und summary(fit)) der kleinsten Quadrate zu überprüfen, kann lehrreich sein - das überlasse ich dem interessierten Leser.


βr(x)xixir(x)

Ich habe ein Beispiel hinzugefügt, Mohammad.
Whuber

Oh, perfekt. Ich werde es studieren. In Ihrem Beispiel wäre es immer noch möglich, die Poly zu zwingen, durch Punkte zu gehen, die Teil der Daten sind, oder?
Spacey

Das ist absolut möglich: Seien Sie jedoch doppelt vorsichtig, wenn Sie die p-Werte oder andere Statistiken interpretieren, da Ihre Einschränkungen jetzt auf den Daten selbst basieren.
Whuber

Deine Post hat mich letzte Nacht wachgerüttelt. Ich habe mir das LIP beigebracht. (LIP ist interessant. Es ist wie eine Fourier-Zerlegung, aber mit polys).
Spacey

9

(xi,yi)xixyiy

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.

XX2 diese drei (mehr) Punkte in den Datensatz aufgenommen werden. Auf ähnliche Weise können Sie die gerade Linie ermitteln, die sich diesen drei Punkten am besten annähert, indem Sie ein Modell anpassen, das nur auf diese drei Punkte zugreifen kann .


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).


1
xiyi

2
Obwohl das Einwerfen von drei weiteren Punkten und deren Gewichtung ( die Antwort von a la Glen_b) zu einer solchen Übereinstimmung führen könnte, wäre die Interpretation der statistischen Ergebnisse problematisch: Es wären einige Anpassungen erforderlich.
Whuber

6

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


Glen_b, ich hatte keine gewichtete Regression in Betracht gezogen. Das könnte der richtige Weg sein. Ich habe es in meine To-Do-Liste aufgenommen. Ich glaube, ich kann mir das ohne Zwischenfälle beibringen. Können Sie in Bezug auf (1) diesen Aspekt der Neuparametrisierung näher erläutern? Wie nennt man das, was ich zu tun versuche, um das Polynom zu zwingen, bestimmte Punkte zu durchlaufen? Ein Teil des Problems ist, dass ich nicht weiß, wonach ich googeln soll. Wenn ich weiß, wie das heißt, kann ich das, was Sie sagen, möglicherweise mit Online-Material ergänzen. Vielen Dank.
Spacey

Siehe meine Änderungen oben, die einige Suchbegriffe und einen Link mit ein paar weiteren Details enthalten.
Glen_b -Reinstate Monica

2
+1 Weighted Regression ist eine gute Idee. Möglicherweise sind einige Anpassungen der Ausgabestatistiken erforderlich, z. B. Schätzungen des RMS-Fehlers.
Whuber

@whuber +1 in der Tat, wenn die Statistik (wie s2, F, R2... Standardfehler usw.) sollen sich nur auf die nicht "bekannten" Punkte beziehen (was wahrscheinlich erwünscht ist). Abgesehen von den Parameterschätzungen und den angepassten Werten sind die ausgegebenen Rohdaten fast alle falsch . Ich habe ursprünglich einen Satz geschrieben, der sich darauf bezieht, aber ich habe ihn anscheinend vor dem Posten gelöscht. es ist wichtig, es zu erwähnen.
Glen_b -Reinstate Monica

Danke für deine Antwort Glen_b, obwohl ich @whuber 's akzeptiert habe, habe ich immer noch viel von dir gelernt.
Spacey
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.