Le contexte:
J'ai un groupe de sites Web où j'enregistre quotidiennement le nombre de visites:
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
Question générale:
- Comment déterminer quels sites sont les plus actifs?
J'entends par là recevoir plus de visites ou avoir une augmentation soudaine des visites au cours des derniers jours. À des fins d'illustration, dans le petit exemple ci-dessus, W0 serait initialement populaire mais commence à montrer un abandon, W1 affiche une popularité constante (avec un pic isolé), et W3 une augmentation importante après un démarrage silencieux).
Pensées initiales:
J'ai trouvé ce fil sur SO où une formule simple est décrite:
// 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
Cela semble assez bon et facile, mais j'ai un problème avec ça.
Le calcul est basé sur les pentes. C'est très bien et c'est l'une des fonctionnalités qui m'intéresse, mais à mon humble avis, il a des problèmes pour les séries non monotones. Imaginez que pendant quelques jours nous ayons un nombre constant de visites (donc la pente = 0), alors la tendance ci-dessus serait nulle.
Des questions:
- Comment gérer les deux cas (augmentation / diminution monotone) et un grand nombre de hits?
- Dois-je utiliser des formules distinctes?
Réponses:
Il semble que vous recherchiez une «méthode de détection de point de changement en ligne». (C'est une expression utile pour Google.) Certains articles récents (et accessibles) utiles sont Adams et MacKay (une approche bayésienne) et Keogh et al. Vous pourrez peut-être appuyer sur le package de surveillance pour R en service. Un grand nombre d'occurrences isolées peuvent être trouvées en utilisant des méthodes de contrôle des processus statistiques .
la source
Il existe certainement des moyens de plus en moins complexes de résoudre ce type de problème. Au départ, vous avez commencé avec une solution assez simple (la formule que vous avez trouvée sur SO). Avec ce genre de simplicité à l'esprit, j'ai pensé que je reviendrais sur quelques points clés que vous faites dans (la version actuelle de) votre message.
Jusqu'à présent, vous avez dit vouloir que votre mesure de "l'activité du site" capture:
Comme le souligne @ jan-galkowski, vous semblez également (au moins tacitement) intéressé par le classement des sites les uns par rapport aux autres selon ces dimensions.
Si cette description est exacte, je proposerais d'explorer la solution la plus simple possible qui incorpore ces trois mesures (changement, amplitude, rang) en tant que composants séparés. Par exemple, vous pouvez saisir:
(y2)
divisée par la moyenne des visites / jour pour ce site (Y
):y2 / mean(Y)
Pour W0, W1 et W2 respectivement, cela donne 0,16, 1,45 et 2,35. (Par souci d'interprétation, considérons qu'un site dont la valeur de visites par jour la plus récente était égale à sa moyenne de visites par jour générerait un résultat de 1). Notez que vous pouvez également ajuster cette mesure pour capturer les 2 derniers jours (ou plus):
y2 + y1 / 2 * mean(Y)
Cela donne: 0,12, 1,33, 1,91 pour vos trois sites d'échantillonnage.
Si vous utilisez en fait la moyenne de la distribution de visites / jour de chaque site pour ce type de mesure, je regarderais également l'écart-type de la distribution pour avoir une idée de sa volatilité relative. L'écart type pour la distribution de visites / jour de chaque site est: 12,69, 12,12 et 17,62. La réflexion sur la
y2/mean(Y)
mesure par rapport à l'écart type est utile car elle permet de garder en perspective l'ampleur récente de l'activité sur le site W2 (écart type plus important = globalement moins stable / cohérent).Enfin, si vous êtes intéressé par les rangs, vous pouvez également étendre ces approches dans cette direction. Par exemple, je pense qu'il serait utile de connaître le classement d'un site en termes de visites par jour les plus récentes ainsi que le classement des visites moyennes par site de chaque site (le classement de
mean (Y)
pour chaqueW
entréeWn
). Encore une fois, vous pouvez adapter à vos besoins.Vous pouvez présenter les résultats de tous ces calculs sous forme de tableau, ou créer une visualisation régulièrement mise à jour pour les suivre quotidiennement.
la source
Attention, les taux d'arrivée des utilisateurs sur les sites Web sont des séries désagréables, ont tendance à être trop dispersés (du point de vue de Poisson), alors considérez les distributions binominales négatives pour examiner les arrivées et leur ajustement. En outre, vous souhaiterez peut-être examiner les statistiques de commande des sites chaque jour plutôt que leur nombre.
la source