Najlepszy sposób radzenia sobie z heteroscedastycznością?

19

Mam wykres wartości resztkowych modelu liniowego w funkcji dopasowanych wartości, w których heteroscedastyczność jest bardzo wyraźna. Jednak nie jestem pewien, jak powinienem postępować teraz, ponieważ o ile rozumiem ta heteroscedastyczność powoduje, że mój model liniowy jest nieważny. (Czy to prawda?)

  1. Użyj solidnego dopasowania liniowego za pomocą rlm()funkcji MASSpakietu, ponieważ jest najwyraźniej odporny na heteroscedastyczność.

  2. Ponieważ standardowe błędy moich współczynników są błędne z powodu heteroscedastyczności, mogę po prostu dostosować standardowe błędy, aby były odporne na heteroscedastyczność? Korzystając z metody opublikowanej w sekcji Przepełnienie stosu tutaj: regresja z heterometryczną korekcją błędów standardowych

Której metody najlepiej użyć do rozwiązania mojego problemu? Jeśli użyję rozwiązania 2, to czy moje możliwości przewidywania mojego modelu są całkowicie bezużyteczne?

Test Breuscha-Pagana potwierdził, że wariancja nie jest stała.

Moje resztki w funkcji dopasowanych wartości wyglądają następująco:

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

(większa wersja)

TristanDM
źródło
Czy masz na myśli „stackoverflow” zamiast „stackexchange”? (nadal korzystasz z wymiany stosów). Jeśli było to TAK, zazwyczaj lepiej jest migrować pytanie niż opublikować drugą kopię (pomoc prosi, aby nie publikować tego samego Q wiele razy, ale wybrać jedno najlepsze miejsce).
Glen_b
Różnice w rozpiętości nie są tak duże, że wpływ będzie poważny (to znaczy, podczas gdy spowoduje to odchylenie standardowych błędów i w ten sposób wnioskowanie o wpływie, prawdopodobnie nie zrobi to wielkiej różnicy). Byłbym skłonny zastanowić się, czy spread był powiązany ze średnią, i być może spojrzeć na GLM lub ewentualnie transformację (to z pewnością wygląda na dopasowanie). Co to jest zmienna y?
Glen_b
2
Inną możliwością jest modelowanie heteroscedastyczności, np. Użycie glsi jednej ze struktur wariancji z pakietu nlme.
Roland

Odpowiedzi:

18

To dobre pytanie, ale myślę, że to niewłaściwe pytanie. Z twojego rysunku jasno wynika, że ​​masz bardziej fundamentalny problem niż heteroscedastyczność, tzn. Twój model ma nieliniowość, której nie uwzględniłeś. Wiele potencjalnych problemów, jakie może mieć model (nieliniowość, interakcje, wartości odstające, heteroscedastyczność, nienormalność) może maskować się nawzajem. Nie sądzę, żeby istniała twarda i szybka zasada, ale ogólnie sugerowałbym radzenie sobie z problemami w kolejności

outliers > nonlinearity > heteroscedasticity > non-normality

(np. nie martw się nieliniowością przed sprawdzeniem, czy istnieją dziwne obserwacje, które wypaczają dopasowanie; nie martw się o normalność, zanim zaczniesz martwić się heteroscedastycznością).

W tym konkretnym przypadku pasowałbym do modelu kwadratowego y ~ poly(x,2)(lub poly(x,2,raw=TRUE)lub y ~ x + I(x^2)i sprawdziłbym, czy to rozwiązuje problem.

Ben Bolker
źródło
Fabuła jest niewielka, a osie nie są oznaczone. Nie wiem, czy to resztki kontra dopasowana fabuła. Zakładałem, że PO zawierało kwadrat, np. Jeśli nie, masz rację.
gung - Przywróć Monikę
1
w mojej przeglądarce widzę, że zakres osi y wynosi od -4 do 3, co wydaje się sugerować resztki vs. dopasowany wykres / wykluczyć wykres położenia w skali ...
Ben Bolker
1
Cześć Ben, uwielbiam to, co robisz. Czy możesz rozwinąć pogląd, że „wartości odstające” są największym problemem? Czy uwzględniacie pojedyncze punkty o dużej dźwigni jako „wartości odstające”, nawet jeśli mają niewielką wartość rezydualną? Przez cały czas zajmuję się obserwacjami ekstremalnej wartości (statystyki środowiskowe) i stwierdzam, że niektórzy ludzie (w szczególności EPA) mają tendencję do wysadzania wartości odstających nieproporcjonalnie (wybaczenie jakiejkolwiek niezamierzonej gry słów) i są sposobem chętnym aby je wykluczyć. Mam tendencję do tolerancyjnego podejścia do wartości odstających, jeśli nie mogę znaleźć dobrego dowodu, że są one wyraźnie wynikiem błędu danych (gromadzenie, wprowadzanie).
Dalton Hance
1
@DaltonHance: prawdopodobnie jesteśmy prawie na tej samej stronie. Chodzi mi o to, że jeśli masz wartości odstające (z jakiejkolwiek definicji) i nie są one uwzględniane przez dowolny model statystyczny / podejście, którego używasz (modele mieszanin, solidne statystyki, rozkłady grubościenne itp.), To zepsuje całą resztę twojej diagnostyki - sprawi, że reszty będą wyglądać nieliniowo / heteroscedastycznie / nie normalnie. Z pewnością zgadzam się, że nie powinieneś ich bezmyślnie / odruchowo wyrzucać.
Ben Bolker
8

Poniżej wymienię kilka metod radzenia sobie z heteroscedastycznością (z Rprzykładami): Alternatywy dla jednokierunkowej ANOVA dla danych heteroskedastycznych . Wiele z tych zaleceń byłoby mniej idealnych, ponieważ masz jedną zmienną ciągłą, a nie wielopoziomową zmienną kategorialną, ale i tak warto przeczytać ją jako przegląd.

W tej sytuacji rozsądnym wyborem będzie najmniej ważona liczba kwadratów (być może w połączeniu z solidną regresją, jeśli podejrzewasz, że występują pewne wartości odstające). Przydałoby się również użycie błędów kanapki Huber-White.

Oto kilka odpowiedzi na konkretne pytania:

  1. Solidna regresja jest realną opcją, ale moim zdaniem byłoby lepiej, gdyby w połączeniu z wagami. Jeśli nie martwisz się, że heteroscedastyczność wynika z wartości odstających, możesz po prostu użyć regularnej regresji liniowej z wagami. Należy pamiętać, że wariancja może być bardzo wrażliwa na wartości odstające, a wyniki mogą być wrażliwe na nieodpowiednie wagi, więc to, co może być ważniejsze niż zastosowanie solidnej regresji dla ostatecznego modelu, to użycie silnej miary dyspersji do oszacowania wag. W połączonym wątku używam na przykład 1 / IQR.
  2. Błędy standardowe są błędne z powodu heteroscedastyczności. Możesz dostosować standardowe błędy za pomocą estymatora kanapkowego Huber-White. To właśnie robi @GavinSimpson w połączonym wątku SO.

XX

gung - Przywróć Monikę
źródło
1
użycie solidnej regresji z pakietu lmrob automatycznie wyprowadziłoby niektóre wagi, dlaczego nie użyć ich zamiast w # 1?
tool.ish
1

Załaduj sandwich packagei oblicz macierz var-cov swojej regresji za pomocą var_cov<-vcovHC(regression_result, type = "HC4")(przeczytaj instrukcję sandwich). Teraz za lmtest packagepomocą coeftestfunkcji:

coeftest(regression_result, df = Inf, var_cov)
Giacomo Rosaspina
źródło
0

Jak wygląda dystrybucja twoich danych? Czy to w ogóle wygląda jak krzywa dzwonowa? Czy z normalnej tematyki można go w ogóle rozpowszechniać? Czas trwania połączenia telefonicznego może na przykład nie być ujemny. Tak więc w tym konkretnym przypadku połączeń rozkład gamma dobrze to opisuje. A z gamma możesz użyć uogólnionego modelu liniowego (glm w R)

Diego
źródło