Czy mogę przetestować hipotezę pod kątem wypaczania normalnych danych?

11

Mam zbiór danych, które pierwotnie uważałem za normalnie rozpowszechniane. Potem faktycznie na to spojrzałem i zdałem sobie sprawę, że tak nie jest, głównie dlatego, że dane są wypaczone, a także zrobiłem test Shapiro-Wilksa.

Nadal chciałbym to przeanalizować metodami statystycznymi, dlatego chciałbym przetestować hipotezę dotyczącą normalności skośnej.

Chciałbym więc wiedzieć, czy istnieje sposób przetestowania normalności skośnej, a jeśli to możliwe, biblioteka do przeprowadzenia testu dla mnie.

Kałamarnica
źródło

Odpowiedzi:

8

Jeśli chodzi o dopasowanie danych do rozkładu skośno-normalnego, można obliczyć estymator maksymalnego prawdopodobieństwa na podstawie pierwszych zasad. Pierwsza uwaga: funkcja gęstości prawdopodobieństwa dla rozkładu normalnego skośnego z parametrem lokalizacji , parametrem skali i parametrem kształtu jestω αξωα

2ωϕ(xξω)Φ(α(xξω))

gdzie to standardowa funkcja normalnej gęstości, a to standardowa normalna CDF. Zauważ, że gęstość ta należy do klasy opisanej w mojej odpowiedzi na to pytanie .Φ ( )ϕ()Φ()

Prawdopodobieństwo logarytmiczne oparte na próbce niezależnych obserwacji z tego rozkładu wynosi:n

nlog(ω)+i=1nlogϕ(xξω)+logΦ(α(xξω))

Faktem jest, że nie ma rozwiązania w formie zamkniętej dla tego MLE. Ale można to rozwiązać numerycznie. Na przykład, Rmożesz zakodować funkcję prawdopodobieństwa jako (zauważ, że uczyniłem ją mniej kompaktową / wydajniejszą niż to możliwe, aby była całkowicie przejrzysta, jak to oblicza powyższą funkcję prawdopodobieństwa):

set.seed(2345)

# generate standard normal data, which is a special case
n = 100 
X = rnorm(n) 

# Calculate (negative) log likelihood for minimization
# P[1] is omega, P[2] is xi and P[3] is alpha
L = function(P)
{

    # positivity constraint on omega
    if( P[1] <= 0 ) return(Inf)

    S = 0
    for(i in 1:n) 
    {
        S = S - log( dnorm( (X[i] - P[2])/P[1] ) ) 
        S = S - log( pnorm( P[3]*(X[i] - P[2])/P[1] ) ) 
    }


    return(S + n*log(P[1]))
}

Teraz po prostu minimalizujemy liczbowo tę funkcję (tj. Maksymalizujemy prawdopodobieństwo). Możesz to zrobić bez konieczności obliczania pochodnych za pomocą algorytmu Simplex , który jest domyślną implementacją optim()pakietu w R.

Odnośnie do sposobu testowania skośności: Możemy jawnie przetestować skośność-normalną vs. normalną (ponieważ normalna jest submodelem), ograniczając i wykonując test współczynnika prawdopodobieństwa .α=0

# log likelihood constraining alpha=0. 
L2 = function(Q) L(c(Q[1],Q[2],0))

# log likelihood from the constrained model
-optim(c(1,1),L2)$value
[1] -202.8816

# log likelihood from the full model
-optim(c(1,1,1),L)$value
[1] -202.0064

# likelihood ratio test statistic
LRT = 2*(202.8816-202.0064)

# p-value under the null distribution (chi square 1)
1-pchisq(LRT,1)
[1] 0.1858265

Dlatego nie odrzucamy hipotezy zerowej, że (tzn. Brak pochylenia).α=0

Tutaj porównanie było proste, ponieważ rozkład normalny był submodelem. W innych, bardziej ogólnych przypadkach, możesz porównać normalną skośność do innych rozkładów referencyjnych, porównując na przykład AIC (jak tutaj zrobiono ), jeśli używasz estymatorów maksymalnego prawdopodobieństwa we wszystkich konkurencyjnych atakach. Na przykład można dopasować dane według maksymalnego prawdopodobieństwa przy rozkładzie gamma i pod normą skośności i sprawdzić, czy dodatkowe prawdopodobieństwo uzasadnia dodatkową złożoność skośnej normalności (3 parametry zamiast 2). Możesz również rozważyć użycie jednego testu Kołmogorowa Smirnowa do porównania danych z najlepszym dopasowaniem z rodziny o skośnej normie.

Makro
źródło
1
+1, myślę, że jest to jasna, dokładna i konstruktywna odpowiedź. Mam 1 nitpick / koncern w ostatnim akapicie dotyczącym korzystania z AIC. Problem z różnymi kryteriami informacyjnymi polega na tym, że zakładają, że wszystkie parametry przyczyniają się jednakowo do zdolności modelu do dopasowania danych. Oceniając różne modele regresji wielokrotnej, myślę, że jest w porządku; jednak przy badaniu różnych rodzajów rozkładów nie jest dla mnie jasne, że wszystkie parametry zapewniają równą elastyczność. Tak więc czuję się nieswojo. Jakie jest twoje stanowisko w tej sprawie?
gung - Przywróć Monikę
+1 Jestem tylko trochę zaniepokojony niektórymi problemami z normalną skośnością Azzalini, takimi jak: (1) macierz informacji Fishera z , parametr skośności, jest pojedyncza przy co wskazuje na problemy wnioskowania w tym momencie, szczególnie gdy przy użyciu statystyki współczynnika wiarygodności; (2) Prawdopodobieństwo profilu jest zazwyczaj bardzo płaskie ; (3) Ma dwa punkty przegięcia, a dla niektórych zbiorów danych nie istnieje wspólny MLE . α = 0 α ( μ , σ , α )αα=0α(μ,σ,α)
@ Gung, to dobra uwaga. Użyłem AIC jako przykładu bardziej niż czegokolwiek - można by użyć czegoś innego - ale widziałem, jak ludzie używają AIC do porównywania modeli z różnymi rozkładami błędów, co skutecznie zakłada to samo założenie, że wszystkie parametry są „równe”. Czy widziałeś już literaturę na ten temat? Byłbym zainteresowany
Makro
@ Procrastinator, gdy , masz regularny rozkład normalny jako pod-model. Porównanie jest łatwe bez odwracania informacji o rybaku. Re: (2), tak, to prawda, prawdą jest również to, że poziom skośności osiągalny przy tej dystrybucji jest dość niewielki (maksymalny w okolicach co dzieje się, gdy zmienia się na ), więc w każdej chwili zestaw danych wyświetla ten poziom pochylenia, prawdopodobieństwo będzie dość płaskie (tj. powoli rośnie wraz z rozbieżnością ). Przypuszczam, że ta ostatnia uwaga była również związana z (3)± .9 α ± α αα=0±.9α±αα
Makro
1
@Macro Dzięki za to. Zależy to również od tego, jak mierzysz skośność, miary oparte na momencie nie są obecnie bardzo używane, ponieważ istnieją tylko w przypadku rozkładów ogonowych. Problem polega także na tym, że prawdopodobieństwo profilu ma dwa punkty przegięcia (jak pokazano w moim pierwszym łączu). Na stronie internetowej Azzalini wspomina również, że MLE nie istnieje dla niektórych zestawów danych, które również charakteryzuje. Jest to delikatna uwaga na temat tej dystrybucji, która wywołała wiele krytyki. Dziękuję za dyskusję. α
5

Jestem statystykiem, który pracuje w tym zawodzie od ponad 30 lat i przed przeczytaniem tego postu nigdy nie słyszałem o normalnym rozkładzie skośnym. Jeśli masz mocno wypaczone dane, dlaczego chcesz spojrzeć na wypaczenie normalne, a nie na logarytm normalny lub gamma? Za każdym razem, gdy masz parametryczną rodzinę rozkładów, takich jak gamma, lognormal lub skew normal, możesz zastosować test dobroci dopasowania, taki jak chi-kwadrat lub Kołmogorow-Smirnov.

Michael R. Chernick
źródło
5
Normalna skośność Azzalini jest popularną dystrybucją zaproponowaną w 1985 roku. Obsługuje całą linię rzeczywistą.
1
@ Procrastinator Wiem, że teraz i prawdopodobnie powinienem o tym wcześniej słyszeć. Ale chyba mam na myśli to, że skoro o tym nie słyszałem, być może jest to trochę bardziej niejasne niż inne wypaczone dystrybucje. Rozumiem wsparcie na całej linii rzeczywistej, w przeciwieństwie do moich przykładów, które mają wsparcie tylko na [0.∞) lub {a, ∞) jeśli dodany zostanie parametr shift. Te rozkłady są jedynie przybliżeniami opisującymi sposób dystrybucji danych. Czy naprawdę wiemy, że wszystkie ujemne wartości są możliwe? W praktycznych przypadkach dane prawdopodobnie mają dolną i górną granicę.
Michael R. Chernick
1
@Procrastinator To nie ma nic wspólnego z moim komentarzem. Mówię, że rzeczywiste dane są często bardzo ograniczone, nawet jeśli można je dobrze zbliżyć za pomocą nieograniczonych dystrybucji.
Michael R. Chernick
1
@Procrastinator Niezupełnie. Jeśli otrzymasz skończony zestaw liczb, nie możesz stwierdzić na podstawie danych, czy pochodzą one z dystrybucji dyskretnej czy ciągłej. To samo dotyczy ograniczeń. Mówię, że oprócz danych wiedziałbyś ściśle na podstawie tego, co mierzysz, czy jest ono ograniczone, ciągłe czy dyskretne. Jeśli na przykład mierzysz wagę osoby, o której wiesz, że jest ona większa niż 0 i ograniczona powyżej ograniczeniami fizycznymi, powiedz 5000 funtów.
Michael R. Chernick
1
Również pomimo tego, że pomiary masy można określić tylko do określonej liczby miejsc po przecinku, uzasadnione jest traktowanie wagi jako ciągłej. Teraz, jeśli zamierzasz rzucić monetą 10 razy, wiesz, że liczba zdobytych głów musi być liczbą całkowitą od 0 do 10 (tak dyskretną i ograniczoną). Chodzi mi o to, że granice rozkładu są zwykle bardzo widoczne. Nie jest tak jednoznaczne przy podejmowaniu decyzji o rozkładach ciągłych i dyskretnych.
Michael R. Chernick
1

Więc moim rozwiązaniem było w końcu pobranie pakietu fGarch i snormFitdostarczenie go przez fGarch w celu uzyskania MLE dla parametrów do Skewed-Normal.

Następnie podłączyłem te parametry, z dsnormfunkcją zapewnianą przez fGarch, do testu Kołmogorowa-Smirnowa.

Kałamarnica
źródło
Jak połączyć test MLE i test Kołmogorowa-Smirnowa, który jest testem nieparametrycznym?
Chciałbym zaznaczyć, że nie mam pojęcia, co robię i po prostu wędruję na oślep. Założyłem, że KS działa jak chi-kwadrat i przyjrzał się różnicom między danymi, które mam, a tym, jaki powinien być sam rozkład. R's ks.test najpierw przyjmuje dane przykładowe, a następnie rozkład wraz z parametrami tego rozkładu. Użyłem MLE jako parametrów. Również moje przypuszczenie / przypomnienie o tym, jak działa chi-kwadrat, mogło również być błędne ...
Squidly
H0:λ=0
H0=λ=0H0
1
@ Procrastinator Istnieje wiele dobrych testów dopasowania opartych na empirycznym pliku cdf. Kołmogorow Smirnov jest jeden. Testów tych można użyć do porównania empirycznego pliku cdf z dowolnym konkretnym rozkładem (oraz z korektami, gdy przed testem szacuje się nieznane parametry. Masz absolutną rację, że odrzucenie rozkładu dla normalności, na przykład, nie mówi o różnicach w rozkładach. Ale MrBones, jeśli on chce zrobić to formalnie, może przetestować pod kątem znacznej skośności, a następnie wykonać test KS lub chi dla skośności normalnej. Można wprowadzić korekty dla wielu testów. Po co być zadowolonym z OP?
Michael R. Chernick
0

Sprawdź http://www.egyankosh.ac.in/bitstream/123456789/25807/1/Unit6.pdf i http://en.wikipedia.org/wiki/Skewness

Możesz użyć testu Karla Pearsona na skośność. Stosunek trzeciego momentu do sześcianu odchylenia standardowego nazywa się współczynnikiem skośności. Rozkłady symetryczne miałyby skośność = 0

NaN
źródło
2
Nie chcę opracowywać korekty moich danych. Wiem, że jest wypaczony. Chcę wiedzieć, czy moje dane mają rozkład skośny-normalny.
Squidly
2
Z jakiego oprogramowania korzystasz, R ma pakiet „sn” (pochylenie normalne), który zawiera funkcje obliczające oszacowania ML. Nie jestem jednak pewien dokładnych funkcji - sprawdź stronę azzalini.stat.unipd.it/SN, aby uzyskać szczegółowe informacje na temat pakietu R
NaN
0

w SPSS można uzyskać oszacowanie skośności (przechodząc do analizy, a następnie opisów, a następnie oznaczając skośność), a następnie uzyskuje się ocenę skośności i SE (błąd standardowy) skośności. Podziel skośność przez jej SE, a jeśli twój wynik mieści się w przedziale + -1.96, zwykle jest przekrzywiony. Jeśli nie jest przekrzywiony, istnieje wiele testów nieparametrycznych! Powodzenia i wszystkiego najlepszego!

uri
źródło