Kontext:
Ich habe eine Gruppe von Websites, auf denen ich die Anzahl der Besuche täglich aufzeichne:
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
Allgemeine Frage:
- Wie bestimme ich, welche Websites am aktivsten sind?
Damit meine ich, dass in den letzten Tagen mehr oder plötzlich mehr Besuche zu verzeichnen waren. Zum Zwecke der Veranschaulichung wäre W0 in dem kleinen obigen Beispiel zunächst beliebt, zeigt jedoch allmählich Abbruch, W1 zeigt eine stetige Beliebtheit (mit einigen isolierten Spitzenwerten) und W3 eine wichtige Erhöhung nach einem ruhigen Start.
Erste Gedanken:
Ich habe diesen Thread auf SO gefunden, wo eine einfache Formel beschrieben wird:
// 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
Das sieht gut und einfach aus, aber ich habe ein Problem damit.
Die Berechnung basiert auf Steigungen. Dies ist in Ordnung und eine der Funktionen, die mich interessieren, aber meiner Meinung nach hat es Probleme mit nicht-monotonen Serien. Stellen Sie sich vor, dass wir während einiger Tage eine konstante Anzahl von Besuchen haben (also die Steigung = 0), dann wäre der obige Trend Null.
Fragen:
- Wie gehe ich mit beiden Fällen (monotone Zunahme / Abnahme) und einer großen Anzahl von Treffern um?
- Soll ich separate Formeln verwenden?