Können Sie der multiplen linearen Regression Polynomterme hinzufügen?


8

Ich bin ein wenig verwirrt darüber, wann Sie einem multiplen linearen Regressionsmodell Polynomterme hinzufügen sollten oder nicht. Ich weiß, dass Polynome verwendet werden, um die Krümmung in den Daten zu erfassen, aber es scheint immer die Form zu haben:

y=x1+x2+x12+x22+x1x2+c

Was ist, wenn Sie wissen, dass es eine lineare Beziehung zwischen y und x1 , aber eine nichtlineare Beziehung zwischen y und x2 ? Können Sie ein Modell verwenden in Form von:

y=x1+x2+x22+c

Ich denke meine Frage ist, ist es gültig, den Term x12 und den Term x1x2 löschen, oder müssen Sie der generischen Form eines polynomiellen Regressionsmodells folgen?


5
Nur der Vollständigkeit halber beachten Sie, dass , wenn Sie im Modell müssen Sie haben x zu. Durchsuchen Sie diese Website nach dem Prinzip der Marginalität, um weitere Informationen zu erhalten. Ich weiß, dass Sie nicht vorgeschlagen haben, dies zu tun, aber die Informationen könnten hilfreich sein. x2x
Mdewey

Es ist wirklich seltsam, so etwas wie und es als lineares Regressionsmodell zu bezeichnen, aber es ist definitiv so. Denken Sie daran, dass dies mit der Linearität der Koeffizienten zu tun hat. Ich schlage das Video von Mathematical Monk vor: m.youtube.com/watch?v=rVviNyIR-fI . Fünfzehn Minuten scheinen eine Weile zu dauern, aber Sie werden nie vergessen, dass lineare Regression nichtlineares Verhalten beinhalten kann. Vielleicht als Frage an das OP: ist y = y=ax+bx2 ein lineares Regressionsmodell? y=ax+bx2
Dave

@mdewey, Ihre Aussage ist zu allgemein, um korrekt und / oder in allen Einstellungen sinnvoll zu sein. Ich kann mir leicht ein genau definiertes Modell mit vorstellen, aber ohne x . ZB Fälle, in denen der Datenerzeugungsprozess y = β 0 + β 1 x 2 + ε ist oder in denen y = β 0 + β 1 z + ε ist, wobei x = x2xy=β0+β1x2+εy=β0+β1z+ε (undz>0), oder wo das Modell einfach die bessere Annäherung (im Vergleich zu der mitx) an den Datenerzeugungsprozess ist, mit dem wir konfrontiert sind. x=zz>0x
Richard Hardy

Antworten:


14

Zusätzlich zu der hervorragenden Antwort von @ mkt dachte ich, ich würde Ihnen ein konkretes Beispiel geben, damit Sie eine gewisse Intuition entwickeln können.

Generieren Sie Daten zum Beispiel

In diesem Beispiel habe ich einige Daten mit R wie folgt generiert:

set.seed(124)

n <- 200
x1 <- rnorm(n, mean=0, sd=0.2)
x2 <- rnorm(n, mean=0, sd=0.5)

eps <- rnorm(n, mean=0, sd=1)

y = 1 + 10*x1 + 0.4*x2 + 0.8*x2^2 + eps

Wie Sie oben sehen können, stammen die Daten aus dem Modell y=β0+β1x1+β2x2+β3x22+ϵ , wobei ϵ ein normalverteilter Zufallsfehlerterm mit ist Mittelwert 0 und unbekannte Varianz σ2 . Weiterhin ist β0=1 , β1=10 , β2=0,4 undβ3=0,8 , währendσ=1 .

Visualisieren Sie die generierten Daten über Coplots

Mit den simulierten Daten zur Ergebnisvariablen y und den Prädiktorvariablen x1 und x2 können wir diese Daten mithilfe von Coplots visualisieren :

library(lattice)

coplot(y ~ x1 | x2,  
       number = 4, rows = 1,
       panel = panel.smooth)

coplot(y ~ x2 | x1,  
       number = 4, rows = 1,
       panel = panel.smooth)

Die resultierenden Coplots sind unten gezeigt.

Das erste Coplot zeigt Streudiagramme von y gegen x1, wenn x2 zu vier verschiedenen Bereichen beobachteter Werte gehört (die sich überlappen), und erweitert jedes dieser Streudiagramme mit einer glatten, möglicherweise nichtlinearen Anpassung, deren Form aus den Daten geschätzt wird.

Geben Sie hier die Bildbeschreibung ein

Das zweite Coplot zeigt Streudiagramme von y gegen x2, wenn x1 zu vier verschiedenen Bereichen beobachteter Werte gehört (die sich überlappen), und verbessert jedes dieser Streudiagramme mit einer glatten Anpassung.

Geben Sie hier die Bildbeschreibung ein

Der erste Coplot legt nahe, dass anzunehmen ist, dass x1 bei der Steuerung von x2 einen linearen Effekt auf y hat und dass dieser Effekt nicht von x2 abhängt.

Der zweite Coplot legt nahe, dass anzunehmen ist, dass x2 bei der Steuerung von x1 einen quadratischen Effekt auf y hat und dass dieser Effekt nicht von x1 abhängt.

Passen Sie ein korrekt angegebenes Modell an

Die Coplots schlagen vor, das folgende Modell an die Daten anzupassen, was einen linearen Effekt von x1 und einen quadratischen Effekt von x2 ermöglicht:

m <- lm(y ~ x1 + x2 + I(x2^2))  

Erstellen Sie Component Plus-Restdiagramme für das korrekt angegebene Modell

Sobald das korrekt angegebene Modell an die Daten angepasst ist, können wir die Komponenten- und Restdiagramme für jeden im Modell enthaltenen Prädiktor untersuchen :

library(car)

crPlots(m)

Diese Komponenten plus Restdiagramme sind unten gezeigt und legen nahe, dass das Modell korrekt spezifiziert wurde, da sie keine Hinweise auf Nichtlinearität usw. aufweisen. In der Tat gibt es in jedem dieser Diagramme keine offensichtliche Diskrepanz zwischen der gepunkteten blauen Linie, die auf einen linearen Effekt von hinweist der entsprechende Prädiktor und die durchgezogene Magenta-Linie deuten auf einen nichtlinearen Effekt dieses Prädiktors im Modell hin.

Geben Sie hier die Bildbeschreibung ein

Passen Sie ein falsch angegebenes Modell an

Lassen Sie uns den Anwalt des Teufels spielen und sagen, dass unser lm () -Modell tatsächlich falsch spezifiziert (dh falsch spezifiziert) wurde, in dem Sinne, dass es den quadratischen Term I (x2 ^ 2) wegließ:

m.mis <-  lm(y ~ x1 + x2)

Erstellen Sie Component Plus-Restdiagramme für das falsch angegebene Modell

Wenn wir Komponenten plus Residuendiagramme für das falsch spezifizierte Modell konstruieren würden, würden wir sofort einen Hinweis auf eine Nichtlinearität des Effekts von x2 im falsch spezifizierten Modell sehen:

crPlots(m.mis)

Mit anderen Worten, wie unten zu sehen ist, konnte das falsch spezifizierte Modell den quadratischen Effekt von x2 nicht erfassen, und dieser Effekt wird in der Komponente plus Restdiagramm angezeigt, die dem Prädiktor x2 im falsch spezifizierten Modell entspricht.

Geben Sie hier die Bildbeschreibung ein

Die Fehlspezifikation des Effekts von x2 im Modell m.mis wäre auch offensichtlich, wenn Diagramme der mit diesem Modell verbundenen Residuen gegen jeden der Prädiktoren x1 und x2 untersucht werden:

par(mfrow=c(1,2))
plot(residuals(m.mis) ~ x1, pch=20, col="darkred")
abline(h=0, lty=2, col="blue", lwd=2)
plot(residuals(m.mis) ~ x2, pch=20, col="darkred")
abline(h=0, lty=2, col="blue", lwd=2)

Wie unten zu sehen ist, zeigt die Darstellung der mit m.mis gegen x2 assoziierten Residuen ein klares quadratisches Muster, was darauf hindeutet, dass das Modell m.mis dieses systematische Muster nicht erfassen konnte.

Geben Sie hier die Bildbeschreibung ein

Erweitern Sie das falsch angegebene Modell

Um das Modell m.mis korrekt anzugeben, müssten wir es so erweitern, dass es auch den Term I (x2 ^ 2) enthält:

m <- lm(y ~ x1 + x2 + I(x2^2)) 

Hier sind die Diagramme der Residuen gegen x1 und x2 für dieses korrekt angegebene Modell:

par(mfrow=c(1,2))
plot(residuals(m) ~ x1, pch=20, col="darkred")
abline(h=0, lty=2, col="blue", lwd=2)
plot(residuals(m) ~ x2, pch=20, col="darkred")
abline(h=0, lty=2, col="blue", lwd=2)

Beachten Sie, dass das quadratische Muster, das zuvor in der Darstellung der Residuen gegen x2 für das falsch spezifizierte Modell m.mis zu sehen war, jetzt aus der Darstellung der Residuen gegen x2 für das korrekt spezifizierte Modell m verschwunden ist.

Beachten Sie, dass die vertikale Achse aller hier gezeigten Diagramme der Residuen gegen x1 und x2 als "Residuum" bezeichnet werden sollte. Aus irgendeinem Grund schneidet R Studio dieses Etikett ab.

Geben Sie hier die Bildbeschreibung ein


11

Ja, was Sie vorschlagen, ist in Ordnung. In einem Modell ist es vollkommen gültig, die Antwort auf einen Prädiktor als linear und einen anderen als polynomisch zu behandeln. Es ist auch völlig in Ordnung, keine Interaktionen zwischen den Prädiktoren anzunehmen.


1
xx2x

@Dayne Gute Frage! Dies ist ein Thema, das hier und hier
mkt - Reinstate Monica

1
@mkt Diese Links bieten völlig andere Ansätze als Ingolifs 'Vorstellung von orthogonalen Polynomen. Irgendwelche Gedanken zum orthogonalen Polynomansatz?
Dave

1
@ Dave Weiß nicht zu viel darüber, ich fürchte. Es kann gut sein, eine neue Frage zum Vergleich der Ansätze zu stellen.
mkt - Monica

7

Sie sollten darauf achten, orthogonale Polynome zu verwenden, wenn Sie Polynomterme hinzufügen möchten.

x2x

Beobachten:

Geben Sie hier die Bildbeschreibung ein

x,x2,x3

Zwischen 0 und 1,5 nehmen alle drei Kurven monoton zu, und obwohl sie sich unterschiedlich krümmen, ergeben sie ähnliche Qualitätsanpassungen, wenn x positiv mit y korreliert. Indem Sie alle drei in Ihrem Code verwenden

y ~ x + x^2 + x^3

Sie verwenden im Wesentlichen redundante Formen, um Ihre Daten anzupassen.

Orthogonale Polynome geben Ihnen im Wesentlichen zusätzlichen Spielraum beim Anpassen, und jedes Polynom ist im Wesentlichen unabhängig von den anderen.

Geben Sie hier die Bildbeschreibung ein

Drei Polynome vom Grad 1,2 und 3, die durch die Poly () - Funktion in R erzeugt werden.

Anstatt sie explizit als Polynome zu betrachten, betrachten Sie sie vielleicht stattdessen als "Trendkomponenten" oder so:

x

x2

x3xx2

Es gibt eine Menge Hardout-Mathematik in orthogonalen Polynomen, aber zum Glück müssen Sie nur zwei Dinge wirklich wissen:

  1. Orthogonale Polynome sind nur über einen bestimmten Bereich orthogonal. Das Beispiel, das ich gegeben habe, beinhaltet Polynome, die nur orthogonal zwischen 0 und 1,5 sind.
  2. x

2
Das ist äußerst interessant und nichts, was ich vorher gehört hatte. Haben Sie eine Referenz, die besagt, dass dies jedoch notwendig oder nützlich ist? Und nützlich für Vorhersage oder Parameterinferenz? Und kennen Sie einen Python-Befehl für "poly"?
Dave

Verschiedene Facetten der orthogonalen Polynomregression wurden hier und hier und vieles mehr angesprochen .
Jason

Tolle Antwort, und danke, dass du es besser angesprochen hast als den Beitrag, den ich mir vorgestellt hatte. :)
Jason

1
@Ingolifs: Dies ist die beste Erklärung für orthogonale Polynome, die ich bisher auf dieser Site gelesen habe! Ich stimme Dave zu, dass es hilfreich wäre, in Ihrer Antwort die Nützlichkeit orthogonaler Polynome für die Vorhersage oder Parameterinferenz zu kommentieren.
Isabella Ghement

1
+1, aber seien Sie vorsichtig, polydenn wenn Sie es versuchen, predictwerden die Polynome in der Vorhersagestichprobe angepasst. dh wir bekommen Müll.
usεr11852

0

Es gibt keine Regel, die besagt, dass Sie alle Ihre Variablen verwenden müssen. Wenn Sie versuchen, das Einkommen vorherzusagen, und Ihre Funktionsvariablen SSN, Schuljahre und Alter sind und Sie die SSN löschen möchten, weil Sie erwarten, dass eine Korrelation zwischen ihr und dem Einkommen falsch ist, müssen Sie dies beurteilen. Ein Modell ist nicht einfach ungültig, weil es andere Variablen gibt, die Sie theoretisch hätten einbeziehen können, aber nicht. Die Entscheidung, welche Polynombegriffe eingeschlossen werden sollen, ist nur eine von vielen Entscheidungen bezüglich der Merkmalsauswahl.

Während Polynommodelle häufig damit beginnen, dass alle Begriffe enthalten sind, können sie alle dahingehend bewertet werden, wie viel sie dem Modell hinzufügen. Wenn es so aussieht, als ob ein bestimmter Begriff meist nur überpasst, kann er in späteren Iterationen des Modells gelöscht werden. Durch die Regularisierung wie die Lasso-Regression können weniger nützliche Variablen automatisch gelöscht werden. Im Allgemeinen ist es besser, ein Modell mit zu vielen Variablen zu starten und es auf diejenigen zu reduzieren, die am nützlichsten sind, als nur mit den Variablen zu beginnen, auf die sich das Modell Ihrer Meinung nach verlassen sollte, und möglicherweise eine Beziehung zu verpassen, die Sie haben nicht erwartet.

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.