Melhor maneira de lidar com a heterocedasticidade?

19

Eu tenho um gráfico de valores residuais de um modelo linear em função dos valores ajustados, onde a heterocedasticidade é muito clara. No entanto, não tenho certeza de como devo proceder agora, porque, tanto quanto eu entendo essa heterocedasticidade, torna meu modelo linear inválido. (Isso está certo?)

  1. Use um ajuste linear robusto usando a rlm()função do MASSpacote, pois é aparentemente robusto à heterocedasticidade.

  2. Como os erros padrão dos meus coeficientes estão errados por causa da heterocedasticidade, posso apenas ajustar os erros padrão para serem robustos à heterocedasticidade? Usando o método publicado no Stack Overflow aqui: Regressão com erros padrão corrigidos por heterocedasticidade

Qual seria o melhor método para lidar com o meu problema? Se eu usar a solução 2, minha capacidade de previsão do meu modelo é completamente inútil?

O teste Breusch-Pagan confirmou que a variação não é constante.

Meus resíduos em função dos valores ajustados são assim:

https://i.gyazo.com/9407a829a168492b31dfa3d1dd33a21d.png

(versão ampliada)

TristanDM
fonte
Você quer dizer 'stackoverflow' em vez de 'stackexchange'? (você ainda está na stackexchange aqui.) Se foi SO, geralmente é melhor migrar a pergunta em vez de postar uma segunda cópia (a ajuda pede para não postar o mesmo Q várias vezes, mas escolha o melhor lugar).
Glen_b -Reinstala Monica
A variação no spread não é tanto que o impacto será severo (isto é, embora incline seus erros padrão e, portanto, inferência de impacto, provavelmente não fará muita diferença). Eu estaria inclinado a considerar se a propagação estava relacionada à média e, talvez, observe um GLM ou possivelmente uma transformação (com certeza parece relacionada ao ajuste). Qual é a variável y?
Glen_b -Reinstala Monica
2
Outra possibilidade é modelar a heterocedasticidade, por exemplo, usando glse uma das estruturas de variação do pacote nlme.
Roland

Respostas:

18

É uma boa pergunta, mas acho que é a pergunta errada. Sua figura deixa claro que você tem um problema mais fundamental que a heterocedasticidade, ou seja, seu modelo tem uma não linearidade que você não considerou. Muitos dos problemas em potencial que um modelo pode ter (não linearidade, interações, outliers, heterocedasticidade, não Normalidade) podem se disfarçar. Eu não acho que exista uma regra rígida, mas em geral eu sugiro lidar com problemas na ordem

outliers > nonlinearity > heteroscedasticity > non-normality

(por exemplo, não se preocupe com a não linearidade antes de verificar se há observações estranhas que estão distorcendo o ajuste; não se preocupe com a normalidade antes de se preocupar com a heterocedasticidade).

Nesse caso em particular, eu ajustaria um modelo quadrático y ~ poly(x,2)(ou poly(x,2,raw=TRUE)ou y ~ x + I(x^2)e ver se isso faz o problema desaparecer).

Ben Bolker
fonte
A plotagem é pequena e os eixos não são rotulados. Não sei se é um resíduo vs um enredo ajustado. Presumi que o OP incluísse um termo ao quadrado, por exemplo. Caso contrário, você está claramente certo.
gung - Restabelece Monica
1
no meu navegador eu posso ver que a gama do eixo y vai de -4 a 3, o que parece sugerir uma resíduos vs. equipada / descartar uma trama scale-localização ...
Ben Bolker
1
Oi Ben, ame o que você faz. Você pode expandir a idéia de que "outliers" são o maior problema? Você inclui pontos únicos de alta alavancagem como "discrepantes", mesmo que tenham um pequeno resíduo? Lido com observações de valor extremo o tempo todo na minha linha de trabalho (estatísticas ambientais) e percebo que algumas pessoas (a EPA em particular) tendem a explodir fora de proporção, fora de proporção (perdoem qualquer trocadilho não intencional) e estão ansiosas excluí-los. Costumo adotar uma atitude tolerante em relação aos valores discrepantes, se não encontrar boas evidências de que elas sejam claramente o resultado de um erro de dados (coleta, entrada).
Dalton Hance 04/01
1
@ DaltonHance: provavelmente estamos praticamente na mesma página. O que quero dizer é que, se você tiver discrepâncias (por qualquer definição) e elas não forem levadas em consideração por qualquer modelo / abordagem estatística que esteja usando (modelos de mistura, estatísticas robustas, distribuições de cauda gorda etc.), então tenderá a estragar todo o resto de seus diagnósticos - fará com que os resíduos pareçam não-lineares / heterocedásticos / não-normais. Eu certamente concordo que você não deve apenas jogá-los sem pensar / reflexivamente.
Ben Bolker 04/01
8

Listo vários métodos para lidar com a heterocedasticidade (com Rexemplos) aqui: Alternativas à ANOVA unidirecional para dados heterocedásticos . Muitas dessas recomendações seriam menos ideais porque você tem uma única variável contínua, em vez de uma variável categórica de vários níveis, mas pode ser bom ler como uma visão geral de qualquer maneira.

Para a sua situação, os mínimos quadrados ponderados (talvez combinados com uma regressão robusta se você suspeitar que possa haver alguns valores discrepantes) seria uma escolha razoável. Usar os erros sanduíche Huber-White também seria bom.

Aqui estão algumas respostas para suas perguntas específicas:

  1. A regressão robusta é uma opção viável, mas seria melhor se combinada com pesos na minha opinião. Se você não está preocupado com o fato de a heterocedasticidade ser devida a valores discrepantes, basta usar a regressão linear regular com pesos. Esteja ciente de que a variação pode ser muito sensível a valores discrepantes e seus resultados podem ser sensíveis a pesos inadequados; portanto, o que pode ser mais importante do que usar regressão robusta para o modelo final seria usar uma medida robusta de dispersão para estimar os pesos. No segmento vinculado, eu uso 1 / IQR, por exemplo.
  2. Os erros padrão estão errados devido à heterocedasticidade. Você pode ajustar os erros padrão com o estimador sanduíche Huber-White. É isso que @GavinSimpson está fazendo no encadeamento SO vinculado.

XX

- Reinstate Monica
fonte
1
o uso de regressão robusta do pacote lmrob inferiria automaticamente alguns pesos, por que não usá-los no # 1?
tool.ish
1

Carregue sandwich packagee calcule a matriz var-cov da sua regressão var_cov<-vcovHC(regression_result, type = "HC4")(leia o manual de sandwich). Agora, com o lmtest packageuso da coeftestfunção:

coeftest(regression_result, df = Inf, var_cov)
Giacomo Rosaspina
fonte
0

Como é a distribuição dos seus dados? Parece uma curva de sino? Do assunto, ele pode ser normalmente distribuído? A duração de uma ligação telefônica pode não ser negativa, por exemplo. Portanto, nesse caso específico de chamadas, uma distribuição gama a descreve bem. E com gama você pode usar o modelo linear generalizado (glm em R)

Diego
fonte