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?
Respostas:
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 .
fonte
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:
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:
(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 cadaW
emWn
) 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.
fonte
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.
fonte