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?
Respuestas:
Parece que está buscando un "método de detección de puntos de cambio en línea". (Esa es una frase útil para Google.) Algunos documentos recientes útiles (y accesibles) son Adams y MacKay (un enfoque bayesiano) y Keogh et al. Es posible que pueda presionar el paquete de vigilancia para R en servicio. Se pueden encontrar grandes cantidades de resultados aislados utilizando métodos de control de procesos estadísticos .
fuente
Definitivamente, hay formas más y menos complejas de abordar este tipo de problema. Por el sonido de las cosas, comenzaste con una solución bastante simple (la fórmula que encontraste en SO). Con ese tipo de simplicidad en mente, pensé en volver a visitar algunos puntos clave que usted hace en (la versión actual de) su publicación.
Hasta ahora, ha dicho que desea que su medida de "actividad del sitio" capture:
Como señala @ jan-galkowski, también parece estar (al menos tácitamente) interesado en el rango de los sitios en relación con los demás a lo largo de estas dimensiones.
Si esa descripción es precisa, propondría explorar la solución más simple posible que incorpore esas tres medidas (cambio, magnitud, rango) como componentes separados. Por ejemplo, podrías tomar:
(y2)
dividido por las visitas / día promedio para ese sitio (Y
):y2 / mean(Y)
Para W0, W1 y W2 respectivamente, eso produce 0.16, 1.45 y 2.35. (En aras de la interpretación, considere que un sitio cuyo valor de visitas por día más reciente fue igual a su media de visitas por día generaría un resultado de 1). Tenga en cuenta que también puede ajustar esta medida para capturar los 2 (o más) días más recientes:
y2 + y1 / 2 * mean(Y)
Eso produce: 0.12, 1.33, 1.91 para sus tres sitios de muestra.
Si, de hecho, utiliza la media de la distribución de visitas / días de cada sitio para este tipo de medida, también miraría la desviación estándar de la distribución para tener una idea de su volatilidad relativa. La desviación estándar para la distribución de visitas / días de cada sitio es: 12.69, 12.12 y 17.62. Pensar en la
y2/mean(Y)
medida relativa a la desviación estándar es útil porque le permite mantener en perspectiva la magnitud reciente de la actividad en el sitio W2 (mayor desviación estándar = menos estable / consistente en general).Finalmente, si está interesado en los rangos, también puede extender estos enfoques en esa dirección. Por ejemplo, yo creo que sabiendo el rango de un sitio en términos de las visitas más recientes por los valores de día, así como el rango de visitas medias de cada sitio por día (el rango de
mean (Y)
cadaW
enWn
) podría ser útil. Una vez más, puede adaptarlo a sus necesidades.Puede presentar los resultados de todos estos cálculos como una tabla, o crear una visualización actualizada regularmente para rastrearlos diariamente.
fuente
Tenga en cuenta que las tasas de llegada de usuarios a los sitios web son series desagradables, tienden a dispersarse en exceso (desde el punto de vista de Poisson), por lo tanto, considere distribuciones binominales negativas para ver las llegadas y su ajuste. Además, es posible que desee examinar las estadísticas de pedidos de los sitios en cada día en lugar de sus números.
fuente