Konfidenzintervall für das GAM-Modell

14

Lesen mgcv::gamder Hilfeseite:

Vertrauens- / Glaubwürdigkeitsintervalle sind für jede anhand eines angepassten Modells vorhergesagte Menge leicht verfügbar

Allerdings kann ich keinen Weg finden, um tatsächlich einen zu bekommen. Ich dachte, ich predict.gamhätte einen type=confidenceund einen levelParameter, aber das tut es nicht. Können Sie mir helfen, wie man es erstellt?

George Dontas
quelle

Antworten:

32

In gewohnter Weise:

p <- predict(mod, newdata, type = "link", se.fit = TRUE)

Beachten Sie dann, dass peine Komponente $se.fitmit Standardfehlern der Vorhersagen für Beobachtungen in enthält newdata. Sie können dann CI bilden, indem Sie die SE mit einem Wert multiplizieren, der Ihrem gewünschten Level entspricht. Beispielsweise wird ein ungefähres 95% -Konfidenzintervall wie folgt gebildet:

upr <- p$fit + (2 * p$se.fit)
lwr <- p$fit - (2 * p$se.fit)

Sie ersetzen das benötigte Intervall durch einen geeigneten Wert aus einer oder Gaußschen Verteilung.t

Beachten Sie, dass ich benutze, type = "link"wie Sie nicht sagen, wenn Sie ein GAM oder nur eine AM haben. Im GAM müssen Sie das Konfidenzintervall auf der Skala des linearen Prädiktors bilden und dieses dann in die Skala der Antwort umwandeln, indem Sie die Inverse der Verbindungsfunktion anwenden:

upr <- mod$family$linkinv(upr)
lwr <- mod$family$linkinv(lwr)

Beachten Sie nun, dass dies sehr ungefähre Intervalle sind. Außerdem beziehen sich diese Intervalle auf die vorhergesagten Werte und berücksichtigen nicht die Tatsache, dass die Glättungsauswahl durchgeführt wurde.

Aus der posterioren Verteilung der Parameter kann durch Simulation ein simultanes Konfidenzintervall berechnet werden. Ich habe ein Beispiel dafür auf meinem Blog .

Wenn Sie ein Konfidenzintervall wünschen, das nicht von den Glättungsparametern abhängig ist (dh eines, das die Werte der Glättungsparameter berücksichtigt, die wir nicht kennen, sondern stattdessen schätzen), fügen Sie unconditional = TRUEdem predict()Aufruf hinzu.

Wenn Sie dies nicht selbst tun möchten, beachten Sie, dass neuere Versionen von mgcv eine plot.gam()Funktion haben, die ein Objekt mit allen Daten zurückgibt, die zum Erstellen der Plots der Glättungen und ihrer Konfidenzintervalle verwendet werden. Sie können die Ausgabe einfach plot.gam()in einem Objekt speichern

obj <- plot(model, ....)

und dann inspizieren obj, was eine Liste mit einer Komponente pro Glättung ist. In seWithMean = TRUEauf den plot()Anruf Konfidenzintervall zu erhalten , die auf Glätte Parameter nicht an Bedingungen geknüpft ist.

Setzen Sie Monica - G. Simpson wieder ein
quelle
Wenn Sie das simultane CI und den parametrischen Bootstrap ausführen, wird der Code ein wenig komplexer. Wenn nicht, kann ich für jede weitere Beispiele nennen.
Setzen Sie Monica - G. Simpson
+1 für die Antwort. Tatsächlich ein beeindruckender Blog-Beitrag, ich werde ihn eine Weile studieren, um meine Grafikfähigkeiten zu verbessern.
Bogenschütze
Wie kann ich auf diesen beeindruckenden Blog-Beitrag zugreifen ( ucfagls.wordpress.com/2011/06/12/… )? Derzeit benötigt der Blog ein Login.
Genorama
@geneorama Ich habe mein Blog von Wordpress weggezogen und ein Jahr lang für Weiterleitungen auf das neue für alle URLs bezahlt, aber das habe ich kürzlich abgelaufen lassen. Das tut mir leid. Ich habe den neuen Link bearbeitet, für den keine Anmeldung erforderlich ist. (Das Login ist, um zwei Kopien desselben Posts zu vermeiden und ich war zu faul, um die Seiten von der Wordpress-Site zu löschen.)
Reinstate Monica - G. Simpson
Der ursprüngliche Blog-Beitrag (siehe den Bearbeitungsverlauf dieser Fragen und Antworten) wies einen grundlegenden Fehler in der Art und Weise auf, wie das zeitgleiche Intervall erstellt wurde. Der Link in der aktuellen (Stand: Dezember 2016) Version der Antwort berechnet das Simultanintervall korrekt.
wieder einzusetzen Monica - G. Simpson
5

Wenn Sie sie nur zeichnen möchten, plot.gamverfügt die Funktion über eine Schattierung, die standardmäßig Konfidenzintervalle mit dem Argument shade verwendet. Siehe auch gam.vcompfür die Intervalle zu bekommen.

John
quelle
5

Das Paket mgcv(neuer als gam) zeichnet leicht glaubwürdige Intervalle auf. Dieser Bayes'sche Ansatz unterscheidet sich von den Konfidenzintervallen, aber die Ergebnisse sind fast gleich, wie numerische Simulationen gezeigt haben (siehe den Artikel von Marra und Wood in mgcv).

Peter Straka
quelle
2
+1 Ein wichtiges Ergebnis von Marra & Woods Arbeit ist, dass sie Nychkas Verständnis / Erklärung dafür entwickeln, warum die empirischen Bayes-Intervalle auch als "funktionsübergreifende" Konfidenzintervalle ziemlich außergewöhnlich häufig interpretiert / verhalten. Sie können die Intervalle auf bayesianische oder frequentistische Art und Weise behandeln und die Abdeckungseigenschaft, die von der impliziert wird1-αIntervall gilt ungefähr.
Setzen Sie Monica - G. Simpson