Расчет дисперсии и среднеквадратического отклонения для посетителей вебсайта

Для чего это нужно? Возможно, что вы хотите сравнить данные двух разных страниц сайта или сравнить показатели сайта за различный период. В общем, я не очень люблю объяснять зачем это нужно, если вы эту статью читаете, то, наверное, знаете для чего.

Где взять данные? Можно найти датасет на Каггл, но у Яндекса же есть замечательное live-demo, которое показывает посещаемость страницы metrica.yandex.com/promo/product. Или просто скачаем данные по прямой ссылке (нужно иметь аккаунт в Яндексе).

Для удобства запишу в виде таблицы:
Для удобства запишу в виде таблицы:
Период Прямые заходы Переходы из поисковых систем Переходы по ссылкам на сайтах Внутренние переходы Переходы из социальных сетей 2024-08-05 169 136 100 11 1 2024-08-06 186 115 79 7 2 2024-08-07 153 135 108 6 1 2024-08-08 181 121 88 7 3 2024-08-09 148 103 87 3 0 2024-08-10 119 74 62 4 0 2024-08-11 132 69 80 7 0

Теперь можете просто скопировать и вставить себе.

Как всем известно, дисперсия из выборки считается по формуле:

=ДИСП(диапазон) или =ДИСП.В(диапазон)

На практике из выборки считают чаще. Но, если вы счастливые обладатели данных генеральной совокупности, можете использовать формулу:

=ДИСП.Г(диапазон)

Результат будет немного отличатся, если перепутаете.

И мы получим значение в визитах пользователей в квадрате, или просто квадратных визитах, что не очень-то удобно. Поэтому, извлечем квадратный корень и получим среднеквадратическое отклонение. Для этого воспользуемся формулой:

=СТАНДОТКЛОН(диапазон) или =СТАНДОТКЛОН.В(диапазон) =СТАНДОТКЛОН.Г(диапазон) // для генеральной совокупности (если перепутаете)

Или воспользуемся формулой:

=КОРЕНЬ(ячейка)

Теперь квадратов не стало, но толку от этих показателей около нуля, т.к. чем больше абсолютное значение данных, тем больше будут коэффициенты разброса данных (волатильности). Чтобы данные уровнять между собой, можно, нормировать или логарифмировать. Но можно просто посчитать коэффициент вариации (CV = The Coefficient of Variation), который учитывает среднее значение выборки.

Для этого, как обычно, воспользуемся формулой:

=СТАНДОТКЛОН.В(диапазон)/СРЗНАЧ(диапазон)

Понимаю, что очень сложно. Но осталось только протянуть формулы до конца таблицы. Результат:

=КОРЕНЬ в таблице просто для проверки, что это действительно квадратный корень из =ДИСП (который для выборки). Аналогично и дисперсия для генеральной совокупности, чтобы наглядно увидеть разницу.
=КОРЕНЬ в таблице просто для проверки, что это действительно квадратный корень из =ДИСП (который для выборки). Аналогично и дисперсия для генеральной совокупности, чтобы наглядно увидеть разницу.

Разброс в переходах из поисковых систем больше, чем разброс в прямых захода. А самый большой разброс в переходах из социальных сетей, что может быть не очевидно, "на глаз".

Теперь посчитаем все на Питоне. Но зачем? Просто мне нравится считать и использовать формулы, без объяснения, зачем это нужно.

import pandas as pd # Данные data = { 'Дата': ['2024-08-05', '2024-08-06', '2024-08-07', '2024-08-08', '2024-08-09', '2024-08-10', '2024-08-11'], 'Прямые заходы': [169, 186, 153, 181, 148, 119, 132], 'Переходы из поисковых систем': [136, 115, 135, 121, 103, 74, 69], 'Переходы по ссылкам на сайтах': [100, 79, 108, 88, 87, 62, 80], 'Внутренние переходы': [11, 7, 6, 7, 3, 4, 7], 'Переходы из социальных сетей': [1, 2, 1, 3, 0, 0, 0] } # Создаем DataFrame df = pd.DataFrame(data) # Получаем список всех колонок, кроме первой ('Дата') columns = df.columns[1:] # Вычисление дисперсии variance = df[columns].var() # Вычисление СКО std_dev = df[columns].std() # Вычисление коэффициента вариации coef_var = std_dev / df[columns].mean() # Записываем результаты в DataFrame df.loc['ДИСП'] = variance df.loc['СТАНДОТКЛОН'] = std_dev df.loc['CV'] = coef_var # Результат display(df)

Самое потное место этого кода df.columns[1:] - сделать срез без первой колонки, чтобы не расчитывать коэффициенты для Дат, которые невозможно вычислить. Ну и сначала записать результат в переменную, а уже потом объединить с ДатаФреймом для наглядности.

Результат:

Мелковато, конечно. Но, как видим, Эксцель считает точнее.
Мелковато, конечно. Но, как видим, Эксцель считает точнее.

Выводы:

1. Думаю, что пишу эту статью я для себя, т.к. искал в интернете статью, реферат, научную работу или любой документ, где есть пример расчета дисперсии для посетителей сайта и не нашел. Т.е. есть статьи с формулами, но с практическим применением я не нашел.

2. Питон маркетологу не нужен, потому что, выполнить все эти расчеты тремя строками кода, ну это не дело. Намного проще и понятнее протягивать формулы по ячейкам, особенно когда в таблице тысячи колонок. В Пандас генеральная совокупность расчитывается иначе, чем в Эксцеле, поэтому ошибиться там намного сложнее.

Еще раз покажу страшные формулы ниже, куда сложнее, чем в Эксцель:

df[columns].var() # Вычисление дисперсии df[columns].std() # Вычисление СКО df[columns].var() / df[columns].mean() # Вычисление CV

3. Сами по себе формулы меня вообще мало интересуют. Их легко найти в поиске. Меня интересует практическое применение формул. А ситуация с практическим применением очень и очень печальная, т.к. маркетологов использование научных инструментов в работе не особо интересует (кроме корреляции об этом мой ролик на Ютубе), а серьезных ученых особо не интересует описывать статистические метрики сайтов.

4. Надеюсь, что если вы искали в поиске по запросу "Расчет дисперсии или среднеквадратического отклонения для сайта", то вы нашли мои расчеты.

Сниппет очень смешной, т.к. прямо 1 в 1 как в учебнике по SEO 10 летней давности. Видимо с тех пор алгоритм формирования сниппета так и не поменялся.
Сниппет очень смешной, т.к. прямо 1 в 1 как в учебнике по SEO 10 летней давности. Видимо с тех пор алгоритм формирования сниппета так и не поменялся.

И возможно, вы даже заинтересуетесь Pandas, как аналогу Эксцель, потому, что это значительно производительнее и полностью бесплатно. Установить тоже не сложно, даже на Мак.

55
3 комментария

Это вообще апофеоз российского образования. Школьники изучают математику 11 лет, затем высшая математика и статистка в ВУЗе, но никто из выпускников не знает зачем все это засунули ему в голову.

1
Ответить

ну почему же, очень помогает при написании всякого рода научных работ и публикаций, в свое время много писал. Правда вышку в вузе сдавал раза 4)))

1
Ответить

Вы не поверите, но я окончил статистический ВУЗ и у нас все, даже менеджеры по подбору персонала изучали статистику.

Так что вопрос этот близок мне по "личным причинам".

Ответить