Jak sprawdzić, czy dystrybucja jest zgodna z prawem mocy?

13

Mam dane o tym, ilu użytkowników publikuje ile pytań. Na przykład,

[UserCount, QuestionCount] 
[2, 100] 
[9, 10] 
[3, 80] 
... ...

Oznacza to, że 2 użytkowników opublikowało 100 pytań, 9 użytkowników opublikowało 10 pytań i tak dalej. Jak więc ustalić, czy UserCount, QuestionCountrozkład jest zgodny z prawem mocy?

Znalazłem pakiet poweRlaw . Mogę jednak przekazać tylko jedną grupę liczb, aby dokonać oceny. (Przykładem podanym w tym pakiecie jest częstotliwość słów.) Jak więc korzystać z tego pakietu? Czy mam coś nie tak? Mam również dane o liczbie pytań każdego użytkownika, tj [100, 100, 10, 10, 10 ... ]. Jeśli przekażę te dane do paczki, co dostanę?

trzeci dzień
źródło
1
W tym artykule znajduje się opis matematyczny dotyczący testowania rozkładów prawa mocy, a także kodu R. Clauset i in. „Rozkłady mocy w danych empirycznych”.
Sycorax mówi Przywróć Monikę
Dzięki. Nie mogę jednak nadrobić zaległości w całej pracy. Chcę kilka podejść do weryfikacji. Czy masz pojęcie o „znaczeniu pojedynczej grupy danych przekazywanych do pakietu”? W tym przykładzie zestaw danych to częstotliwości słów. Dzięki jeszcze raz.
tTirday
Przepraszam, nie znam tej paczki.
Sycorax mówi Przywróć Monikę

Odpowiedzi:

8

Według Clauset i wsp. W ten sposób testujesz ogon prawa mocy za pomocą poweRlawpakietu:

  1. Skonstruuj obiekt dystrybucji prawa mocy. W takim przypadku dane są dyskretne, więc użyj dyskretnej wersji klasy
data <- c(100, 100, 10, 10, 10 ...)
data_pl <- displ$new(data)
  1. xminα
est <- estimate_xmin(data_pl)
data_pl$xmin <- est$xmin
data_pl$pars <- est$pars

dwie ostatnie linie można przepisać jako jedną linię

data_pl$xmin <- est

Ponadto w tym momencie możesz zobaczyć statystyki KS:

est$KS
  1. p
bs <- bootstrap_p(data_pl)
bs$p

Może to zająć trochę czasu, więc idź i napij się herbaty ...

  1. ppoweRlaw
data_alt <- dislnorm$new(data)
data_alt$xmin <- est$xmin
data_alt$pars <- estimate_pars(data_alt)
comp <- compare_distributions(data_pl, data_alt)

xmincompare_distributionsxmincompcomp$test_statisticdata_plcomp$p_two_side

Powtórz tę czynność z disexp, dispoiszajęciach porównać Prawo energetyczne z tych alternatyw.

Zebra Propulsion Lab
źródło
@Clivele, czy możesz podać samodzielny przykład swoich danych? Mam problem z przetestowaniem moich danych, więc doceniłbym działający przykład ... dziękuję, uważam twój post za bardzo inspirujący!
maycca
1
Możesz wpisać polecenie data("moby")i użyć mobyzamiast dataw moim przykładzie, tak jak we wstępie
Zebra Propulsion Lab