Mam kilka częstotliwości zapytań i muszę oszacować współczynnik prawa Zipfa. Oto najwyższe częstotliwości:
26486
12053
5052
3033
2536
2391
1444
1220
1152
1039
Mam kilka częstotliwości zapytań i muszę oszacować współczynnik prawa Zipfa. Oto najwyższe częstotliwości:
26486
12053
5052
3033
2536
2391
1444
1220
1152
1039
Odpowiedzi:
Aktualizacja Zaktualizowałem kod z estymatorem maksymalnego prawdopodobieństwa zgodnie z sugestią @whuber. Minimalizacja sumy kwadratów różnic między logicznymi prawdopodobieństwami teoretycznymi a częstotliwościami logów daje odpowiedź, byłaby to procedura statystyczna, gdyby można było wykazać, że jest to pewnego rodzaju M-estymator. Niestety nie mogłem wymyślić żadnego, który mógłby dać takie same wyniki.
Oto moja próba. Obliczam logarytmy częstotliwości i próbuję dopasować je do logarytmów teoretycznych prawdopodobieństw podanych przez ten wzór . Ostateczny wynik wydaje się rozsądny. Oto mój kod w R.
Najlepsze dopasowanie kwadratowe to .s = 1,47
Maksymalne prawdopodobieństwo w R można wykonać za pomocą
mle
funkcji (zstats4
pakietu), która pomaga obliczać standardowe błędy (jeśli podano poprawną ujemną funkcję maksymalnego prawdopodobieństwa):Oto wykres dopasowania do skali log-log (ponownie jak sugerował @whuber):
Czerwona linia jest sumą dopasowania kwadratów, zielona linia jest dopasowaniem o najwyższym prawdopodobieństwie.
źródło
Istnieje kilka kwestii przed nami w każdym problemu estymacji:
Oszacuj parametr.
Oceń jakość tego oszacowania.
Przeglądaj dane.
Oceń dopasowanie.
Dla tych, którzy używają metod statystycznych do zrozumienia i komunikacji, pierwsza nigdy nie powinna zostać wykonana bez innych.
Zatem prawdopodobieństwo dziennika dla danych wynosi
Biorąc pod uwagę naturę prawa Zipf, właściwym sposobem na wykres to dopasowanie jest na wykresie dziennika , gdzie dopasowanie będzie liniowe (z definicji):
Aby ocenić dobroć dopasowania i zbadać dane, spójrz na pozostałości (dane / dopasowanie, osie log-log):
Ponieważ reszty wydają się losowe, w niektórych aplikacjach możemy być zadowoleni z przyjęcia prawa Zipfa (i naszego oszacowania parametru) jako akceptowalnego, choć przybliżonego opisu częstotliwości . Ta analiza pokazuje jednak, że błędem byłoby przypuszczać, że oszacowanie ma jakąkolwiek wartość wyjaśniającą lub predykcyjną dla badanego zestawu danych.
źródło
Jeden z probabilistycznych języków programowania, takich jak PyMC3, sprawia, że oszacowanie jest stosunkowo proste. Inne języki to Stan, który ma wspaniałe funkcje i wspierającą społeczność.
Oto moja implementacja w Pythonie modelu dopasowanego do danych PO (także w Github ):
Aby zapewnić podstawową diagnostykę próbkowania, możemy zobaczyć, że próbkowanie było „dobrze mieszane”, ponieważ nie widzimy żadnej struktury w śladzie:
Do uruchomienia kodu potrzebny jest Python z zainstalowanymi pakietami Theano i PyMC3.
Dzięki @ w-huber za wspaniałą odpowiedź i komentarze!
źródło
Oto moja próba dopasowania danych, oceny i eksploracji wyników za pomocą VGAM:
W naszym przypadku zerowymi hipotezami Chi kwadrat jest to, że dane są dystrybuowane zgodnie z prawem zipf, a zatem większe wartości p potwierdzają twierdzenie, że dane są dystrybuowane zgodnie z nim. Zauważ, że nawet bardzo duże wartości p nie są dowodem, a jedynie wskaźnikiem.
źródło
Ponownie UWSE zapewnia tylko spójne oszacowanie - brak przedziałów ufności, i możemy zobaczyć kompromis w dokładności. Powyższe rozwiązanie mpiktas jest również aplikacją UWSE - chociaż programowanie jest wymagane. Pełne wyjaśnienie estymatora znajduje się na stronie : https://paradsp.wordpress.com/ - na samym dole.
źródło
Moje rozwiązanie stara się być komplementarne do odpowiedzi udzielonych przez mpiktas i whuber wykonujących implementację w Pythonie. Nasze częstotliwości i zakresy x to:
Ponieważ nasza funkcja nie jest zdefiniowana we wszystkich zakresach, musimy sprawdzać, czy normalizujemy się za każdym razem, gdy ją obliczamy. W przypadku dyskretnym prostym przybliżeniem jest podzielenie przez sumę wszystkich y (x). W ten sposób możemy porównać różne parametry.
Wynik daje nam nachylenie 1,450408, jak w poprzednich odpowiedziach.
źródło