Determinando se um site está ativo usando visitas diárias

15

Contexto:

Eu tenho um grupo de sites onde eu registro o número de visitas diariamente:

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 

Pergunta Geral:

  • Como determino quais sites são os mais ativos?

Com isso, quero dizer receber mais visitas ou ter um aumento repentino de visitas durante os últimos dias. Para fins de ilustração, no pequeno exemplo acima, W0 seria inicialmente popular, mas está começando a mostrar abandono, W1 está mostrando uma popularidade constante (com algum pico isolado) e W3, um aumento importante após um início silencioso).

Pensamentos iniciais:

Encontrei este tópico no SO, onde uma fórmula simples é descrita:

// 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

Parece bom e fácil o suficiente, mas estou tendo um problema com isso.

O cálculo é baseado em inclinações. Isso é bom e é um dos recursos que me interessam, mas IMHO tem problemas para séries não monotônicas. Imagine que durante alguns dias tenhamos um número constante de visitas (portanto, a inclinação = 0), a tendência acima seria zero.

Questões:

  • Como lidar com os dois casos (aumento / diminuição monotônicos) e o grande número de ocorrências?
  • Devo usar fórmulas separadas?
Dan
fonte
1
Estou surpreso que você ainda não tenha recebido respostas (embora seja uma pergunta obviamente popular). Como cada uma das quatro balas vale uma pergunta por si só, que tal limitar essa pergunta a uma delas e postar as outras em perguntas separadas. São perguntas realmente excelentes que adotam abordagens distintas, e as quatro valem a pena sozinhas.
Andy W
Olá Andy, muito obrigado pela sua resposta. Vou tentar reformulá-lo e focar em um único problema de cada vez. Meu pensamento inicial era torná-lo o mais amplo possível (e evitar repetir a mesma pergunta posteriormente), mas, dada a falta de respostas, parece que é geral demais para alguém responder.
Dan
Editei a pergunta para expor os dois principais problemas nos quais estou mais interessado. Optei por colocá-los na mesma pergunta, devido ao seu estreito relacionamento.
Dan
1
Ainda não entendi por que ter uma estimativa com um pequeno erro torna uma abordagem "inutilizável".
onestop 27/10/10
Obrigado pelo comentário. Não estou dizendo que a abordagem (cálculo de tendências) foi inutilizável, mas seu cálculo de erros pode ter um problema em potencial. Como não tenho resposta até agora, removerei esse item da pergunta, na esperança de que seja mais fácil responder.
Dan

Respostas:

4

Parece que você está procurando um "método de detecção de ponto de mudança on-line". (Essa é uma frase útil para pesquisar no Google.) Alguns artigos recentes úteis (e acessíveis) são Adams & MacKay (uma abordagem bayesiana) e Keogh et al. Você poderá pressionar o pacote de vigilância para o R em serviço. Um grande número isolado de ocorrências pode ser encontrado usando métodos estatísticos de controle de processos .

whuber
fonte
2

Definitivamente, existem maneiras mais e menos complexas de lidar com esse tipo de problema. Pelo som das coisas, você começou com uma solução bastante simples (a fórmula que encontrou no SO). Com esse tipo de simplicidade em mente, pensei em revisitar alguns pontos-chave que você menciona (a versão atual) de sua postagem.

Até agora, você disse que deseja que sua avaliação da "atividade do site" capture:

  • Alterações de inclinação nas visitas / dia nos "últimos dias"
  • A magnitude muda nas visitas / dia nos "últimos dias"

Como @ jan-galkowski aponta, você também parece (pelo menos tacitamente) interessado na classificação dos sites em relação um ao outro ao longo dessas dimensões.

Se essa descrição for precisa, eu proporia explorar a solução mais simples possível que incorpore essas três medidas (mudança, magnitude, classificação) como componentes separados. Por exemplo, você pode pegar:

  • Os resultados da sua solução SO para capturar variação de inclinação (embora eu incorporasse 3 ou 4 dias de dados)
  • Magnitude do valor das visitas / dia mais recentes de cada site (y2)dividido pela média de visitas / dia para esse site ( Y):

y2 / mean(Y)

Para W0, W1 e W2, respectivamente, isso gera 0,16, 1,45 e 2,35. (Para fins de interpretação, considere que um site cujo valor de visitas por dia mais recente seja igual ao número médio de visitas por dia geraria um resultado de 1). Observe que você também pode ajustar esta medida para capturar os 2 (ou mais) dias mais recentes:

y2 + y1 / 2 * mean(Y)

Isso gera: 0,12, 1,33, 1,91 para os três locais de amostra.

De fato, se você usar a média da distribuição de visitas / dias de cada site para esse tipo de medida, também analisarei o desvio padrão da distribuição para ter uma noção de sua relativa volatilidade. O desvio padrão para a distribuição de visitas / dias de cada site é: 12,69, 12,12 e 17,62. Pensar na y2/mean(Y)medida em relação ao desvio padrão é útil, pois permite manter a magnitude recente da atividade no local W2 em perspectiva (desvio padrão maior = geral menos estável / consistente).

Finalmente, se você estiver interessado em classificações, também poderá estender essas abordagens nessa direção. Por exemplo, eu acho que sabendo Rank de um local em termos dos mais recentes visitas por valores dia, bem como o posto de visitas médios de cada site por dia (o posto de mean (Y)para cada Wem Wn) poderia ser útil. Mais uma vez, você pode adaptar às suas necessidades.

Você pode apresentar os resultados de todos esses cálculos como uma tabela ou criar uma visualização atualizada regularmente para rastreá-los diariamente.

ashaw
fonte
1

Cuidado para que as taxas de chegada de usuários em sites da Web sejam séries desagradáveis, tendem a ser superdispersas (do ponto de vista de Poisson), portanto, considere distribuições binominais negativas para observar as chegadas e seus ajustes. Além disso, convém examinar as estatísticas de pedidos dos sites a cada dia, e não os números.

Jan Galkowski
fonte