Apakah mungkin untuk mengumpulkan satu set statistik yang menggambarkan sejumlah besar sampel sehingga saya dapat menghasilkan boxplot?


22

Saya harus mengklarifikasi langsung bahwa saya seorang pengembang perangkat lunak berlatih, bukan ahli statistik, dan bahwa kelas saya kuliah statistik adalah sangat lama ...

Yang mengatakan, saya ingin tahu apakah ada metode untuk mengumpulkan satu set statistik deskriptif yang kemudian dapat digunakan untuk menghasilkan boxplot, yang tidak berarti menyimpan banyak sampel individu?

Apa yang saya coba lakukan adalah menghasilkan ringkasan grafis dari waktu layanan antrian dalam proses multi-antrian yang kompleks. Saya pernah menggunakan paket yang disebut tnftools yang memungkinkan akumulasi sampel besar dan kemudian diproses menjadi grafik waktu respons dan pencilan yang bagus ... Tetapi tnftools tidak tersedia untuk platform saya saat ini.

Idealnya saya ingin dapat mengakumulasi satu set statistik deskriptif "on the fly" saat proses berjalan, dan kemudian mengekstrak data untuk analisis sesuai permintaan. Tapi saya tidak bisa begitu saja memiliki proses mengumpulkan sampel karena memori / IO yang terlibat dalam melakukan itu akan memiliki dampak yang tidak dapat diterima pada kinerja sistem.


Kaelin:> maksud Anda apakah ada metode 'on the fly' untuk menghitung statistik ringkasan seperti median dan kuartil? Jika ini yang Anda inginkan, saya bisa memberi Anda tautan ke makalah yang memerinci mereka. Anda juga dapat memberikan rincian lebih lanjut tentang platform yang sedang Anda kerjakan karena implementasi GNU yang efisien dari metode ini kemungkinan ada di R.
user603

@ kwak: Ya, sepertinya itu yang saya cari. Saya akan sangat menghargai tautan-tautan itu. :-) Saya bekerja pada Mac OS X ... Saya dapat menggunakan R untuk data pasca-pemrosesan, tetapi tidak dapat menautkan kode GPL ke produk perusahaan saya karena alasan biasa.
Kaelin Colclasure

Jawaban:


27

Untuk plot box 'on the fly', Anda akan memerlukan min / maks 'on the fly' (sepele) serta kuartil 'on the fly' (0,25,0,5 = median dan 0,75).

Banyak pekerjaan telah terjadi baru-baru ini dalam masalah algoritma online (atau 'on the fly') untuk perhitungan median.

Perkembangan terakhir adalah binmedian . Sebagai tendangan samping, ia juga menikmati kompleksitas kasus terburuk yang lebih baik daripada quickselect (yang tidak online atau lintasan tunggal).

Anda dapat menemukan kertas terkait serta kode C dan FORTRAN online di sini . Anda mungkin harus memeriksa detail lisensi dengan penulis.

Anda juga akan memerlukan algoritma pass tunggal untuk kuartil, yang untuknya Anda dapat menggunakan pendekatan di atas dan karakterisasi rekursif kuartil berikut dalam hal median:

Q0,75(x)Q0,5(xsaya:xsaya>Q0,5(x))

dan

Q0,25(x)Q0,5(xsaya:xsaya<Q0,5(x))

yaitu kuartil 25 (75) persen sangat dekat dengan median pengamatan yang lebih kecil (lebih besar) dari median.

Tambahan:

Ada sejumlah metode multi-pass lama untuk menghitung kuantil. Pendekatan yang populer adalah memelihara / memperbarui reservoir pengamatan berukuran deterministik yang dipilih secara acak dari sungai dan menghitung kuantil secara rekursif (lihat ulasan ini ) pada reservoir ini. Pendekatan ini (dan terkait) digantikan oleh yang diusulkan di atas.


1
+1 Benar; Saya masih berada di zaman kegelapan membuat perkiraan dari histogram.

Apakah saya mengerti dengan benar bahwa definisi kuartil rekursif dari median memerlukan dua lintasan jika diterapkan secara naif? Apakah Anda mengetahui algoritma lintasan tunggal?
Kuarsa

@ Quartz: tidak, satu pass akan dilakukan: Anda memiliki dua, pass tunggal, menjalankan perhitungan median.
user603

2

Alih-alih hanya menemukan median, ada algoritma yang secara langsung mempertahankan perkiraan histogram: " Algoritma P-Square untuk Perhitungan Dinamik Jumlah dan Histogram Tanpa Menyimpan Pengamatan". Ini mungkin akan jauh lebih efisien daripada binning berulang untuk setiap quantile yang Anda inginkan.

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.