Ich habe angefangen, ein bisschen in die Funktion plot.lm zu graben . Diese Funktion gibt sechs Diagramme für lm an. Sie sind:
- eine Darstellung der Residuen gegen angepasste Werte
- ein Scale-Location-Diagramm von sqrt (| Residuen |) gegen angepasste Werte
- Ein normales QQ-Diagramm, ein Diagramm der Abstände von Cook gegenüber den Zeilenbeschriftungen
- eine Darstellung der Residuen gegen Hebel
- eine Darstellung der Abstände von Cook gegen die Hebelwirkung / (1 Hebelwirkung)
Und ich frage mich, welche anderen gängigen / nützlichen Erweiterungen aktueller Diagramme für lineare Modelle existieren und wie sie in R durchgeführt werden können. (Links zu Paketartikeln sind ebenfalls willkommen)
Die Boxcox-Funktion (von {MASS}) ist also ein Beispiel für ein anderes nützliches Diagnose-Diagramm (und eine solche Antwort wäre großartig). Ich bin jedoch neugieriger auf Variationen / Erweiterungen bestehender Standard-Diagnose-Diagramme für lm in R (obwohl allgemein) andere Bemerkungen zum Thema sind immer willkommen).
Hier sind einige einfache Beispiele dafür, was ich meine:
#Some example code for all of us to refer to
set.seed(2542)
x1 <- rnorm(100)
x2 <- runif(100, -2,2)
eps <- rnorm(100,0,2)
y <- 1 + 2*x1 + 3*x2 + eps
y[1:4] <- 14 # adding some contaminated points
fit <- lm(y~x1+x2)
#plot(y~x1+x2)
#summary(fit)
Darstellung der Residuen gegen jedes der Potentiale x
plot(resid(fit)~x1); abline (h = 0)
plot(resid(fit)~x2); abline (h = 0)
# plot(resid(fit)~x1+x2) # you can also use this, but then you wouldn't be able to use the abline on any plot but the last one
Hinzufügen der 0-1-Zeile (wie heißt diese Zeile auf Englisch?!) Zum qqplot, um zu sehen, wie stark die qqline davon abweicht
plot(fit, which = 2); abline(0,1, col = "green")
Plotten des qq-Plots mit extern studentisierten Residuen
# plot(fit, which = 2); abline(0,1, col = "green") # The next command is just like this one
qqnorm(rstandard(fit), ylim = c(-2.2,4.2)); qqline(rstudent(fit), lty = 2) ;abline(0,1, col = "green")
qqnorm(rstudent(fit), ylim = c(-2.2,4.2)); qqline(rstudent(fit), lty = 2) ;abline(0,1, col = "green")
# We can note how the "bad" points are more extreme when using the rstudent
r
regression
linear-model
diagnostic
Tal Galili
quelle
quelle
Antworten:
Das Paket
car
bietet eine Reihe nützlicher Funktionen für diagnostische Diagramme linearer und verallgemeinerter linearer Modelle. Im Vergleich zu Vanille-R-Plots werden sie häufig mit zusätzlichen Informationen erweitert. Ich empfehle Ihnen,example("<function>")
die folgenden Funktionen auszuprobieren, um zu sehen, wie die Diagramme aussehen. Alle Handlungen sind in Kapitel 6 von Fox & Weisberg ausführlich beschrieben. 2011. Ein Begleiter der angewandten Regression. 2nd ed.residualPlots()
Diagramme Pearson-Residuen gegen jeden Prädiktor (Streudiagramme für numerische Variablen, einschließlich einer Lowess-Anpassung, Boxplots für Faktoren)marginalModelPlots()
Zeigt Streudiagramme der Antwortvariablen für jeden numerischen Prädiktor an, einschließlich einer Lowess-AnpassungavPlots()
zeigt partielle Regressionsdiagramme an: Für jeden Prädiktor ist dies ein Streudiagramm von a) den Residuen aus der Regression der Antwortvariablen bei allen anderen Prädiktoren gegen b) den Residuen aus der Regression des Prädiktors gegen alle anderen PrädiktorenqqPlot()
für ein Quantil-Quantil-Diagramm, das eine Konfidenzhüllkurve enthältinfluenceIndexPlot()
Zeigt jeden Wert für Cooks Abstand, Hutwert, p-Wert für Ausreißertest und studentisierten Rest in einem Spike-Plot gegen den Beobachtungsindex aninfluencePlot()
gibt ein Blasendiagramm von studentisierten Residuen gegen Hutwerte an, wobei die Größe der Blase der Entfernung von Cook entspricht, siehe auchdfbetaPlots()
undleveragePlots()
boxCox()
crPlots()
ist für Komponenten- + Restdiagramme, von denen eine Variante CERES-Diagramme (Kombinieren von bedingten Erwartungen und Rückständen) sind, bereitgestellt vonceresPlots()
spreadLevelPlot()
dient zur Beurteilung der nicht konstanten Fehlervarianz und zeigt absolute studentisierte Residuen gegen angepasste Werte anscatterplot()
bietet stark verbesserte Streudiagramme mit Boxplots entlang der Achsen, Konfidenzellipsen für die bivariate Verteilung und Vorhersagelinien mit Konfidenzbändernscatter3d()
basiert auf einem Paketrgl
und zeigt interaktive 3D-Streudiagramme an, einschließlich Drahtgitter-Vertrauensellipsoiden und Vorhersageebenenexample("scatter3d")
Schauen Sie sich außerdem das
bplot()
Paket an,rms
um einen weiteren Ansatz zur Veranschaulichung der gemeinsamen Verteilung von drei Variablen zu finden.quelle
Diese Antwort konzentriert sich eher auf das, was in Basis R verfügbar ist, als auf externe Pakete, obwohl ich der Meinung bin, dass es sich lohnt, das Paket von Fox zu übernehmen.
Die Funktion
influence()
(oder ihr Wrapperinfluence.measures()
) gibt das meiste zurück, was wir für die Modelldiagnose benötigen, einschließlich Jacknifed-Statistiken. Wie in Chambers und Hasties statistischen Modellen in S (Wadsworth & Brooks, 1992) angegeben, kann es in Kombination mit verwendet werdensummary.lm()
. Eines der Beispiele im sogenannten "White Book" (S. 130-131) ermöglicht die Berechnung standardisierter (Residuen mit gleicher Varianz) und studentisierter (gleiche mit einer anderen Schätzung für SE) Residuen, DFBETAS (Änderung in der Koeffizienten, die von der SE für die Regressionskoeffizienten skaliert werden), DFFIT (Änderung des angepassten Werts, wenn die Beobachtung abfällt) und DFFITS (das gleiche, mit Einheitsvarianz) messen ohne große Schwierigkeiten.Basierend auf Ihrem Beispiel und Definieren der folgenden Objekte:
Wir können die obigen Mengen wie folgt berechnen:
(Dies ist Tabelle 4.1 , S. 131.)
Chambers und Hastie geben den folgenden S / R-Code für die Berechnung von DFBETAS an:
Warum erwähne ich diesen Ansatz? Weil ich dies zunächst aus pädagogischer Sicht interessant finde (das verwende ich beim Unterrichten von Einführungskursen in die Statistik), um zu veranschaulichen, was aus der Ausgabe eines in R angepassten angepassten linearen Modells berechnet werden kann (aber dasselbe wäre) mit jedem anderen Statistikpaket anwenden). Zweitens, da die obigen Mengen als einfache Vektoren oder Matrizen in R zurückgegeben werden, bedeutet dies auch, dass wir das gewünschte Grafikgerät auswählen können - Gitter oder ggplot -, um diese Statistiken anzuzeigen, oder sie verwenden können, um eine vorhandene zu verbessern Diagramm (z. B. Hervorheben von DFFITS-Werten in einem Streudiagramm durch Variieren der Punktgröße
cex
).quelle