Jak dopasować zestaw danych do rozkładu Pareto w R?

22

Mieć, powiedzmy, następujące dane:

8232302  684531  116857   89724   82267   75988   63871   
  23718    1696     436     439     248     235

Potrzebujesz prostego sposobu dopasowania tego (i kilku innych zestawów danych) do dystrybucji Pareto. Idealnie byłoby wyprowadzić pasujące wartości teoretyczne, mniej idealnie parametry.

Felix
źródło
Co należy rozumieć przez „dopasowanie wartości teoretycznych”? Oczekiwania dotyczące statystyk zamówień, biorąc pod uwagę oszacowania parametrów? Albo coś innego?
Glen_b

Odpowiedzi:

33

Cóż, jeśli masz próbkę z rozkładu pareto z parametrami i (gdzie jest dolnym ograniczonym parametrem, a jest parametrem kształtu), prawdopodobieństwo logarytmu tego próbka to: m > 0 α > 0 m αX1,...,Xnm>0α>0mα

nlog(α)+nαlog(m)(α+1)i=1nlog(Xi)

jest to monotonicznie rosnąca , więc maksymalizator jest największą wartością zgodną z obserwowanymi danymi. Ponieważ parametr określa dolną granicę podparcia dla rozkładu Pareto, optymalne jestmmm

m^=miniXi

co nie zależy od . Następnie, używając zwykłych sztuczek rachunku różniczkowego, MLE dla musi spełniaćααα

nα+nlog(m^)i=1nlog(Xi)=0

jakaś prosta algebra mówi nam, że MLE z jestα

α^=ni=1nlog(Xi/m^)

W wielu ważnych aspektach (np. Optymalna wydajność asymptotyczna, ponieważ osiąga dolną granicę Cramer-Rao), jest to najlepszy sposób dopasowania danych do rozkładu Pareto. Kod R poniżej oblicza MLE dla danego zestawu danych X.

pareto.MLE <- function(X)
{
   n <- length(X)
   m <- min(X)
   a <- n/sum(log(X)-log(m))
   return( c(m,a) ) 
}

# example. 
library(VGAM)
set.seed(1)
z = rpareto(1000, 1, 5) 
pareto.MLE(z)
[1] 1.000014 5.065213

Edycja: Na podstawie komentarza @cardinal i I poniżej możemy również zauważyć, że jest odwrotnością średniej próbki z , które zdarzają się mieć rozkład wykładniczy. Dlatego jeśli mamy dostęp do oprogramowania, które może pasować do rozkładu wykładniczego (co jest bardziej prawdopodobne, ponieważ wydaje się, że pojawia się w wielu problemach statystycznych), wówczas dopasowanie rozkładu Pareto można osiągnąć poprzez transformację zestawu danych w ten sposób i dopasowanie go do rozkładu wykładniczego w przekształconej skali. log(Xi/ m )α^log(Xi/m^)

Makro
źródło
3
(+1) Możemy pisać rzeczy bardziej sugestywnie, zauważając, że jest rozkładany wykładniczo ze współczynnikiem . z tego i niezmienności transformowanych MLE wywodzimy od razu, że , gdzie zamieniamy na w tym ostatnim wyrażeniu. Wskazuje to również, w jaki sposób możemy użyć standardowego oprogramowania, aby dopasować Pareto, nawet jeśli nie jest dostępna żadna wyraźna opcja. a- a- = 1 / ˉ Y m mYi=log(Xi/m)αα^=1/Y¯mm^
kardynał
@cardinal - Tak więc jest odwrotnością średniej próbki , które mają rozkład wykładniczy. Jak nam to pomaga? log(Xi/ m )α^log(Xi/m^)
Makro
2
Cześć, Makro. Chodziło mi o to, że problem oszacowania parametrów Pareto można (zasadniczo) zredukować do problemu oszacowania współczynnika wykładniczego: za pomocą powyższej transformacji możemy przekonwertować nasze dane i problem na (być może) bardziej znajomy i natychmiast wyodrębnij odpowiedź (zakładając, że my lub nasze oprogramowanie wiemy już, co zrobić z próbką wykładniczą).
kardynał
Jak mogę zmierzyć błąd tego rodzaju dopasowania?
emanuele
@emanuele, przybliżona wariancja MLE jest odwrotnością macierzy informacji Fishera, która będzie wymagać obliczenia co najmniej jednej pochodnej prawdopodobieństwa log. Lub możesz użyć pewnego rodzaju próbkowania ładowania początkowego, aby oszacować standardowy błąd.
Makro
8

Możesz użyć fitdistfunkcji dostarczonej w fitdistrpluspakiecie:

library(MASS)
library(fitdistrplus)
library(actuar)

# suppose data is in dataPar list
fp <- fitdist(dataPar, "pareto", start=list(shape = 1, scale = 500))
#the mle parameters will be stored in fp$estimate
akashrajkn
źródło
Tak powinno być library(fitdistrplus)?
Sean
1
@Sean tak, odpowiednio edytujesz odpowiedź
Kevin L Keys
Pamiętaj, że połączenie library(actuar)jest wymagane, aby to zadziałało.
jsta
Co w tym przypadku reprezentuje fp $ oszacowanie [„kształt”]? Czy to może oszacowana alfa? A może beta?
Albert Hendriks,