วิธีการทดสอบว่าการจัดจำหน่ายเป็นไปตามกฎหมายพลังงานหรือไม่


13

ฉันมีข้อมูลจำนวนผู้ใช้ที่โพสต์จำนวนคำถาม ตัวอย่างเช่น,

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

ซึ่งหมายความว่าผู้ใช้ 2 คนแต่ละคนโพสต์ 100 คำถามผู้ใช้ 9 คนโพสต์คำถาม 10 ข้อและอื่น ๆ ดังนั้นฉันจะทราบได้อย่างไรว่าการUserCount, QuestionCountกระจายตามกฎหมายพลังงานหรือไม่

ผมพบว่าแพคเกจ poweRlaw อย่างไรก็ตามฉันสามารถส่งเฉพาะตัวเลขกลุ่มเดียวเพื่อทำการประเมิน (ตัวอย่างที่มีให้ในแพ็คเกจนี้คือความถี่ของคำ) ดังนั้นฉันจะใช้แพ็คเกจนี้ได้อย่างไร หรือฉันมีอะไรผิดปกติ? [100, 100, 10, 10, 10 ... ]ฉันยังมีข้อมูลของการนับคำถามของผู้ใช้แต่ละคือ, ถ้าฉันส่งข้อมูลนี้ไปยังแพ็คเกจฉันจะได้อะไร


1
บทความนี้แสดงคำอธิบายทางคณิตศาสตร์เกี่ยวกับวิธีทดสอบการแจกแจงกฎของกำลังรวมถึงรหัส R Clauset และคณะ "การแจกแจงกฎหมายพลังงานในข้อมูลเชิงประจักษ์"
Sycorax พูดว่า Reinstate Monica

ขอบคุณ อย่างไรก็ตามฉันไม่สามารถติดตามเนื้อหาทั้งหมดในกระดาษได้ ฉันต้องการวิธีการบางอย่างในการตรวจสอบ คุณมีความคิดเกี่ยวกับ 'ความหมายของกลุ่มข้อมูลเดียวที่ส่งไปยังแพ็คเกจ' หรือไม่? ในตัวอย่างชุดข้อมูลคือความถี่ของคำ ขอบคุณอีกครั้ง.
tThirday

ขออภัยฉันไม่คุ้นเคยกับแพ็คเกจดังกล่าว
Sycorax พูดว่า Reinstate Monica

คำตอบ:


8

ตามที่ Clauset et al. นี่คือวิธีที่คุณทดสอบหางกฎหมายพลังงานด้วยpoweRlawแพ็คเกจ:

  1. สร้างวัตถุการกระจายกฎหมายพลังงาน ในกรณีนี้ข้อมูลของคุณไม่ต่อเนื่องดังนั้นให้ใช้คลาสต่อเนื่องของคลาส
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

สองบรรทัดสุดท้ายสามารถเขียนใหม่เป็นหนึ่งบรรทัด

data_pl$xmin <- est

นอกจากนี้ ณ จุดนี้คุณสามารถดูสถิติ KS:

est$KS
  1. สถิติ KS บอกคุณว่าการกระจายของกฎหมายพลังงานเหมาะสมกับข้อมูลของคุณอย่างไร แต่ก็ไม่ได้บอกคุณว่าข้อมูลของคุณมาจากกฎหมายพลังงาน ดังนั้นคุณต้องมีค่าด้วย นี่คือวิธีที่คุณทำ:p
bs <- bootstrap_p(data_pl)
bs$p

นี่อาจใช้เวลาสักครู่ดังนั้นจงไปดื่มชาสักถ้วย ...

  1. สมมติว่าคุณได้รับค่าและมากกว่า 0.05 หรือระดับที่สำคัญของคุณคือคุณยังต้องแยกความเป็นไปได้ที่ไม่มีการกระจายทางเลือกอื่นที่เหมาะสมกับข้อมูลที่ดีกว่ากฎหมายพลังงาน แพคเกจการดำเนินการ 3 ทางเลือกอื่น ๆ ที่คุณสามารถเปรียบเทียบกับ เข้าสู่ระบบปกติเช่น: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)

โปรดทราบว่าของการแจกแจงแบบล็อกปกติถูกตั้งค่าเป็นกฎพลังงานเนื่องจากฟังก์ชันต้องการให้ s เป็นค่าเดียวกันสำหรับการแจกแจงทั้งสอง วัตถุมีสองเขตข้อมูลที่น่าสนใจ: บ่งชี้ที่หนึ่งที่เป็นแบบที่ดีกว่าที่มีความหมายจำนวนบวกจะดีกว่าและเชิงลบอย่างอื่น; หมายถึงความแตกต่างที่สำคัญ x m ฉันnxmincompare_distributionsxmincompcomp$test_statisticdata_plcomp$p_two_side

ทำซ้ำขั้นตอนนี้กับdisexp, dispoisเรียนเพื่อเปรียบเทียบอำนาจกฎหมายที่มีทางเลือกเหล่านั้น


กรุณา @Clivele คุณช่วยยกตัวอย่างข้อมูลของคุณแบบสแตนด์อโลนได้ไหม ฉันมีปัญหาในการทดสอบข้อมูลของฉันดังนั้นฉันจะขอขอบคุณตัวอย่างการทำงาน ... ขอบคุณฉันพบโพสต์ของคุณเป็นแรงบันดาลใจมาก!
maycca

1
คุณสามารถพิมพ์คำสั่งdata("moby")และใช้mobyแทนdataตัวอย่างในคำแนะนำได้
Zebra Propulsion Lab
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.