Mendefinisikan kuantil di atas sampel tertimbang

12

Saya memiliki sampel tertimbang, yang ingin saya hitung kuantil. 1

Idealnya, jika bobotnya sama (baik = 1 atau tidak), hasilnya akan konsisten dengan bobot scipy.stats.scoreatpercentile()R dan quantile(...,type=7).

Salah satu pendekatan sederhana adalah "memperbanyak" sampel menggunakan bobot yang diberikan. Itu secara efektif memberikan "flat" ecdf lokal di bidang berat> 1, yang secara intuitif tampak seperti pendekatan yang salah ketika sampel sebenarnya merupakan sub-sampling. Secara khusus, ini berarti bahwa sampel dengan bobot semua sama dengan 1 memiliki kuantil berbeda dari satu dengan bobot semua sama dengan 2, atau 3. (Namun, perhatikan bahwa makalah yang dirujuk dalam [1] tampaknya menggunakan pendekatan ini.)

http://en.wikipedia.org/wiki/Percentile#Weighted_percentile memberikan formulasi alternatif untuk persentil tertimbang. Tidak jelas dalam formulasi ini apakah sampel yang berdekatan dengan nilai yang identik harus dikombinasikan terlebih dahulu dan bobotnya dijumlahkan, dan dalam kasus apa pun hasilnya tidak konsisten dengan tipe default R 7 quantile()pada case tanpa bobot / bobot yang sama. Halaman wikipedia pada kuantil sama sekali tidak menyebutkan case berbobot.

Apakah ada generalisasi tertimbang dari fungsi kuantil "tipe 7" R?

[menggunakan Python, tetapi hanya mencari algoritma, sungguh, jadi bahasa apa pun akan melakukannya]

M.

[1] Bobot adalah bilangan bulat; bobotnya adalah buffer yang digabungkan dalam operasi "collapse" dan "output" seperti yang dijelaskan dalam http://infolab.stanford.edu/~manku/papers/98sigmod-quantiles.pdf . Pada dasarnya sampel tertimbang adalah sub-sampel dari sampel tidak tertimbang penuh, dengan setiap elemen x (i) dalam sub-sampel mewakili berat (i) elemen dalam sampel penuh.

Misha
sumber
Topik sudah cukup lama, tetapi di sini ada kode numpy untuk quantiles stackoverflow.com/a/29677616/498892
Alleo

Jawaban:

5

Ini adalah salah satu pendekatan yang mungkin:

Misalkan Anda memiliki sampel yang dipesan dengan bobot masing-masing .X1X2XnW1,W2,,Wn

Tetapkan jadi dan .

Sk=(k1)Wk+(N1)i=1k1Wi
S1=0Sn=(N1)i=1NWi

Untuk interpolasi kuantil , temukan sedemikian sehingga . Perkiraan Anda bisa jadipkSkSnpSk+1Sn

Xk+(Xk+1-Xk)halSn-SkSk+1-Sk.

Saya pikir Anda akan menemukan bahwa jika semuanya sama maka ini mereproduksi R-7. Ada pendekatan lain yang juga berlaku, tetapi saya curiga mereka tidak menganggap semua bobot yang dipesan sama pentingnya.Wsaya

Henry
sumber
Mungkin ada masalah jika dua nilai dalam sampel sama tetapi memiliki bobot yang berbeda - saya belum memikirkannya.
Henry