Konteks:
Saya memiliki sekelompok situs web tempat saya mencatat jumlah kunjungan setiap hari:
W0 = { 30, 34, 28, 30, 16, 13, 8, 4, 0, 5, 2, 2, 1, 2, .. }
W1 = { 1, 3, 21, 12, 10, 20, 15, 43, 22, 25, .. }
W2 = { 0, 0, 4, 2, 2, 5, 3, 30, 50, 30, 30, 25, 40, .. }
...
Wn
Pertanyaan Umum:
- Bagaimana cara menentukan situs mana yang paling aktif?
Maksud saya menerima lebih banyak kunjungan atau mengalami peningkatan kunjungan mendadak selama beberapa hari terakhir. Untuk tujuan ilustrasi, pada contoh kecil di atas W0 awalnya akan populer tetapi mulai menunjukkan pengabaian, W1 menunjukkan popularitas yang stabil (dengan beberapa puncak yang terisolasi), dan W3 kenaikan penting setelah awal yang tenang).
Pikiran awal:
Saya menemukan utas ini di SO tempat rumus sederhana dijelaskan:
// pageviews for most recent day
y2 = pageviews[-1]
// pageviews for previous day
y1 = pageviews[-2]
// Simple baseline trend algorithm
slope = y2 - y1
trend = slope * log(1.0 +int(total_pageviews))
error = 1.0/sqrt(int(total_pageviews))
return trend, error
Ini terlihat bagus dan cukup mudah, tetapi saya memiliki masalah dengannya.
Perhitungan didasarkan pada kemiringan. Ini bagus dan merupakan salah satu fitur yang saya minati, tetapi IMHO memiliki masalah untuk seri non-monotonik. Bayangkan bahwa selama beberapa hari kita memiliki jumlah kunjungan yang konstan (jadi kemiringan = 0), maka tren di atas akan menjadi nol.
Pertanyaan:
- Bagaimana cara saya menangani kedua kasus (kenaikan / penurunan monoton) dan jumlah hit yang besar?
- Haruskah saya menggunakan formula terpisah?