Bagaimana cara menguji apakah suatu distribusi mengikuti hukum kekuasaan?


13

Saya memiliki data tentang berapa banyak pengguna memposting berapa banyak pertanyaan. Sebagai contoh,

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

Ini berarti bahwa 2 pengguna masing-masing memposting 100 pertanyaan, masing-masing 9 pengguna memposting 10 pertanyaan, dan seterusnya. Jadi, bagaimana saya bisa menentukan apakah UserCount, QuestionCountdistribusi mengikuti hukum kekuasaan?

Saya menemukan paket poweRlaw . Namun, saya hanya dapat melewati satu kelompok angka untuk melakukan evaluasi. (Contoh yang disediakan dalam paket ini adalah frekuensi kata.) Jadi, bagaimana saya menggunakan paket ini? Atau ada yang salah? Saya juga memiliki data jumlah pertanyaan setiap pengguna, yaitu [100, 100, 10, 10, 10 ... ],. Jika saya meneruskan data ini ke paket, apa yang akan saya dapatkan?


1
Artikel ini memberikan deskripsi matematis cara menguji distribusi hukum daya, serta kode R. Clauset et al. "Distribusi Power Law dalam Data Empiris."
Sycorax berkata Reinstate Monica

Terima kasih. Namun, saya tidak bisa mengejar semua konten di koran. Saya ingin beberapa pendekatan untuk melakukan validasi. Apakah Anda memiliki gagasan tentang 'makna satu kelompok data lolos ke paket'? Dalam contoh, kumpulan data adalah frekuensi kata. Terima kasih lagi.
tThirday

Maaf, saya tidak terbiasa dengan paket itu.
Sycorax berkata Reinstate Monica

Jawaban:


8

Menurut Clauset et al., Ini adalah bagaimana Anda menguji kekuatan hukum ekor dengan poweRlawpaket:

  1. Bangun objek distribusi hukum kekuasaan. Dalam hal ini, data Anda diskrit, jadi gunakan versi diskrit kelas
data <- c(100, 100, 10, 10, 10 ...)
data_pl <- displ$new(data)
  1. xmsayanα
est <- estimate_xmin(data_pl)
data_pl$xmin <- est$xmin
data_pl$pars <- est$pars

dua baris terakhir dapat ditulis ulang sebagai satu baris

data_pl$xmin <- est

Juga, pada titik ini, Anda dapat melihat statistik KS:

est$KS
  1. hal
bs <- bootstrap_p(data_pl)
bs$p

Ini bisa memakan waktu, jadi pergi dan minum secangkir teh ...

  1. halpoweRlaw
data_alt <- dislnorm$new(data)
data_alt$xmin <- est$xmin
data_alt$pars <- estimate_pars(data_alt)
comp <- compare_distributions(data_pl, data_alt)

xmsayancompare_distributionsxmsayancompcomp$test_statisticdata_plcomp$p_two_side

Ulangi langkah ini dengan disexp, dispoiskelas untuk membandingkan kuasa hukum dengan alternatif-alternatif itu.


Tolong @Clivele, dapatkah Anda memasukkan beberapa contoh data Anda sendiri? Saya memiliki masalah untuk menguji data saya jadi saya akan menghargai contoh yang berjalan ... terima kasih, saya menemukan posting Anda sangat menginspirasi!
maycca

1
Anda bisa mengetikkan perintah data("moby")dan menggunakan mobyalih-alih datadalam contoh saya, seperti dalam pengantar
Zebra Propulsion Lab
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.