Ich verstehe Heteroskedastizität nicht wirklich. Ich würde gerne wissen, ob mein Modell für diese Handlung geeignet ist oder nicht.
Ich verstehe Heteroskedastizität nicht wirklich. Ich würde gerne wissen, ob mein Modell für diese Handlung geeignet ist oder nicht.
Antworten:
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 ). 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: 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: 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:
. 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.
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
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ügen 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.