R:Google Analytics/Примеры
|
Материал «R:Google Analytics/Примеры», созданный авторами Филипп Управителев и Артём Клевцов, публикуется на условиях лицензии Creative Commons «Attribution» («Атрибуция») 4.0 Всемирная. | |
|
Перед использованием функций из пакетов их необходимо предварительно установить и загрузить: КодR <syntaxhighlight lang="r">> install.packages(pkgs = "pkgname") > library(package = "pkgname")</syntaxhighlight> |
В этой статье приведены конкретные примеры запросов к API Google Analytics, а также способы анализа и визуализации полученных данных. Все данные взяты из профиля сайта http://psylab.info.
Содержание
Предварительная настройка
Прежде чем приступить к анализу и визуализации данных, нам необходимо, загрузить все необходимые пакеты R, определить ряд переменных, подключиться к API Google Analytics и т.д.
Установка английской локали для даты и времени:
<syntaxhighlight lang="r">> Sys.setlocale("LC_TIME", "en_US")</syntaxhighlight>
Загрузка необходимых пакетов для работы:
<syntaxhighlight lang="r">> library(reshape2) > library(scales) > library(ggplot2) > library(rga)</syntaxhighlight>
Подключение к API GA:
<syntaxhighlight lang="r">> rga.open(instance = "ga", where = "ga.rga")</syntaxhighlight>
Определяем id сайта в профиле GA для получения данных:
<syntaxhighlight lang="r">> siteURL <- "http://psylab.info" > profiles <- ga$getProfiles() > id <- profiles[profiles$websiteUrl == siteURL, "id"]</syntaxhighlight>
Определяем часовой пояс согласно настройкам ресурса в GA для корректного преобразования времени в R:
<syntaxhighlight lang="r">timezone <- as.character(profiles[profiles$id == id, "timezone"])</syntaxhighlight>
Анализ посещаемости сайта
Для анализа посещаемости сайта возьмём следующие показатели: количество пользователей, количество посещений (сеансов) и количество просмотров страниц. Диапазон дат, как можно видеть из приведённого ниже кода, составляет 30 дней.
Получение данных:
<syntaxhighlight lang="r">> ga.data <- ga$getData(id, start.date = Sys.Date(), end.date = Sys.Date() - 30, + metrics = "ga:pageviews,ga:sessions,ga:users", + dimensions = "ga:date")</syntaxhighlight>
Переменные id
, start.date
, end.date
мы уже определили ранее.
Приведём часть полученной таблицы данных для лучшего понимания дальнейших действий:
<syntaxhighlight lang="r">> head(ga.data) date pageviews sessions users 1 2014-03-24 11919 5043 3989 2 2014-03-25 12744 5364 4254 3 2014-03-26 12986 5366 4211 4 2014-03-27 12833 5288 4164 5 2014-03-28 10201 4483 3586 6 2014-03-29 7602 3381 2647</syntaxhighlight>
Выведем описательных статистик по всем показателям:
<syntaxhighlight lang="r">> t(sapply(ga.data[, -1], summary)) Min. 1st Qu. Median Mean 3rd Qu. Max. pageviews 6590 10700 12700 12400 14500 16000 sessions 3090 4490 5320 5170 6040 6520 users 2270 3460 4160 4040 4740 5020</syntaxhighlight>
Суммарные показатели за 30 дней :
<syntaxhighlight lang="r">> t(sapply(ga.data[, -1], sum)) pageviews sessions users [1,] 385863 161206 125926</syntaxhighlight>
Подсчёт количества (уникальных) посетителей в GA ведётся разными способами, вследствие чего данные показатели могут отличаться при разных запросах. Более корректные цифры можно получить, сделав непосредственный запрос к GA[1]:
<syntaxhighlight lang="r">> ga$getData(id, start.date = Sys.Date() - 30, end.date = Sys.Date(), + metrics = "ga:pageviews,ga:sessions,ga:users", dimensions = "") pageviews sessions users 1 385863 161206 89626</syntaxhighlight>
Как видим, значения метрики ga:users
существенно отличается от рассчитанного на основании ранее полученных данных данных по датам.
Визуализировать таблицу данных можно следующим образом:
<syntaxhighlight lang="r">> ga.long <- melt(ga.data, id.vars = "date", value.name = "value", variable.name = "metric") > qplot(data = ga.long, x = date, y = value, color = metric, shape = metric, geom = c("line", "point")) + + theme_bw() + scale_x_date(labels = date_format("%d %b"), breaks = date_breaks("week"))</syntaxhighlight>
Преобразование исходной таблицы в «длинный» формат с помощью функции melt()
необходимо для более удобной работы с несколькими переменными при построении графика.
Полученный график приведён ниже:
Анализ посещаемости по дням недели
Проанализируем динамику посещаемости сайта в течении недели. Для этого возьмём сведения о количестве посещений с момента начала сбора статистики до текущего дня. Код для запроса этих данных выглядит следующим образом:
<syntaxhighlight lang="r">> ga.data <- ga$getData(id, start.date = ga$getFirstDate(id), end.date = Sys.Date(), + metrics = "ga:sessions", dimensions = "ga:dayOfWeekName")</syntaxhighlight>
Для корректной сортировки дней недели в графике, т.е. чтобы соблюдался порядок дней недели,
<syntaxhighlight lang="r">> ga.data$dayOfWeekName <- factor(ga.data$dayOfWeekName, ordered = TRUE, + levels = c("Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"))</syntaxhighlight>
Полученная таблица данных с сортировкой по дням недели[2]:
<syntaxhighlight lang="r">> ga.data[order(ga.data$dayOfWeekName), ] dayOfWeekName sessions 2 Monday 28409 6 Tuesday 30165 7 Wednesday 29784 5 Thursday 22936 1 Friday 19199 3 Saturday 13791 4 Sunday 16922</syntaxhighlight>
Визуализировать данную таблицу можно следующим образом:
<syntaxhighlight lang="r">> qplot(data = ga.data, x = dayOfWeekName, y = sessions, geom = "bar", stat = "summary", fun.y = "mean", + xlab = "days of week") + theme_bw()</syntaxhighlight>
Полученный результат:
На графике отчётливо видно, что пик посещаемости сайта приходится на начало недели, а своего минимума достигает в субботу. Проверить предположение о неслучайном характере распределение активности посетителей в зависимости от дня недели можно с помощью статистического критерия [math]\chi^2[/math] Пирсона.
Анализ суточной активности посетителей по дням недели
<syntaxhighlight lang="r">> ga.data <- ga$getData(id, start.date = ga$getFirstDate(id), end.date = Sys.Date(), + metrics = "ga:pageviews", dimensions = "ga:dayOfWeekName,ga:hour")</syntaxhighlight>
<syntaxhighlight lang="r">ga.data$dayOfWeekName <- factor(ga.data$dayOfWeekName, ordered = TRUE, levels = c("Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"))</syntaxhighlight>
<syntaxhighlight lang="r">> qplot(data = ga.data, x = dayOfWeekName, y = hour, fill = pageviews, xlab = "days of week") + + geom_tile(colour = "white") + scale_fill_gradient(low = "steelblue", high="red",space="Lab") + theme_bw()</syntaxhighlight>
Примечания
- ↑ Как рассчитывается количество уникальных посетителей/активных пользователей.
- ↑ Полученная непосредственно из GA таблица отсортирована по алфавиту.