Wie interpretiere ich diesen angepassten vs Residuen Plot?


17

Bildbeschreibung hier eingeben

Ich verstehe Heteroskedastizität nicht wirklich. Ich würde gerne wissen, ob mein Modell für diese Handlung geeignet ist oder nicht.


Bitte erstellen Sie eine Darstellung der Residuen gegenüber den beobachteten Werten. Wenn die Variabilität der Fehler mit dem beobachteten Wert verknüpft werden kann, deutet dies möglicherweise auf ein Heterogenitätsproblem hin
IrishStat

1
@IrishState Residuen vs beobachteten Korrelation zeigen. Sie sind deshalb schwieriger zu interpretieren. Residuen vs angepasst zeigen die beste Annäherung, die wir an die Beziehung der Fehler zum Populationsmittelwert haben, und sind etwas nützlich, um die üblichere Überlegung bei der Regression zu untersuchen, ob Varianz mit Mittelwert zusammenhängt.
Glen_b

Antworten:


18

Wie @IrishStat kommentierte, müssen Sie Ihre beobachteten Werte auf Fehler überprüfen, um festzustellen, ob es Probleme mit der Variabilität gibt. Ich werde gegen Ende darauf zurückkommen.

Damit Sie eine Vorstellung davon bekommen, was wir unter Heteroskedastizität verstehen: Wenn Sie ein lineares Modell auf eine Variable anwenden, gehen Sie im Wesentlichen davon aus, dass Ihr y N ( X β , σ 2 ) oder in Laienbegriffen Ihr y ist y wird erwartet , dass EQUATE X β plus einige Fehler , die Varianz & sgr; 2 . Dieses praktisch Ihr lineares Modell y = X β + ε , wo die Fehler ε ~ N ( 0 , & sgr; 2 )yyN(Xβ,σ2)yXβσ2y=Xβ+ϵϵN(0,σ2). OK, bis jetzt cool, lass uns das im Code sehen:

set.seed(1);            #set the seed for reproducability
N = 100;                #Sample size
x = runif(N)            #Independant variable
beta = 4;               #Regression coefficient
epsilon = rnorm(N);     #Error with variance 1 and mean 0
y = x * beta + epsilon  #Your generative model
lin_mod <- lm(y ~x)  #Your linear model

So richtig, wie verhält sich mein Modell:

x11(); par(mfrow=c(1,3));   #Make a new 1-by-3 plot
plot(residuals(lin_mod)); 
title("Simple Residual Plot - OK model")
acf(residuals(lin_mod), main = ""); 
title("Residual Autocorrelation Plot - OK model");
plot(fitted(lin_mod), residuals(lin_mod)); 
title("Residual vs Fit. value - OK model");

was sollte dir so etwas geben: Bildbeschreibung hier eingeben heißt, Ihre Residuen scheinen keinen offensichtlichen Trend zu haben, der auf Ihrem willkürlichen Index basiert (1. Diagramm - am wenigsten aussagekräftig), scheinen keine echte Korrelation zwischen ihnen zu haben (2. Diagramm - ziemlich wichtig und wahrscheinlich wichtiger als Homoskedastizität) und dass angepasste Werte keine offensichtliche Tendenz zum Versagen aufweisen, d. h. Ihre angepassten Werte im Vergleich zu Ihren Residuen erscheinen ziemlich zufällig. Auf dieser Grundlage würden wir sagen, dass wir keine Probleme mit der Heteroskedastizität haben, da unsere Residuen überall die gleiche Varianz zu haben scheinen.

OK, Sie wollen aber Heteroskedastizität. Definieren wir unter den gleichen Annahmen von Linearität und Additivität ein weiteres generatives Modell mit "offensichtlichen" Heteroskedastizitätsproblemen. Nach einigen Werten wird unsere Beobachtung viel lauter.

epsilon_HS = epsilon;               
epsilon_HS[ x>.55  ] = epsilon_HS[x>.55 ] * 9       #Heteroskedastic errors

y2 = x * beta + epsilon_HS      #Your generative model
lin_mod2 <- lm(y2 ~x)            #Your unfortunate LM

wo die einfachen Diagnosediagramme des Modells:

 par(mfrow=c(1,3));   #Make a new 1-by-3 plot
 plot(residuals(lin_mod2)); 
 title("Simple Residual Plot - Fishy model")
 acf(residuals(lin_mod2), main = ""); 
 title("Residual Autocorrelation Plot - Fishy model");
 plot(fitted(lin_mod2), residuals(lin_mod2)); 
 title("Residual vs Fit. value - Fishy model");

sollte so etwas wie geben: Bildbeschreibung hier eingeben Hier scheint die erste Handlung ein bisschen "seltsam"; Es sieht so aus, als hätten wir ein paar Residuen, die sich in kleinen Größen anhäufen, aber das ist nicht immer ein Problem ... Die zweite Darstellung ist in Ordnung, das heißt, wir haben keine Korrelation zwischen Ihren Residuen in verschiedenen Verzögerungen, sodass wir für einen Moment atmen können. Und die dritte Handlung verschüttet die Bohnen: Es ist absolut klar, dass unsere Reste bei höheren Werten explodieren. Wir haben definitiv Heteroskedastizität in den Residuen dieses Modells und wir müssen etwas dagegen tun (zB IRLS , Theil-Sen-Regression usw.).

Hier war das Problem wirklich offensichtlich, aber in anderen Fällen hätten wir es vielleicht verpasst. Um die Wahrscheinlichkeit zu verringern, dass wir es verpassen, wurde von IrishStat eine weitere aufschlussreiche Handlung erwähnt: Residuen versus beobachtete Werte oder unser aktuelles Spielzeugproblem:

 par(mfrow=c(1,2))
 plot(y, residuals(lin_mod) ); 
 title( "Residual vs Obs. value - OK model")
 plot(y2, residuals(lin_mod2) ); 
 title( "Residual vs Obs. value - Fishy model")

was sollte so etwas geben:

Bildbeschreibung hier eingebenR2R20,59890,03919 . Wir haben also Grund zu der Annahme, dass Modellfehlspezifikationen ein Problem darstellen könnten. (Danke an Scortchi für den Hinweis auf die irreführende Aussage in meiner ursprünglichen Antwort.)

In Anbetracht Ihrer Situation scheint die Darstellung der Residuen im Vergleich zu den angepassten Werten relativ in Ordnung zu sein. Das Überprüfen Ihrer Residuen im Vergleich zu Ihren beobachteten Werten wäre wahrscheinlich hilfreich, um sicherzustellen, dass Sie auf der sicheren Seite sind. (Ich habe QQ-Plots oder ähnliches nicht erwähnt, um die Dinge nicht mehr zu verwirren, aber vielleicht möchten Sie diese auch kurz überprüfen.) Ich hoffe, dies hilft Ihnen beim Verständnis der Heteroskedastizität und auf was Sie achten sollten.


4
Sie sollten nicht überrascht oder besorgt sein, eine Beziehung zwischen den Residuen und den beobachteten Werten zu sehen. Versuchen Sie, das theoretische Ergebnis für ein korrekt angegebenes Modell zu berechnen.
Scortchi

4
Oder sehen Sie hier .
Scortchi

+1 auf beide Ihrer Kommentare. Vielen Dank, dass Sie auf dieses Problem hingewiesen haben. Ihr Kommentar ist / war genau richtig. Ich habe diese Passage so bearbeitet, dass sie jetzt korrekt lautet.
usεr11852 sagt Reinstate Monic

1
Bitte. Ich bin mir immer noch nicht sicher, welchen Wert die Darstellung der Residuen gegenüber den beobachteten Antwortwerten Ihrer Meinung nach addiert. Das Vorhandensein und die Natur der Heteroskedastizität sind weniger offensichtlich als in der Darstellung der Residuen gegenüber den angepassten Ansprechwerten.
Scortchi

Ich stimme (meistens) zu. Wie Sie gesehen haben, war es auch nicht meine erste diagnostische Handlung. Es wurde jedoch von IrishStat vorgeschlagen, und ich hielt es für notwendig, eine vollständige Antwort auf das OP zu erhalten.
usεr11852 sagt Reinstate Monic

9

Ihre Frage scheint sich um Heteroskedastizität zu handeln (weil Sie sie namentlich erwähnt und den Tag hinzugefügt haben), aber Ihre explizite Frage (z. B. im Titel und) zum Ende Ihres Beitrags ist allgemeiner: "Ob mein Modell dementsprechend geeignet ist oder nicht Handlung". Die Bestimmung, ob ein Modell ungeeignet ist, ist mehr als die Beurteilung der Heteroskedastizität.

Ich habe Ihre Daten über diese Website (ht @Alexis) gescrappt. Beachten Sie, dass die Daten in aufsteigender Reihenfolge von sortiert werden fitted. Auf der Grundlage der Regression und der Darstellung oben links scheint dies hinreichend zutreffend zu sein:

mod = lm(residuals~fitted)
summary(mod)
# ...
# Residuals:
#   Min       1Q   Median       3Q      Max 
# -0.78374 -0.13559  0.00928  0.19525  0.48107 
# 
# Coefficients:
#   Estimate Std. Error t value Pr(>|t|)
# (Intercept)  0.06406    0.35123   0.182    0.856
# fitted      -0.01178    0.05675  -0.208    0.836
# 
# Residual standard error: 0.2349 on 53 degrees of freedom
# Multiple R-squared:  0.0008118,  Adjusted R-squared:  -0.01804 
# F-statistic: 0.04306 on 1 and 53 DF,  p-value: 0.8364

Bildbeschreibung hier eingeben

Ich sehe hier keine Hinweise auf Heteroskedastizität. Oben rechts (qq-Diagramm) scheint es ebenfalls keine Probleme mit der Normalitätsannahme zu geben.

Auf der anderen Seite scheinen die "S" -Kurve in der roten Tiefpassform (im oberen linken Diagramm) und die ACF- und PacF-Diagramme (im unteren Diagramm) problematisch zu sein. Ganz links befinden sich die meisten Residuen über der grauen 0-Linie. Wenn Sie sich nach rechts bewegen, fällt der Großteil der Residuen unter 0, dann über und dann wieder unter. Das Ergebnis ist, dass, wenn ich Ihnen sage, dass ich ein bestimmtes Residuum betrachte und dass es einen negativen Wert hat (aber ich habe Ihnen nicht gesagt, welches ich betrachte), Sie mit guter Genauigkeit vermuten können, dass die Residuen in der Nähe sind wurden auch negativ bewertet. Mit anderen Worten, die Residuen sind nicht unabhängig. Wenn Sie etwas über eine Residuen wissen, erhalten Sie Informationen über andere.

Dies kann neben Parzellen auch getestet werden. Ein einfacher Ansatz ist die Verwendung eines Lauftests :

library(randtests)
runs.test(residuals)
#  Runs Test
# 
# data:  residuals
# statistic = -3.2972, runs = 16, n1 = 27, n2 = 27, n = 54, p-value = 0.0009764
# alternative hypothesis: nonrandomness

Dies hat zur Folge, dass Ihr Modell falsch spezifiziert ist. Da die Beziehung zwei Biegungen enthält, möchten Sie hinzufügenX2X3 Begriffe zu Ihrem Modell Konto dafür.

Um Ihre expliziten Fragen zu beantworten: Ihr Plot zeigt serielle Autokorrelationen / Nichtunabhängigkeit Ihrer Residuen. Dies bedeutet, dass Ihr Modell in seiner aktuellen Form nicht geeignet ist.

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.