ฉันจะใส่ชุดข้อมูลกับการกระจาย Pareto ใน R ได้อย่างไร


22

สมมติว่ามีข้อมูลต่อไปนี้:

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

ต้องการวิธีง่ายๆในการจัดวางชุดข้อมูลนี้ (และชุดข้อมูลอื่น ๆ ) ให้เป็นแบบ Pareto เป็นการดีที่มันจะส่งออกค่าทางทฤษฎีที่ตรงกันจับคู่พารามิเตอร์น้อยลง



"การจับคู่ค่าทางทฤษฎี" คืออะไร ความคาดหวังของสถิติการสั่งซื้อที่ได้รับประมาณการพารามิเตอร์? หรืออย่างอื่น?
Glen_b -Reinstate Monica

คำตอบ:


33

ถ้าคุณมีตัวอย่างจากการแจกแจงพาเรโตพร้อมพารามิเตอร์และ (โดยที่คือพารามิเตอร์ขอบเขตล่างและเป็นพารามิเตอร์รูปร่าง) ความน่าจะเป็นของบันทึกการทำงานนั้น ตัวอย่างคือ: m > 0 α > 0 m αX1,...,Xnm>0α>0mα

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

นี้เป็น monotonically เพิ่มขึ้นในดังนั้น Maximizer ที่มีค่ามากที่สุดที่มีความสอดคล้องกับข้อมูลที่สังเกต เนื่องจากพารามิเตอร์กำหนดขอบเขตล่างของการสนับสนุนสำหรับการแจกแจงแบบพาเรโตจึงเป็นค่าที่เหมาะสมที่สุดม.mm

m^=miniXi

ซึ่งไม่ได้ขึ้นอยู่กับ\ขั้นต่อไปโดยใช้เทคนิคแคลคูลัสสามัญ MLE สำหรับจะต้องตอบสนองอัลฟ่าαα

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

พีชคณิตธรรมดาบางตัวบอกเราว่า MLE ของคืออะไรα

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

ในประสาทสัมผัสที่สำคัญหลายอย่าง (เช่นประสิทธิภาพเชิง asymptotic ที่ดีที่สุดในการที่จะบรรลุขอบเขตล่าง Cramer-Rao) นี่เป็นวิธีที่ดีที่สุดในการปรับข้อมูลให้เหมาะกับการแจกแจงพาเรโต รหัส R ด้านล่างคำนวณ MLE 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

แก้ไข:จากความเห็นของ @cardinal และฉันด้านล่างเราสามารถทราบได้ว่าเป็นส่วนกลับของค่าเฉลี่ยตัวอย่างของซึ่งเกิดขึ้นกับ มีการแจกแจงแบบเลขชี้กำลัง ดังนั้นหากเราสามารถเข้าถึงซอฟต์แวร์ที่สามารถกระจายการแจกแจงแบบเอ็กซ์โพเนนเชียล (ซึ่งมีโอกาสมากขึ้นเนื่องจากมันดูเหมือนว่าจะเกิดขึ้นในหลาย ๆ ปัญหาทางสถิติ) ดังนั้นการปรับการแจกแจงแบบ Pareto สามารถทำได้โดยการเปลี่ยนชุดข้อมูลด้วยวิธีนี้ เป็นการแจกแจงแบบเอ็กซ์โพเนนเชียลในสเกลที่ถูกแปลง เข้าสู่ระบบ(Xฉัน/ม. )α^log(Xi/m^)


3
(+1) เราสามารถเขียนสิ่งที่มากขึ้นอีกนิดนัยโดยสังเกตว่ามีการกระจายการชี้แจงที่มีอัตราการ\จากสิ่งนี้และความไม่แปรเปลี่ยนของ MLEs ภายใต้การเปลี่ยนแปลงเราสรุปได้ทันทีว่าซึ่งเราแทนที่ด้วยในนิพจน์หลัง นี่ยังบอกเป็นนัยถึงวิธีที่เราอาจใช้ซอฟต์แวร์มาตรฐานเพื่อให้พอดีกับ Pareto แม้ว่าจะไม่มีตัวเลือกที่ชัดเจน อัลฟ่าอัลฟ่า = 1 / ˉ Yม.Yi=log(Xi/m)αα^=1/Y¯mm^
พระคาร์ดินัล

@cardinal - ดังนั้นเป็นส่วนกลับของค่าเฉลี่ยตัวอย่างของ 's ซึ่งเกิดขึ้นกับการแจกแจงแบบเอ็กซ์โปเนนเชียล สิ่งนี้ช่วยเราได้อย่างไร เข้าสู่ระบบ(Xฉัน/ม. )α^log(Xi/m^)
มาโคร

2
สวัสดีมาโคร จุดที่ฉันพยายามทำคือปัญหาของการประมาณค่าพารามิเตอร์ของพาเรโตสามารถลดลงได้ถึงการประมาณอัตราเอ็กซ์โปเนนเชียล: ผ่านการแปลงข้างต้นเราสามารถแปลงข้อมูลและปัญหาของเราให้เป็น (บางที) คุ้นเคยมากกว่าและแยกคำตอบทันที (สมมติว่าเราหรือซอฟต์แวร์ของเรารู้อยู่แล้วว่าจะทำอย่างไรกับตัวอย่างเลขชี้กำลัง)
พระคาร์ดินัล

ฉันจะวัดความผิดพลาดของความพอดีแบบนี้ได้อย่างไร
emanuele

@emanuele ความแปรปรวนโดยประมาณของ MLE คือค่าผกผันของเมทริกซ์ข้อมูลฟิชเชอร์ซึ่งคุณจะต้องคำนวณอย่างน้อยหนึ่งอนุพันธ์ของความน่าจะเป็นบันทึก หรือคุณสามารถใช้การสุ่มตัวอย่าง bootstrap ใหม่เพื่อประเมินข้อผิดพลาดมาตรฐาน
มาโคร

8

คุณสามารถใช้fitdistฟังก์ชั่นที่มีให้ในfitdistrplusแพ็คเกจ:

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

ควรจะเป็นlibrary(fitdistrplus)อย่างไร
Sean

1
@Sean ใช่, แก้ไขการตอบสนองตามนั้น
Kevin L Keys

โปรดทราบว่าlibrary(actuar)จำเป็นต้องใช้การเรียกเพื่อให้ทำงานได้
jsta

fp $ ประมาณ ["รูปร่าง"] แสดงถึงอะไรในกรณีนี้ มันอาจเป็นค่าประมาณอัลฟ่าหรือไม่ หรือเบต้า
Albert Hendriks
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.