Come posso interpretare questa trama adattata vs residui?


17

inserisci qui la descrizione dell'immagine

Non capisco davvero l'eteroscedasticità. Vorrei sapere se il mio modello è appropriato o meno secondo questa trama.


Si prega di preparare una trama di residui rispetto ai valori osservati. Se la variabilità degli errori è collegabile al valore osservato, ciò potrebbe suggerire un problema di eterogeneità
IrishStat

1
I residui di @IrishState vs osservati mostreranno correlazione. Sono più difficili da interpretare per questo. I residui vs adattati mostrano la migliore approssimazione che abbiamo con il modo in cui gli errori si riferiscono alla media della popolazione ed è in qualche modo utile per esaminare la considerazione più consueta nella regressione del fatto che la varianza sia correlata alla media.
Glen_b

Risposte:


18

Come ha commentato @IrishStat, è necessario verificare i valori osservati rispetto agli errori per vedere se ci sono problemi con la variabilità. Tornerò su questo verso la fine.

yy~N(Xβ,σ2)yXβσ2y=Xβ+εε~N(0,σ2). OK, bello finora, vediamo che nel codice:

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

così giusto, come si comporta il mio modello:

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");

che dovrebbe darti qualcosa del genere: il inserisci qui la descrizione dell'immagine che significa che i tuoi residui non sembrano avere una tendenza evidente basata sul tuo indice arbitrario (1 ° diagramma - il meno informativo in realtà), sembrano non avere una reale correlazione tra di loro (2 ° diagramma - abbastanza importante e probabilmente più importante dell'omoschedasticità) e che i valori adattati non hanno un'evidente tendenza al fallimento, vale a dire. i tuoi valori adattati rispetto ai tuoi residui appaiono abbastanza casuali. Sulla base di ciò, diremmo che non abbiamo problemi di eteroschedasticità poiché i nostri residui sembrano avere la stessa varianza ovunque.

OK, vuoi l'eteroschedasticità però. Considerati gli stessi presupposti di linearità e additività, definiamo un altro modello generativo con "evidenti" problemi di eteroschedasticità. Vale a dire dopo alcuni valori la nostra osservazione sarà molto più rumorosa.

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

dove i semplici grafici diagnostici del modello:

 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");

dovrebbe dare qualcosa del tipo: inserisci qui la descrizione dell'immagine qui la prima trama sembra un po '"strana"; sembra che abbiamo alcuni residui che si raggruppano in piccole dimensioni ma che non è sempre un problema ... Il secondo diagramma è OK, significa che non abbiamo correlazione tra i tuoi residui in ritardi diversi, quindi potremmo respirare per un momento. E la terza trama rovescia i fagioli: è chiaro che quando arriviamo a valori più alti i nostri residui esplodono. Abbiamo sicuramente eteroschedasticità nei residui di questo modello e dobbiamo fare qualcosa al riguardo (ad es. IRLS , regressione di Theil-Sen , ecc.)

Qui il problema era davvero ovvio, ma in altri casi ci saremmo persi; per ridurre le nostre possibilità di perderlo, un'altra trama penetrante è stata quella menzionata da IrishStat: Residui contro valori osservati, o per il nostro problema con i giocattoli a portata di mano:

 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")

che dovrebbe dare qualcosa del tipo:

inserisci qui la descrizione dell'immagineR2R20,59890,03,919 mila

In tutta onestà della tua situazione, la trama dei tuoi residui contro valori adattati sembra relativamente OK. Controllare i tuoi residui rispetto ai valori osservati sarebbe probabilmente utile per assicurarti di essere al sicuro. (Non ho menzionato trame QQ o cose del genere per non confondere di più le cose, ma potresti voler controllare brevemente anche quelle.) Spero che questo ti aiuti a capire l'eteroschedasticità e ciò che dovresti cercare.


4
Non dovresti essere sorpreso o preoccupato di vedere una relazione tra i residui e i valori osservati . Prova a calcolare il risultato teorico per un modello correttamente specificato.
Scortchi - Ripristina Monica


+1 per entrambi i tuoi commenti. Grazie per aver segnalato questo problema; il tuo commento è / è stato perfetto. Ho modificato quel passaggio in modo che ora legga correttamente.
usεr11852 dice Reinstate Monic il

1
Prego. Non sono ancora sicuro di quale valore pensi che aggiunga la trama dei residui rispetto ai valori di risposta osservati; l'esistenza e la natura dell'eteroschedasticità sono meno evidenti rispetto alla trama dei residui rispetto ai valori di risposta adattati.
Scortchi - Ripristina Monica

Sono (principalmente) d'accordo. Come hai visto, non è stato nemmeno il mio primo diagramma diagnostico. Tuttavia, è stato suggerito da IrishStat e ho pensato che fosse necessario per una risposta completa al PO.
usεr11852 dice Reinstate Monic il

9

La tua domanda sembra riguardare l'eteroscedasticità (perché l'hai menzionata per nome e hai aggiunto il tag), ma la tua domanda esplicita (ad esempio, nel titolo e) che termina il tuo post è più generale, "se il mio modello è appropriato o meno secondo questo tracciare". C'è di più nel determinare se un modello è inappropriato che valutare l'eteroscedasticità.

Ho cancellato i tuoi dati utilizzando questo sito Web (ht @Alexis). Si noti che i dati sono ordinati in ordine crescente di fitted. Sulla base della regressione e della trama in alto a sinistra, sembra essere sufficientemente fedele:

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

inserisci qui la descrizione dell'immagine

Non vedo alcuna prova di eteroscedasticità qui. Dall'angolo in alto a destra (qq-plot), non sembra esserci alcun problema con l'assunzione della normalità.

D'altra parte, la curva a "S" nell'adattamento lowess rosso (nella trama in alto a sinistra) e i grafici acf e pacf (in basso) sembrano problematici. All'estrema sinistra, la maggior parte dei residui si trova sopra la linea grigia 0. Mentre ti sposti a destra, la maggior parte dei residui scende sotto 0, quindi sopra e poi di nuovo sotto. Il risultato di questo è che se ti dicessi che stavo guardando un particolare residuo e che aveva un valore negativo (ma non ti ho detto quale stavo guardando), potresti indovinare con buona precisione che i residui nelle vicinanze inoltre sono stati valutati negativamente. In altre parole, i residui non lo sono indipendenti: sapere qualcosa su uno ti dà informazioni sugli altri.

Oltre ai grafici, questo può essere testato. Un approccio semplice consiste nell'utilizzare un test delle esecuzioni :

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

Ciò implica che il tuo modello non è specificato correttamente. Poiché ci sono due "curve" nella relazione, ti consigliamo di aggiungereX2 e X3 termini al tuo modello per tener conto di ciò.

Per rispondere a domande esplicite: la trama mostra autocorrelazioni seriali / non indipendenza dei residui. Significa che il tuo modello non è appropriato nella sua forma attuale.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.