Làm cách nào để tôi khớp một tập hợp dữ liệu với phân phối Pareto trong R?


22

Có, giả sử, dữ liệu sau đây:

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

Muốn có một cách đơn giản để phù hợp với điều này (và một số bộ dữ liệu khác) cho bản phân phối Pareto. Lý tưởng nhất là nó sẽ xuất ra các giá trị lý thuyết phù hợp, ít lý tưởng hơn là các tham số.



Những gì được dự định bởi "giá trị lý thuyết phù hợp"? Những kỳ vọng của số liệu thống kê đặt hàng cho các ước tính tham số? Hay cái gì khác?
Glen_b -Reinstate Monica

Câu trả lời:


33

Chà, nếu bạn có một mẫu từ phân phối pareto với các tham số và (trong đó là tham số ràng buộc thấp hơn và là tham số hình dạng) khả năng đăng nhập của điều đó mẫu là: m > 0 α > 0 m αX1,...,Xnm>0α>0mα

nđăng nhập(α)+nαđăng nhập(m)-(α+1)Σtôi= =1nđăng nhập(Xtôi)

đây là mức tăng đơn điệu tính bằng , vì vậy bộ tối đa hóa là giá trị lớn nhất phù hợp với dữ liệu quan sát được. Do tham số xác định giới hạn dưới của hỗ trợ cho phân phối Pareto, nên tối ưu làmmm

m^= =tối thiểutôiXtôi

không phụ thuộc vào . Tiếp theo, sử dụng các thủ thuật tính toán thông thường, MLE cho phải đáp ứngalphaαα

nα+nđăng nhập(m^)-Σtôi= =1nđăng nhập(Xtôi)= =0

một số đại số đơn giản cho chúng ta biết MLE của làα

α^= =nΣtôi= =1nđăng nhập(Xtôi/m^)

Trong nhiều giác quan quan trọng (ví dụ hiệu quả tiệm cận tối ưu ở chỗ nó đạt được giới hạn dưới của Cramer-Rao), đây là cách tốt nhất để khớp dữ liệu với phân phối Pareto. Mã R bên dưới tính toán MLE cho một tập dữ liệu nhất định , 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

Chỉnh sửa: Dựa trên phần bình luận của @cardinal và tôi bên dưới, chúng tôi cũng có thể lưu ý rằng là đối ứng của giá trị trung bình mẫu của , xảy ra với có phân phối theo cấp số nhân. Do đó, nếu chúng ta có quyền truy cập vào phần mềm có thể phù hợp với phân phối theo cấp số nhân (rất có thể, vì dường như nó phát sinh trong nhiều vấn đề thống kê), thì có thể thực hiện phân phối Pareto bằng cách chuyển đổi tập dữ liệu theo cách này và điều chỉnh nó đến một phân phối theo cấp số nhân trên quy mô chuyển đổi. α^đăng nhập(Xtôi/m^)


3
(+1) Chúng ta có thể viết mọi thứ một cách gợi ý hơn một chút bằng cách lưu ý rằng được phân phối theo cấp số nhân với tỷ lệ . từ điều này và sự bất biến của MLE khi chuyển đổi, chúng tôi kết luận ngay rằng , trong đó chúng tôi thay thế bằng trong biểu thức sau. Điều này cũng gợi ý về cách chúng tôi có thể sử dụng phần mềm tiêu chuẩn để phù hợp với Pareto ngay cả khi không có tùy chọn rõ ràng nào khả dụng. Ytôi= =đăng nhập(Xtôi/m)αα^= =1/Y¯mm^
Đức hồng y

@cardinal - Vì vậy, là nghịch đảo của giá trị trung bình mẫu củalog(Xi/ m )'s, trong đó xảy ra để có một phân phối mũ. Điều này giúp chúng ta như thế nào? α^đăng nhập(Xtôi/m^)
Macro

2
Xin chào, Macro. Điểm tôi đang cố gắng đưa ra là vấn đề ước tính các tham số của Pareto có thể giảm (về cơ bản) so với ước tính tỷ lệ theo cấp số nhân: Thông qua việc chuyển đổi ở trên, chúng ta có thể chuyển đổi dữ liệu và vấn đề của mình thành (có lẽ) quen thuộc hơn và trích xuất ngay câu trả lời (giả sử chúng tôi hoặc phần mềm của chúng tôi đã biết phải làm gì với một mẫu số mũ).
Đức hồng y

Làm thế nào tôi có thể đo lỗi của loại phù hợp?
emanuele

@emanuele, phương sai gần đúng của MLE là nghịch đảo của ma trận thông tin cá, sẽ yêu cầu bạn tính toán ít nhất một đạo hàm của khả năng đăng nhập. Hoặc, bạn có thể sử dụng một loại mô hình bootstrap để ước tính lỗi tiêu chuẩn.
Macro

8

Bạn có thể sử dụng fitdistchức năng được cung cấp trong fitdistrplusgói:

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

Có nên như library(fitdistrplus)vậy không?
Sean

1
@ Có, chỉnh sửa phản hồi phù hợp
Kevin L Keys

Lưu ý rằng cuộc gọi đến library(actuar)là bắt buộc để làm việc này.
jsta

Fp $ ước tính ["hình dạng"] thể hiện điều gì trong trường hợp này? Có lẽ là alpha ước tính? Hay beta?
Albert Hendriks
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.