Bagaimana cara memasukkan satu set data ke distribusi Pareto di R?

22

Sudah, katakanlah, data berikut:

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

Ingin cara sederhana untuk menyesuaikan ini (dan beberapa set data lainnya) ke distribusi Pareto. Idealnya itu akan menghasilkan nilai teoritis yang cocok, kurang ideal parameternya.

Felix
sumber
Apa yang dimaksud dengan "mencocokkan nilai-nilai teoretis"? Harapan dari statistik pesanan diberikan estimasi parameter? Atau sesuatu yang lain?
Glen_b -Reinstate Monica

Jawaban:

33

Nah, jika Anda memiliki sampel dari distribusi pareto dengan parameter dan (di mana adalah parameter batas bawah dan adalah parameter bentuk) log-kemungkinan itu sampel adalah: m > 0 α > 0 m αX1,...,Xnm>0α>0mα

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

ini adalah peningkatan monoton dalam , sehingga maximizer adalah nilai terbesar yang konsisten dengan data yang diamati. Karena parameter mendefinisikan batas bawah dukungan untuk distribusi Pareto, maka yang optimal adalahmmm

m^=miniXi

yang tidak bergantung pada . Selanjutnya, menggunakan trik kalkulus biasa, MLE untuk harus dipenuhiααα

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

beberapa aljabar sederhana memberitahu kita MLE dari adalahα

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

Dalam banyak hal penting (misalnya efisiensi asimptotik optimal karena mencapai batas bawah Cramer-Rao), ini adalah cara terbaik untuk menyesuaikan data ke distribusi Pareto. Kode R di bawah ini menghitung MLE untuk set data yang diberikan 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

Sunting: Berdasarkan komentar oleh @cardinal dan I di bawah ini, kami juga dapat mencatat bahwa adalah kebalikan dari mean sampel dari , yang kebetulan memiliki distribusi eksponensial. Oleh karena itu, jika kita memiliki akses ke perangkat lunak yang sesuai dengan distribusi eksponensial (yang lebih mungkin, karena tampaknya muncul dalam banyak masalah statistik), maka pemasangan distribusi Pareto dapat dilakukan dengan mengubah kumpulan data dengan cara ini dan memasangnya. ke distribusi eksponensial pada skala transformasi. log(Xi/ m )α^log(Xi/m^)

Makro
sumber
3
(+1) Kita dapat menulis hal-hal sedikit lebih sugestif dengan mencatat bahwa didistribusikan eksponensial dengan laju . dari ini dan invariansi MLEs yang sedang dalam transformasi kami menyimpulkan sekaligus bahwa , di mana kami mengganti oleh dalam ekspresi terakhir. Ini juga mengisyaratkan bagaimana kita dapat menggunakan perangkat lunak standar agar sesuai dengan Pareto bahkan jika tidak ada opsi eksplisit yang tersedia. a a = 1 / ˉ Y m mYi=log(Xi/m)αα^=1/Y¯mm^
kardinal
@ cardinal - Jadi, adalah kebalikan dari mean sampel dari , yang kebetulan memiliki distribusi eksponensial. Bagaimana ini membantu kita? log(Xi/ m )α^log(Xi/m^)
Makro
2
Hai, Makro. Poin yang saya coba sampaikan adalah bahwa masalah estimasi parameter Pareto dapat (pada dasarnya) dikurangi menjadi estimasi tingkat eksponensial: Melalui transformasi di atas, kita dapat mengubah data dan masalah kita menjadi (mungkin) yang lebih akrab dan segera mengekstrak jawabannya (dengan asumsi kami, atau perangkat lunak kami, sudah tahu apa yang harus dilakukan dengan sampel eksponensial).
kardinal
Bagaimana saya bisa mengukur kesalahan jenis ini?
emanuele
@emanuele, perkiraan varian MLE adalah kebalikan dari matriks informasi fisher, yang akan mengharuskan Anda untuk menghitung setidaknya satu turunan dari log-likelihood. Atau, Anda bisa menggunakan semacam bootstrap resampling untuk memperkirakan kesalahan standar.
Makro
8

Anda dapat menggunakan fitdistfungsi yang disediakan dalam fitdistrpluspaket:

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
sumber
Haruskah begitu library(fitdistrplus)?
Sean
1
@Sean ya, mengedit respons yang sesuai
Kevin L Keys
Perhatikan bahwa panggilan ke library(actuar)diperlukan agar ini berfungsi.
jsta
Apa yang mewakili $ estimasi ["bentuk"] dalam kasus ini? Apakah itu mungkin perkiraan alfa? Atau beta?
Albert Hendriks