Determinar si un sitio web está activo mediante visitas diarias

15

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?
Dan
fuente
1
Me sorprende que aún no haya recibido ninguna respuesta (aunque es una pregunta obviamente popular). Dado que cada una de sus cuatro viñetas vale una pregunta en sí mismas, ¿qué tal si limitamos esta pregunta a una de ellas y publicamos las otras en preguntas separadas? Todas son preguntas realmente excelentes que tienen enfoques distintos, y las cuatro valen la pena por sí mismas.
Andy W
Hola Andy, muchas gracias por tu respuesta. Trataré de reformularlo y enfocarme en un solo problema a la vez. Mi pensamiento inicial fue hacerlo lo más amplio posible (y evitar repetir la misma pregunta después), pero dada la falta de respuestas, parece que es demasiado general para que alguien responda.
Dan
Edité la pregunta para exponer los dos problemas principales que más me interesan. Elegí ponerlos en la misma pregunta dada su estrecha relación.
Dan
1
Todavía no entiendo por qué tener una estimación con un pequeño error hace que un enfoque sea 'inutilizable'.
onestop
Gracias por el comentario. No digo que el enfoque (cálculo de tendencia) no se pueda utilizar, pero su cálculo de error podría tener un problema potencial. Dado que no obtuve respuesta hasta el momento, eliminaré ese elemento de la pregunta con la esperanza de que sea más fácil de responder.
Dan

Respuestas:

4

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 .

whuber
fuente
2

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:

  • Cambios de pendiente en visitas / día durante "los últimos días"
  • Cambios de magnitud en visitas / día durante "los últimos días"

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:

  • Los resultados de su solución SO para capturar la variación de la pendiente (aunque incorporaría 3 o 4 días de datos)
  • Magnitud del valor de visitas / día más recientes de cada sitio (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)cada Wen Wn) 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.

ashaw
fuente
1

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.

Jan Galkowski
fuente