Napisałem program, który generuje losowe dane. Jeśli program działa poprawnie, dane powinny mieć określony, znany rozkład prawdopodobieństwa. Chciałbym uruchomić program, wykonać obliczenia wyniku i podać wartość p.
Zanim ktokolwiek to powie: rozumiem, że testowanie hipotez nie może wykryć, kiedy program działa poprawnie. Może wykryć tylko, gdy działa nieprawidłowo w określony sposób. (I nawet wtedy test „powinien” zawieść X% czasu, w zależności od wybranego poziomu istotności ...)
Staram się więc zrozumieć, jakie narzędzia mogą być odpowiednie. W szczególności:
Mogę wygenerować tyle losowych danych, ile chcę. Wystarczy, że uruchomię program wystarczająco długo. Więc nie jestem ograniczony do żadnej konkretnej wielkości próbki.
Interesują mnie techniki, które dają wartość p. Więc gapienie się na wykres i powiedzenie „tak, to wygląda trochę liniowo” nie jest ciekawą opcją. Chyba że istnieje jakiś sposób na ustawienie twardej liczby na „wygrywalności” wykresu. ;-)
Co wiem do tej pory:
Widziałem trzy główne rodzaje wspomnianych testów, które brzmią, jakby mogły mieć zastosowanie: test chi-kwadrat Pearsona, test Kołmogorowa-Smirnowa i test Andersona-Darlinga.
Wydaje się, że test chi-kwadrat jest odpowiedni dla rozkładów dyskretnych , podczas gdy dwa pozostałe są bardziej odpowiednie dla rozkładów ciągłych . (?)
Różne źródła podają, że test AD jest „lepszy” niż test KS, ale nie zawierają żadnych dalszych szczegółów.
Ostatecznie wszystkie te testy prawdopodobnie wykrywają „różne sposoby” odstępstwa od określonego rozkładu zerowego. Ale tak naprawdę nie wiem jeszcze, jakie są różnice ... Podsumowując, szukam jakiegoś ogólnego opisu tego, gdzie każdy rodzaj testu jest najbardziej odpowiedni i jakie problemy najlepiej wykrywa.
źródło
Odpowiedzi:
Oto ogólny opis działania 3 wymienionych metod.
Metoda Chi-Squared polega na porównaniu liczby obserwacji w zbiorniku z liczbą oczekiwaną w zbiorniku na podstawie rozkładu. W przypadku dystrybucji dyskretnych pojemniki są zwykle dyskretnymi możliwościami lub ich kombinacjami. W przypadku ciągłych rozkładów możesz wybrać punkty cięcia, aby utworzyć pojemniki. Wiele funkcji, które to zaimplementują, automatycznie utworzy przedziały, ale powinieneś być w stanie utworzyć własne przedziały, jeśli chcesz porównać w określonych obszarach. Wadą tej metody jest to, że nie zostaną wykryte różnice między rozkładem teoretycznym a danymi empirycznymi, które nadal umieszczają wartości w tym samym przedziale, przykładem może być zaokrąglanie, jeśli teoretycznie liczby między 2 a 3 powinny być rozłożone w całym zakresie (spodziewamy się zobaczyć wartości takie jak 2.34296),
Statystyka testu KS jest maksymalną odległością między 2 porównywanymi funkcjami rozkładu skumulowanego (często teoretyczną i empiryczną). Jeśli 2 rozkłady prawdopodobieństwa mają tylko 1 punkt przecięcia, wówczas 1 minus maksymalna odległość to obszar nakładania się 2 rozkładów prawdopodobieństwa (pomaga to niektórym ludziom wizualizować, co jest mierzone). Pomyśl o wykreśleniu na tym samym wykresie funkcji rozkładu teoretycznego i EDF, a następnie zmierz odległość między 2 „krzywymi”, największą różnicą jest statystyka testowa i jest ona porównywana z rozkładem wartości dla tego, gdy zerowa jest prawdziwa. To wychwytuje różnice w kształcie rozkładu lub 1 rozkład przesunięty lub rozciągnięty w porównaniu do drugiego.1n
Test Andersona-Darlinga wykorzystuje również różnicę między krzywymi CDF, jak test KS, ale zamiast maksymalnej różnicy wykorzystuje funkcję całkowitego pola powierzchni między dwoma krzywymi (w rzeczywistości różnicuje kwadraty, waży je, więc ogony mają większy wpływ, a następnie integruje się w domenie dystrybucji). Daje to większą wagę wartościom odstającym niż KS, a także daje większą wagę, jeśli istnieje kilka małych różnic (w porównaniu z 1 dużą różnicą, którą KS podkreśliłby). Może to doprowadzić do obezwładnienia testu w celu znalezienia różnic, które uważasz za nieistotne (łagodne zaokrąglanie itp.). Podobnie jak test KS zakłada to, że nie oszacowałeś parametrów na podstawie danych.
Oto wykres pokazujący ogólne idee ostatnich 2:
na podstawie tego kodu R:
Górny wykres pokazuje EDF próbki ze standardowej normy w porównaniu do CDF standardowej normy z linią pokazującą statystykę KS. Środkowy wykres pokazuje różnicę na 2 krzywych (możesz zobaczyć, gdzie występuje statystyka KS). Dno jest wtedy kwadratową, ważoną różnicą, test AD opiera się na polu pod tą krzywą (zakładając, że wszystko poprawnie wykonałem).
Inne testy sprawdzają korelację w qqplot, patrzą na nachylenie w qqplot, porównują średnią, var i inne statystyki w oparciu o momenty.
źródło
+1 za napisanie jasnego i szczegółowego pytania. Mam nadzieję, że moja odpowiedź nie będzie zbyt frustrująca. Uważam, że testowanie hipotez nie jest właściwym podejściem w twoim przypadku. Testowanie znaczenia hipotezy zerowej jest rozsądną rzeczą, gdy odpowiedź może brzmieć tak lub nie, ale nie wiesz, która z nich . (Niestety, tak naprawdę nie mówi, które to jest, ale jest to inny problem.) W twoim przypadku, rozumiem, chcesz wiedzieć, czy twój algorytm jest dobry. Wiadomo jednak (z całą pewnością), że żaden program komputerowy nie może generować prawdziwie losowych danych z dowolnego rozkładu prawdopodobieństwa. Jest tak po pierwsze, ponieważ wszystkie komputery są maszynami skończonymi , a zatem mogą wytwarzać tylko liczby pseudolosowe. Co więcej (odkładając na bok brak prawdziwej przypadkowości), nie jest możliwe, aby wygenerowane wartości idealnie odpowiadały jakiemukolwiek ciągłemu rozkładowi. Jest kilka sposobów, aby to zrozumieć, ale być może najłatwiej jest, aby w linii liczbowej pojawiły się „luki”, co nie jest prawdą w przypadku żadnej ciągłej zmiennej losowej. Co więcej, luki te nie są idealnie idealnie równe ani idealnie równomiernie rozmieszczone. Wśród informatyków pracujących nad generowaniem liczb pseudolosowych nazwa gry polega na ulepszeniu algorytmów, tak aby luki były mniejsze, bardziej równomierne, z dłuższymi okresami (a także by mogły szybciej generować więcej wartości). W każdym razie fakty te dowodzą, że testowanie hipotez jest niewłaściwym podejściem do określania, czy algorytm właściwie postępuje zgodnie z „określonym, znanym rozkładem prawdopodobieństwa”, bo tak nie jest. (Przepraszam.)
Zamiast tego bardziej odpowiednim rozwiązaniem jest określenie, jak blisko są twoje dane do teoretycznego rozkładu. Do tego polecam ponowne rozważenie działek, szczególnie QQ-działek i PP-działek1 - β r = 1
Z drugiej strony, w odniesieniu do oceny jakości algorytmu, możesz chcieć ustalić czas względem innych standardowych pRNG.
Mam nadzieję że to pomoże.
źródło
SnowsPenultimateNormalityTest
wTeachingDemos
pakiecie dla R. zgadzam się z ideą użytkownika @ gung patrzenia na miarę bliskości zamiast koncentrować się na wartości p. Jednym z problemów związanych z użyciem korelacji w wykresie qq jest to, że jeśli dane mają prawidłowy kształt, ale inną średnią, wariancję itp., Nadal można uzyskać naprawdę wysoką korelację. Alternatywą jest użycie statystyki KS lub statystyki AD jako miary różnicy od teoretycznej.Nie przeczytałem do końca wszystkich odpowiedzi, ale widzę, że są one dość dokładne i dokładne. Ryzykując, że powtarzam coś ukrytego w długich odpowiedziach, chcę tylko powiedzieć, że v = test chi-kwadrat można wykorzystać do ciągłych danych. To może nie być najlepszy test i, podobnie jak wiele testów, opiera się na teorii asymptotycznej, a zatem może nie być dokładny w małych próbkach z rzadkimi komórkami (zależy to również od sposobu grupowania). Anderson-Darling ma większą moc do testowania normalności niż test KS, ale KS może być lepszy w przypadku innych ciągłych rozkładów. Lillefors ma test przeznaczony do rozkładów wykładniczych.
źródło