Como interpreto esse gráfico ajustado versus resíduos?


17

insira a descrição da imagem aqui

Eu realmente não entendo heterocedasticidade. Gostaria de saber se meu modelo é apropriado ou não, de acordo com esse gráfico.


Por favor, prepare um gráfico de resíduos versus os valores observados. Se a variabilidade dos erros é linkable ao observado valorizado então este pode sugerir um problema heterogeneidade
IrishStat

1
Os resíduos @IrishState versus os observados mostrarão correlação. Eles são mais difíceis de interpretar por causa disso. Residuais vs ajustados mostra a melhor aproximação que temos de como os erros se relacionam com a média da população e é um pouco útil para examinar a consideração mais usual na regressão se a variação está relacionada à média.
Glen_b -Reinstala Monica

Respostas:


18

Como o @IrishStat comentou, você precisa verificar os valores observados em relação aos erros para ver se há problemas com a variabilidade. Voltarei a isso no final.

yyN(Xβ,σ2)yXβσ2y=Xβ+ϵϵN(0 0,σ2). OK, legal até agora, vamos ver isso no código:

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

tão certo, como meu modelo se comporta:

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

o que deve fornecer algo assim: o insira a descrição da imagem aqui que significa que seus resíduos não parecem ter uma tendência óbvia com base no seu índice arbitrário (1º lote - menos informativo realmente), parecem não ter uma correlação real entre eles (2º lote - bastante importante e provavelmente mais importante que a homosquasticidade) e que os valores ajustados não têm uma tendência óbvia de falha, ie. seus valores ajustados versus seus resíduos parecem bastante aleatórios. Com base nisso, diríamos que não temos problemas de heterocedasticidade, pois nossos resíduos parecem ter a mesma variação em todos os lugares.

OK, você deseja heterocedasticidade. Dadas as mesmas suposições de linearidade e aditividade, vamos definir outro modelo generativo com problemas "óbvios" de heterocedasticidade. Ou seja, após alguns valores, nossa observação será muito mais barulhenta.

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

onde as plotagens simples de diagnóstico do modelo:

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

deve dar algo como: insira a descrição da imagem aqui Aqui, o primeiro enredo parece um pouco "estranho"; parece que temos alguns resíduos que se agrupam em pequenas magnitudes, mas isso nem sempre é um problema ... O segundo gráfico é bom, significa que não temos correlação entre os resíduos em diferentes atrasos, para que possamos respirar por um momento. E o terceiro lote derrama o feijão: é óbvio que, quando chegamos a valores mais altos, nossos resíduos explodem. Definitivamente, temos heterocedasticidade nos resíduos deste modelo e precisamos fazer algo a respeito (por exemplo , IRLS , regressão de Theil – Sen , etc.)

Aqui o problema era realmente óbvio, mas em outros casos, podemos ter perdido; para reduzir nossas chances de perdê-lo, outro enredo perspicaz foi o mencionado por IrishStat: Residuals versus Observed values, ou para o nosso problema de brinquedo em questão:

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

que deve dar algo como:

insira a descrição da imagem aquiR2R20,59890,03919

Para ser justo, sua plotagem de resíduos versus valores ajustados parece relativamente boa. Verificar seus resíduos versus os valores observados provavelmente seria útil para garantir que você esteja do lado seguro. (Eu não mencionei gráficos de QQ ou algo parecido para não confundir mais as coisas, mas você também pode querer checar brevemente.) Espero que isso ajude no seu entendimento da heterocedasticidade e no que você deve procurar.


4
Você não deve se surpreender ou se preocupar em ver uma relação entre os resíduos e os valores observados . Tente calcular o resultado teórico para um modelo especificado corretamente.
Scortchi - Restabelece Monica


+1 nos dois comentários. Obrigado por apontar esse problema; seu comentário é / foi no local. Eu editei essa passagem para que ela leia corretamente agora.
usεr11852 diz Reinstate Monic

1
Seja bem-vindo. Ainda não tenho certeza de qual valor você acha que o gráfico de resíduos versus os valores de resposta observados adicionam; a existência e natureza da heterocedasticidade é menos evidente do que no gráfico de resíduos versus valores de resposta ajustados.
Scortchi - Restabelece Monica

Eu (principalmente) concordo. Como você viu, também não foi meu primeiro lote de diagnóstico. Porém, foi sugerido pelo IrishStat e achei necessário uma resposta completa ao PO.
usεr11852 diz Reinstate Monic

9

Sua pergunta parece ser sobre heterocedasticidade (porque você a mencionou por nome e adicionou a tag), mas sua pergunta explícita (por exemplo, no título e) que encerra sua postagem é mais geral ", se meu modelo é apropriado ou não, de acordo com isso enredo". Há mais para determinar se um modelo é inadequado do que avaliar a heterocedasticidade.

Raspei seus dados usando este site (ht @Alexis). Observe que os dados são classificados em ordem crescente de fitted. Com base na regressão e no gráfico superior esquerdo, parece ser suficientemente fiel:

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

insira a descrição da imagem aqui

Não vejo nenhuma evidência de heterocedasticidade aqui. Do canto superior direito (gráfico qq), também não parece haver problemas com a suposição de normalidade.

Por outro lado, a curva "S" no ajuste do lowess vermelho (na plotagem superior esquerda) e as plotagens acf e pacf (na parte inferior) parecem problemáticas. No extremo esquerdo, a maioria dos resíduos está acima da linha 0 cinza. À medida que você se move para a direita, a maior parte dos resíduos cai abaixo de 0, depois acima e depois abaixo novamente. O resultado disso é que, se eu lhe dissesse que estava olhando para um determinado resíduo e que tivesse um valor negativo (mas não lhe disse qual eu estava olhando), você poderia adivinhar com precisão que os resíduos próximos também foram negativamente valorizados. Em outras palavras, os resíduos não são independentes - saber algo sobre um fornece informações sobre outros.

Além das parcelas, isso pode ser testado. Uma abordagem simples é usar um teste de execução :

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

X2X3

Para responder às suas perguntas explícitas: Seu gráfico mostra autocorrelações em série / não independência de seus resíduos. Isso significa que seu modelo não é apropriado em sua forma atual.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.