Verständnis des Konfidenzbandes aus einer Polynomregression


14

Ich versuche, das Ergebnis zu verstehen, das ich in meiner Grafik unten sehe. Normalerweise verwende ich Excel und erhalte eine lineare Regressionslinie, aber im folgenden Fall verwende ich R und erhalte eine polynomielle Regression mit dem Befehl:

ggplot(visual1, aes(ISSUE_DATE,COUNTED)) + geom_point() + geom_smooth()

Meine Fragen beschränken sich also auf Folgendes:

  1. Was ist der graue Bereich (Pfeil Nr. 1) um die blaue Regressionslinie? Ist dies die Standardabweichung der Polynomregression?

  2. Kann ich sagen, dass das, was sich außerhalb des grauen Bereichs (Pfeil 2) befindet, ein Ausreißer ist und was sich innerhalb des grauen Bereichs (Pfeil 3) befindet, innerhalb der Standardabweichung liegt?

Bildbeschreibung hier eingeben

Antworten:


14

Das graue Band ist ein Konfidenzband für die Regressionsgerade. Ich kenne ggplot2 nicht gut genug, um sicher zu sein, ob es sich um ein 1 SE-Konfidenzband oder ein 95% -Konfidenzband handelt, aber ich glaube, es ist das erstere ( Edit: offensichtlich ist es ein 95% -KI ). Ein Konfidenzband repräsentiert die Unsicherheit über Ihre Regressionsgerade. In gewissem Sinne könnte man denken, dass die wahre Regressionsgerade so hoch wie die Oberseite der Band ist, so niedrig wie die Unterseite, oder dass sie innerhalb der Band anders wackelt. (Beachten Sie, dass diese Erklärung intuitiv sein soll und technisch nicht korrekt ist, die vollständige Erklärung jedoch für die meisten Menschen schwer zu befolgen ist.)

Sie sollten das Konfidenzband verwenden, um die Regressionsgerade besser zu verstehen bzw. darüber nachzudenken. Sie sollten es nicht verwenden, um über die Rohdatenpunkte nachzudenken. Denken Sie daran, dass die Regressionsgerade den Mittelwert von an jedem Punkt in X darstellt (wenn Sie dies genauer verstehen müssen, können Sie hier meine Antwort lesen: Was ist die Intuition hinter bedingten Gaußschen Verteilungen? ). Andererseits erwarten Sie sicherlich nicht, dass jeder beobachtete Datenpunkt dem bedingten Mittelwert entspricht. Mit anderen Worten, Sie sollten das Konfidenzband nicht verwenden, um zu beurteilen, ob ein Datenpunkt ein Ausreißer ist. YX


( Bearbeiten: Diese Anmerkung ist peripher zur Hauptfrage, versucht jedoch, einen Punkt für das OP zu klären. )

Eine polynomielle Regression ist keine nichtlineare Regression, obwohl das, was Sie erhalten, nicht wie eine gerade Linie aussieht. Der Begriff "linear" hat in einem mathematischen Kontext eine ganz bestimmte Bedeutung, insbesondere, dass die von Ihnen geschätzten Parameter - die Betas - allesamt Koeffizienten sind. Eine polynomielle Regression bedeutet nur, dass Ihre Kovariaten , X 2 , X 3 usw. sind, dh, sie haben eine nichtlineare Beziehung zueinander, aber Ihre Betas sind immer noch Koeffizienten, daher ist es immer noch ein lineares Modell. Wenn Ihre Betas Exponenten wären, dann hätten Sie ein nichtlineares Modell. XX2X3

In der Summe hat es nichts damit zu tun, ob eine Linie gerade aussieht oder nicht, ob ein Modell linear ist oder nicht. Wenn Sie ein Polynommodell anpassen (z. B. mit und X 2 ), „weiß“ das Modell nicht, dass z. B. X 2 eigentlich nur das Quadrat von X 1 ist . Es "denkt", dass dies nur zwei Variablen sind (obwohl es erkennen kann, dass es eine gewisse Multikollinearität gibt). Somit ist in Wahrheit des Einpassen eine (gerade / flach) Regressionsebene in einem dreidimensionalen Raum statt einer (gekrümmten) Regressionslinie in einem zweidimensionalen Raum. Dies ist für uns nicht nützlich, um darüber nachzudenken, und in der Tat äußerst schwer zu erkennen, da X 2XX2X2X1X2ist eine einwandfreie Funktion von . Infolgedessen machen wir uns keine Gedanken darüber, und unsere Diagramme sind wirklich zweidimensionale Projektionen auf die ( X , Y ) -Ebene. Trotzdem ist die Linie an geeigneter Stelle in gewissem Sinne geradlinig. X(X, Y)

Aus mathematischer Sicht ist ein Modell linear, wenn die Parameter, die Sie schätzen möchten, Koeffizienten sind. Betrachten Sie zur weiteren Verdeutlichung den Vergleich zwischen dem linearen Standardregressionsmodell (OLS) und einem einfachen logistischen Regressionsmodell, das in zwei verschiedenen Formen dargestellt wird:
ln ( π ( Y )

Y=β0+β1X+ε
ln(π(Y)1π(Y))=β0+β1X
π(Y)=exp(β0+β1X)1+exp(β0+β1X)
βββUnterschied zwischen logit- und probit-Modellen .)

+1 Die Beispiele in der Dokumentation legen nahe, dass das Vertrauen ziemlich hoch ist, vielleicht 95%.
whuber

@gung danke für die ausführliche antwort (auch du hast einen check bekommen!). Ich habe deine erste Aussage gelesen und bin ein bisschen verwirrt. Können Sie bitte mehr darüber ausarbeiten. Wenn die resultierende Linie keine gerade Linie ist (y = mx + b), was macht sie dann linear? Nochmals vielen Dank für die Antwort.
ADHG

Die Unterlagen bei docs.ggplot2.org/0.9.3.1/stat_smooth.html bestätigen, dass es sich um ein 95% -Konfidenzband für die Regressionskurve handelt.
Whuber

2
Ich denke, der Standard-Glättere Löss wird hier eher verwendet als die polynomiale Regression?
xan

@adhg, ich dachte, ich hätte das lineare vs. nichtlineare anderswo behandelt, aber ich konnte es nicht finden. Also habe ich hier zusätzliches Material hinzugefügt. HTH
Gung - wieder einzusetzen Monica

11

Um die bereits vorhandenen Antworten zu ergänzen, stellt das Band ein Konfidenzintervall des Mittelwerts dar. Aus Ihrer Frage geht jedoch eindeutig hervor, dass Sie nach einem Vorhersageintervall suchen . Vorhersageintervalle sind Bereiche, die theoretisch in dem Bereich X% der Zeit enthalten sind (in dem Sie den Pegel von X einstellen können), wenn Sie einen neuen Punkt zeichnen.

library(ggplot2)
set.seed(5)
x <- rnorm(100)
y <- 0.5*x + rt(100,1)
MyD <- data.frame(cbind(x,y))

Wir können den gleichen Diagrammtyp erzeugen, den Sie in Ihrer ersten Frage gezeigt haben, mit einem Konfidenzintervall um den Mittelwert der geglätteten Löß-Regressionslinie (der Standardwert ist ein Konfidenzintervall von 95%).

ConfiMean <- ggplot(data = MyD, aes(x,y)) + geom_point() + geom_smooth()
ConfiMean

Bildbeschreibung hier eingeben

Als schnelles und unsauberes Beispiel für Vorhersageintervalle generiere ich hier ein Vorhersageintervall mit linearer Regression und glättenden Splines (es ist also nicht unbedingt eine gerade Linie). Mit den Beispieldaten ist es ziemlich gut, für die 100 Punkte liegen nur 4 außerhalb des Bereichs (und ich habe ein 90% -Intervall für die Vorhersagefunktion angegeben).

#Now getting prediction intervals from lm using smoothing splines
library(splines)
MyMod <- lm(y ~ ns(x,4), MyD)
MyPreds <- data.frame(predict(MyMod, interval="predict", level = 0.90))
PredInt <- ggplot(data = MyD, aes(x,y)) + geom_point() + 
           geom_ribbon(data=MyPreds, aes(x=fit,ymin=lwr, ymax=upr), alpha=0.5)
PredInt

Bildbeschreibung hier eingeben

Jetzt noch ein paar Notizen. Ich stimme Ladislav zu, dass Sie Zeitreihen-Vorhersagemethoden in Betracht ziehen sollten, da Sie seit 2007 regelmäßige Zeitreihen haben und es aus Ihrer Handlung klar hervorgeht, ob es eine Saisonalität gibt (das Verbinden der Punkte würde es viel klarer machen). Zu diesem Zweck empfehle ich, die Funktion forecast.stl im Prognosepaket zu prüfen, in der Sie ein saisonales Fenster auswählen können und die mithilfe von Loess eine robuste Zerlegung der Saisonalität und des Trends ermöglicht. Ich erwähne robuste Methoden, weil Ihre Daten einige auffällige Spitzen aufweisen.

Im Allgemeinen würde ich für Nicht-Zeitreihendaten andere robuste Methoden in Betracht ziehen, wenn Sie Daten mit gelegentlichen Ausreißern haben. Ich weiß nicht, wie man Vorhersageintervalle direkt mit Loess generiert, aber Sie können eine Quantilregression in Betracht ziehen (abhängig davon, wie extrem die Vorhersageintervalle sein müssen). Andernfalls können Sie Splines in Betracht ziehen, um zu ermöglichen, dass die Funktion über x variiert, wenn Sie nur eine Anpassung vornehmen möchten, um möglicherweise nichtlinear zu sein.


4

Nun, die blaue Linie ist a glatte lokale Regression . Sie können die Verwackelung der Linie mit dem spanParameter (von 0 bis 1) steuern . Ihr Beispiel ist jedoch eine "Zeitreihe". Versuchen Sie daher, nach geeigneteren Analysemethoden zu suchen, als nur einer glatten Kurve zu entsprechen (die nur dazu dienen sollte, einen möglichen Trend aufzudecken).

Laut Dokumentation zu ggplot2(und Kommentar unten): stat_smooth ist ein Konfidenzintervall der in grau dargestellten Glättung . Wenn Sie das Konfidenzintervall deaktivieren möchten, verwenden Sie se = FALSE.


1
(1) Ich sehe in Ihrer Referenz nicht, wo behauptet wird, dass der graue Bereich das punktweise Konfidenzintervall ist. Aus den Beispielen scheint ziemlich klar zu sein, dass der graue Bereich stattdessen ein Konfidenzintervall für die Kurve ist . (2) Niemand würde vernünftigerweise den großen Anteil von Punkten außerhalb der Grauzone als "Ausreißer" deklarieren. es gibt einfach zu viele von ihnen.
Whuber

(1) Mein Fehler, hier füge ich ein Buch hinzu, das sich auf "point-wise confidence interval" bezieht: Wickham H (2009) ggplot2 Elegant Graphics for Data Analysis. Medien 212. (Seite 14). (2) Ich stimme zu.
Ladislav Naďo

Geben Sie in einer Ihrer Referenzen an, auf welches Standard-Konfidenzniveau Sie eingestellt sind?
Whuber

Nein, ich kann keine Referenz zur Standardeinstellung finden.
Ladislav Naďo

Ich habe die Standardeinstellung auf der ersten Seite Ihrer Referenz gefunden: "(0,95 standardmäßig)." Das bedeutet , dass entweder diese glattere schwerwiegende Fehler hat oder sonst Ihre Interpretation der Referenz ist falsch: denn so ein großer Teil der Datenpunkte typischerweise über den grauen Bereich liegt und den Code unter der Annahme korrekt ist , die Grauzone hat ein Vertrauensbereich sein für die Vorhersage (angepasste Kurve) und kein Vertrauensbereich für die Punkte.
Whuber
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.