Contexto:
Tengo un grupo de sitios web donde registro la cantidad de visitas diarias:
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
Pregunta general:
- ¿Cómo determino qué sitios son los más activos?
Con esto quiero decir recibir más visitas o tener un aumento repentino de visitas durante los últimos días. Con fines ilustrativos, en el pequeño ejemplo anterior, W0 sería inicialmente popular pero está comenzando a mostrar abandono, W1 muestra una popularidad constante (con un pico aislado) y W3 un aumento importante después de un comienzo tranquilo).
Pensamientos iniciales
Encontré este hilo en SO donde se describe una fórmula simple:
// 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
Esto se ve bien y es bastante fácil, pero tengo un problema con eso.
El cálculo se basa en pendientes. Esto está bien y es una de las características que me interesan, pero en mi humilde opinión, tiene problemas para las series no monótonas. Imagine que durante algunos días tenemos un número constante de visitas (entonces la pendiente = 0), entonces la tendencia anterior sería cero.
Preguntas:
- ¿Cómo manejo ambos casos (aumento / disminución monotónica) y un gran número de visitas?
- ¿Debo usar fórmulas separadas?