Biarkan jadi untuk sampel yang sangat singkat seperti dapat dihitung dari menemukan urutan statis dari perbedaan berpasangan:
7 6 5 3 2 1
1 6 5 4 2 1
2 5 4 3 1
3 4 3 2
5 2 1
6 1
7
h = [n / 2] + 1 = 4
k = h (h-1) / 2 = 8
Jadi
Jelas untuk sampel besar mengatakan terdiri dari 80.000 catatan, kami membutuhkan memori yang sangat besar.
Apakah ada pula untuk menghitung dalam ruang 1D bukan 2D?
Tautan ke jawaban ftp://ftp.win.ua.ac.be/pub/preprints/92/Timeff92.pdf meskipun saya tidak dapat memahaminya sepenuhnya.
Jawaban:
Pembaruan: Inti masalahnya adalah bahwa untuk mencapai kompleksitas waktuO(nlog(n)) , seseorang perlu dalam urutan penyimpanan O(n) .
Tidak,O(nlog(n)) adalah teori batas bawah untuk kompleksitas waktu (lihat (1)) memilih kth elemen antara semua n(n−1)2 mungkin|xi−xj|:1≤i<j≤n .
Anda bisa mendapatkan ruangO(1) , tetapi hanya dengan secara naif memeriksa semua kombinasi xi−xj dalam waktu O(n2) .
Berita baiknya adalah Anda dapat menggunakan penaksir skalaτ (lihat (2) dan (3) untuk versi yang ditingkatkan dan beberapa perbandingan waktu), yang diimplementasikan dalam fungsi
τ univariat adalah penduga skala dua langkah (yaitu re-weighted). Ini memiliki efisiensi Gaussian 95 persen, titik rincian 50 persen, dan kompleksitas O(n) waktu dan O(1) ruang (ditambah dapat dengan mudah dibuat 'online', mengurangi setengah dari biaya komputasi dalam penggunaan berulang - meskipun Anda harus menggali ke dalam
scaleTau2()
dalamR
paketrobustbase
. EstimatorR
kode untuk mengimplementasikan opsi ini, ini agak mudah dilakukan).Edit Untuk menggunakan ini
R
(gratis dan dapat diunduh dari sini )sumber
(Jawaban sangat singkat) Teks untuk berkomentar mengatakan
EDIT
Given a large sample{xi}Ni=1 divided into time windows of width n<N , {xi}ti=t−n+1 we can apply the Qn to each time window yielding N−n+1 values of the Qn . Denote these values {Qin}N−n+1i=1
The algorithm cited here allows to obtainQin|Qi−1n at an average cost less than the worst case O(nlog(n)) needed to compute Qin from scratch.
This algorithm can however not be used to compute theQn of the full original sample {xi}Ni=1 . It also needs to maintain an buffer whose size can be as large as O(n2) (though it is often much smaller).
sumber
this is my implement of Qn...
I was programming this in C and the result is this:
sumber