Веб-статистика: расчет / оценка уникальных посетителей за произвольные промежутки времени - PullRequest
2 голосов
/ 05 сентября 2010

Я пишу приложение, которое записывает некоторую «базовую» статистику - просмотры страниц и уникальных посетителей. Мне не нравится идея сохранения каждого отдельного представления, поэтому я подумал о сохранении итогов с разрешением в час / день. Например, вот так:

Tuesday    500 views   200 unique visitors
Wednesday  400 views   210 unique visitors
Thursday   800 views   420 unique visitors

Теперь я хочу иметь возможность запрашивать этот набор данных за выбранные периоды времени, т. Е. В течение недели. Подсчет просмотров достаточно прост: просто сложение. Однако добавление уникальных посетителей не даст правильного ответа, поскольку посетитель мог посещать несколько дней.

Поэтому мой вопрос заключается в том, как определить или оценить уникальных посетителей за любой период времени без сохранения каждого отдельного хита . Это вообще возможно? Google Analytics сообщает об этих значениях - они точно не хранят каждое попадание и не запрашивают набор данных за каждый период времени!?

Не могу найти в сети никакой полезной информации об этом. Мой первоначальный инстинкт был в том, что мне нужно было бы хранить 2 набора значений с разным разрешением (то есть день и полдня) и каким-то образом интерполировать их для всех возможных диапазонов времени. Я играл с математикой, но не могу заставить что-либо работать. Как вы думаете, я могу что-то или не на том пути?

Спасибо, Брендон.

Ответы [ 4 ]

1 голос
/ 06 октября 2010

Если у вас все в порядке с аппроксимациями, я думаю, что tom10 подходит для чего-то, но его понятие случайной подвыборки не является правильным или нуждается в уточнении. Если у меня есть посетитель, который приходит в день 1 и день 2, но отбирает выборку только в день 2, это приведет к систематической ошибке в оценке. Я хотел бы сохранить полную информацию для случайной выборки пользователей (скажем, всех пользователей, чей хэш (id)% 100 == 1). Затем вы делаете полные расчеты для выборочных данных и умножаетесь на 100. Да, tom10 сказал только об этом, но есть два различия: он сказал «например» выборка на основе идентификатора, и я говорю, что это единственный способ, который вы должны сделать, потому что Вы заинтересованы в уникальных посетителях. Если вас интересуют уникальные IP-адреса, уникальные почтовые индексы или что-то еще, что вы могли бы попробовать. Качество оценки можно оценить, используя нормальное приближение к биномиальному значению, если ваша выборка достаточно велика. Помимо этого, вы можете попробовать использовать модель лояльности пользователей, например, вы заметили, что более 2 дней 10% посетителей посещают оба дня, более трех дней 11% посетителей посещают дважды, а 5% посещают один раз и так далее до максимальное количество дней. Эти цифры, к сожалению, могут зависеть от времени недели, сезона и даже от их моделирования, со временем изменяется лояльность по мере взросления пользовательской базы, изменений в составе, а также в изменении сервиса, поэтому любая модель нуждается в переоценке. Я предполагаю, что в 99% практических ситуаций вам лучше использовать технику выборки.

1 голос
/ 07 сентября 2010

Вы можете сохранить случайную подвыборку данных, например, 10% идентификаторов посетителей, а затем сравнить их по дням.

Самый простой способ сделать это - сохранить случайную подвыборку каждого дня для будущих сравнений, но затем, на текущий день, временно сохранить все ваши идентификаторы, сравнить их с подвыборными историческими данными и определить долю повторов. (То есть, вы сравниваете данные подвыборки с полным набором данных за данный день, а не сравниваете две подвыборки - можно сравнить две подвыборки и получить оценку для общей суммы, но математика будет немного сложнее) 1005 *

0 голосов
/ 07 сентября 2010

Вы можете рассчитать коэффициент уникальности (UF) для каждого дня и использовать его для расчета составного (неделя за примером) UF.

Допустим, вы насчитали:

  • 100 посещений и 75 уникальных идентификаторов сеансов в понедельник (необходимо хранить идентификаторы сеансов как минимум в течение дня или периода, который вы используете в качестве единицы).
  • 200 посещений и 100 уникальных идентификаторов сеансов во вторник.

Если вы хотите оценить UF за период Mon + Tue, вы можете сделать:

UV = UVmonday + UVtuesday = TVmonday*UFmonday + TVtuesday*UFtuesday

существо:

UV = Unique Visitors
TV = Total Visits
UF = Uniqueness Factor

Итак ...

UV = (Sum(TVi*UFi))
UF = UV / TV
TV = Sum(TVi)

Надеюсь, это поможет ...

Эта математика считает два посещения одного человека двумя уникальными посетителями. Я думаю, что все в порядке, если единственный способ идентифицировать кого-либо - использовать идентификатор сеанса.

0 голосов
/ 07 сентября 2010

Вам не нужно хранить каждое отдельное представление, просто каждый уникальный идентификатор сеанса в час или день в зависимости от разрешения, которое вам нужно в вашей статистике.

Вы можете сохранить эти файлы журналов, содержащие идентификаторы сеансов, отсортированными для быстрого подсчета уникальных посетителей, объединяя несколько часов / дней. Один файл в час / день, один уникальный идентификатор сеанса на строку.

В * nix, простой однострочный лайнер, как этот, сделает работу:

$ sort -m sorted_sid_logs/2010-09-0[123]-??.log | uniq | wc -l

Подсчитывает количество уникальных посетителей за первые три дня сентября.

...