Изменения

R:Google Analytics/Примеры

24 486 байтов добавлено, 17:10, 17 мая 2014
м
Анализ суточной активности посетителей по дням недели
Определяем id сайта в профиле GA для получения данных:
{{r-code|code=<nowiki>> profiles <- ga$getProfiles() # таблица профилей> siteURL <- "http://psylab.info"# URL сайта> profiles view <- ga$getProfiles()"All data" # название представления> id <- profiles[profiles$websiteUrl == siteURL& profiles$name == view, "id"]</nowiki>}} === Диапазон дат ===
Определяем часовой пояс согласно настройкам ресурса в GA для корректного преобразования времени в R:
{{r-code|code=<nowiki>>timezone <- as.character(profiles[profiles$id == id, "timezone"])</nowiki>}}
Определим диапазон дат для получения данных (в данном примере - это месяц)Автоматическое определение первого и последнего числа предыдущего месяца:
{{r-code|code=<nowiki>> start.date <- end.date <- as.POSIXlt(Sys.Date() # текущая дата, tz = timezone)> start.date $mday <- end.date $mday <- 30 # 1> start.date$mon <- start.date$mon - 1> end.date$mday <- end.date$mday - 1</nowiki>}} Преобразование даты в класс <code>POSIXlt</code> (именованный список) даёт возможность считывать и изменять отдельные части даты и времени<ref>Подробнее <code>help(DateTimeClasses)</code>.</ref>. В примере выше мы изменяем текущее число месяца на первое, затем к конечной дате прибавляем один месяц и отнимаем один день. Таким образом, мы получаем последний день текущего месяца. Чтобы получить диапазон дат за последние 30 , 90 или 180 дней, достаточно отнять нужное количество дней от текущей даты. Например: {{r-code|code=<nowiki>> end.date <- Sys.Date() - 1> start.date <- end.date - 30</nowiki>}}
== Анализ посещаемости сайта ==
Для анализа посещаемости сайта возьмём следующие показатели: количество пользователей, количество посещений (сеансов) и количество просмотров страниц. Диапазон дат, как можно видеть из приведённого ниже кода, составляет 30 дней.
Получение данных:
{{r-code|code=<nowiki>> ga.data <- ga$getData(id, start.date= Sys.Date() - 31, end.date= Sys.Date() - 1,+ metrics = "ga:pageviews,ga:sessions,ga:users", + dimensions = "ga:date")</nowiki>}}
Переменные <code>id</code>, <code>start.date</code>, <code>end.date</code> мы уже определили ранее.
6 2014-03-29 7602 3381 2647</nowiki>}}
Выведем описательных статистик по всем показаталеямпоказателям:
{{r-code|code=<nowiki>> t(sapply(ga.data[, -1], summary))
sessions 3090 4490 5320 5170 6040 6520
users 2270 3460 4160 4040 4740 5020</nowiki>}}
 
Суммарные показатели за 30 дней :
 
{{r-code|code=<nowiki>> t(sapply(ga.data[, -1], sum))
pageviews sessions users
[1,] 385863 161206 125926</nowiki>}}
 
Подсчёт количества (уникальных) посетителей в GA ведётся разными способами, вследствие чего данные показатели могут отличаться при разных запросах. Более корректные цифры можно получить, сделав непосредственный запрос к GA<ref>[https://support.google.com/analytics/answer/2992042?hl=ru Как рассчитывается количество уникальных посетителей/активных пользователей].</ref>:
 
{{r-code|code=<nowiki>> 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</nowiki>}}
 
Как видим, значения метрики <code>ga:users</code> существенно отличается от рассчитанного на основании ранее полученных данных данных по датам.
Визуализировать таблицу данных можно следующим образом:
Полученный график приведён ниже:
[[Файл:Ga-date-users.svg|400px600px|центр]] == Анализ посещаемости по дням недели == Проанализируем динамику посещаемости сайта в течении недели. Для этого возьмём сведения о количестве посещений с момента начала сбора статистики до последнего воскресенья<ref>Сбор статистики необходимо закончить последним днём недели, чтобы избежать искажений показателей.</ref>. Получить дату ппредыдущего воскресенья можно следующим образом: {{r-code|code=<nowiki>> cur.wday <- as.POSIXlt(Sys.Date())$wday> sunday.date <- if (cur.wday != 7) Sys.Date() - cur.wday</nowiki>}} Проверяем полученную дату: {{r-code|code=<nowiki>> sunday.date[1] "2014-04-20"> weekdays(sunday.date)[1] "Sunday"</nowiki>}} Код для запроса этих данных выглядит следующим образом: {{r-code|code=<nowiki>> ga.data <- ga$getData(id, start.date = ga$getFirstDate(id), end.date = sunday.date,+ metrics = "ga:sessions", dimensions = "ga:dayOfWeekName")</nowiki>}} Для корректной сортировки дней недели в графике, т.е. чтобы соблюдался порядок дней недели,  {{r-code|code=<nowiki>> ga.data$dayOfWeekName <- factor(ga.data$dayOfWeekName, ordered = TRUE,+ levels = c("Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"))</nowiki>}} Полученная таблица данных с сортировкой по дням недели<ref>Полученная непосредственно из GA таблица отсортирована по алфавиту.</ref>: {{r-code|code=<nowiki>> ga.data[order(ga.data$dayOfWeekName), ] dayOfWeekName sessions2 Monday 230906 Tuesday 241577 Wednesday 276095 Thursday 279641 Friday 235873 Saturday 169244 Sunday 20598</nowiki>}} Визуализировать данную таблицу можно следующим образом: {{r-code|code=<nowiki>> qplot(data = ga.data, x = dayOfWeekName, y = sessions, geom = "bar",+ stat = "identity", xlab = "days of week") ++ theme_bw() + theme(axis.ticks.x = element_blank())</nowiki>}} Полученный результат: [[Файл:Ga-wdays-sessions.svg|600px|центр]] На графике отчётливо видно, что пик посещаемости сайта приходится на первую половину недели, а своего минимума достигает в субботу. Проверить предположение о неслучайном характере распределение активности посетителей в зависимости от дня недели можно с помощью статистического критерия <math>\chi^2</math> Пирсона. == Анализ суточной активности посетителей по дням недели == Для анализа активности посетителей сайта в качестве показателя активности мы выбрали количество просмотров страниц (показатель <code>ga:pageviews</code>) по часам (<code>ga:hour</code>) и дням недели (<code>ga:dayOfWeekName</code>)<ref>Взяты названия дней недели, т. к. в GA началом недели считается воскресенье и, соответственно, нумерация осуществляется с воскресенья.</ref>. Получаем необходимые данные: {{r-code|code=<nowiki>> ga.data <- ga$getData(id, start.date = ga$getFirstDate(id), end.date = Sys.Date() - 1,+ metrics = "ga:pageviews", dimensions = "ga:dayOfWeekName,ga:hour")</nowiki>}} Конвертируем названия дней недели в ранжированный фактор для соблюдения порядка дней недели при построении графиков. {{r-code|code=<nowiki>> ga.data$dayOfWeekName <- factor(ga.data$dayOfWeekName, ordered = TRUE,+ levels = c("Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"))</nowiki>}} Приведём первые несколько строк таблицы для наглядной демонстрации структуры полученных данных: {{r-code|code=<nowiki>> head(ga.data[order(ga.data$dayOfWeekName), ]) dayOfWeekName hour pageviews25 Monday 00 414826 Monday 01 357627 Monday 02 307228 Monday 03 232029 Monday 04 140930 Monday 05 908</nowiki>}} В качестве визуализации воспользуемся плиточным графиком, который окрашивает зоны на пересечении часов и дней недели в зависимости от значения переменной <code>pageviews</code>. Пример кода для построения графика: {{r-code|code=<nowiki>> 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() + theme(axis.ticks = element_blank())</nowiki>}} [[Файл:Ga-wday-hour-pageviews.svg|600px|центр]] На графике отчётливо видны зоны наибольшей и наименьшей активности посетителей сайта в зависимости от дней недели. В целом по графику можнос делать вывод, что структура суточной активности не меняется в течении недели. Обратим внимание, что при анализе активности посетителей по времени важно учитывать часовой пояс, заданный в настройках представления GA. Получить текущий часовой пояс можно узнать, получив информацию о профилях GA, с помощью команды <code>ga$getProfiles()</code>. Ранее мы уже извлекли информацию о профилях в переменную <code>profiles</code>, поэтому узнать текущий часовой пояс для нашего сайта мы можем следующим образом: {{r-code|code=<nowiki>> as.character(profiles[profiles$id == id, "timezone"])[1] "Europe/Moscow"</nowiki>}} Стоит также отметить, что в качестве показателей активности посетителей можно такж использовать количество сеансов пользователей, среднее количество просмотром на одного посетителя и т. д. == Анализ источников трафика == Проанализируем соотношение основных источников трафика сайта: прямой (direct), переходы с других сайтов (referral) и поисковый (organic). Для получения нужных данных нам понадобится показатель количество посещений (<code>ga:sessions</code>) и и измерение источники трафика <code>ga:medium</code><ref>Измерение <code>ga:source</code> даёт более подробную информацию об источниках трафика, в том числе и об источниках переходов, т.е. веб-сайтах, с которых приходят посетители. В данном случае нашей целью является проанализировать только соотношение источников трафика.</ref>. Получаем отсротированные по убыванию данные по показателю <code>ga:sessions</code>: {{r-code|code=<nowiki>> ga.data <- ga$getData(id, start.date = ga$getFirstDate(id), end.date = Sys.Date() - 1,+ metrics = "ga:sessions", dimensions = "ga:medium", sort = "-ga:sessions")</nowiki>}} В данный таблице прямой трафик отображается как «(none)». Исправляем: {{r-code|code=<nowiki>> ga.data[ga.data$medium == "(none)", "medium"] <- "direct"</nowiki>}} Добавим столбец с процентами для более наглядного восприятия соотношения: {{r-code|code=<nowiki>> ga.data$percent <- round(prop.table(ga.data$sessions) * 100, 1)</nowiki>}} Полученная в результате таблица выглядит следующим образом: {{r-code|code=<nowiki>> ga.data medium sessions percent1 organic 164914 87.62 direct 13075 6.93 referral 10305 5.5</nowiki>}} Для визуализации данных воспользуемся круговой диаграммой (pie chart): {{r-code|code=<nowiki>> qplot(data = ga.data, x = factor(0), y = sessions, fill = medium, xlab = "", ylab = "") ++ geom_bar(width = 1, stat = "identity") + coord_polar(theta = "y") ++ geom_text(aes(y = cumsum(sessions) - 0.5 * sessions, label = paste0(percent, "%"))) ++ scale_y_continuous(breaks = NULL) + scale_x_discrete(breaks = NULL) ++ scale_fill_discrete(name = "source") + theme_bw()</nowiki>}} [[Файл:Ga-trafic-sources.svg|600px|центр]] Теперь рассмотрим источники трафика более детально. Для этого сделаем выборку по измерениям <code>ga:medium</code> и <code>ga:source</code>. В качестве показателей активности посетителей возьмём следующие показатели: * количество посещений (<code>ga:sessions</code>);* процент новых посещений (<code>ga:percentNewSessions</code>);* средняя продолжительность посещения (<code>ga:avgSessionDuration</code>);* количество просмотров страниц (<code>ga:pageviews</code>);* среднее количество просмотров страниц на одно посещение (<code>ga:pageviewsPerSession</code>);* [http://ru.wikipedia.org/wiki/Показатель_отказов процент отказов] (<code>ga:bounceRate</code>). Наиболее интересными для нас являются источники, имеющие наибольшее количество посещений, поэтому воспользуемся сортировкой по убыванию по показателю <code>ga:sessions</code>, а также ограничим количество источников теми, с которых было более 100 посещений. Код для получения данных приведён ниже. {{r-code|code=<nowiki>> ga.data <- ga$getData(id, start.date = "2014-03-24", end.date = "2014-04-23",+ metrics = "ga:sessions,ga:percentNewSessions,ga:avgSessionDuration,ga:pageviews,ga:pageviewsPerSession,ga:bounceRate",+ dimensions = "ga:medium,ga:source", sort = "ga:medium,-ga:sessions", filters = "ga:sessions>100")</nowiki>}} Полученная в результате запроса таблица данных: {{r-code|code=<nowiki>> ga.data medium source sessions percentNewSessions avgSessionDuration pageviews pageviewsPerSession bounceRate1 (none) (direct) 11182 48.92 205.34 28823 2.578 63.422 organic yandex 72949 43.72 146.23 170021 2.331 69.303 organic google 61130 45.60 183.29 143721 2.351 65.154 organic go.mail.ru 5884 49.68 160.77 16012 2.721 66.425 organic rambler 683 53.29 134.36 1635 2.394 68.966 organic bing 379 47.23 185.23 1158 3.055 62.537 organic ask 115 46.09 181.53 313 2.722 60.008 referral vk.com 2732 26.79 212.63 7722 2.827 57.919 referral ru.wikipedia.org 2598 54.16 148.96 6640 2.556 62.3610 referral psychologos.ru 578 70.24 62.54 863 1.493 84.4311 referral e.mail.ru 338 31.07 242.53 1102 3.260 54.7312 referral nigma.ru 265 30.94 198.44 881 3.325 71.7013 referral ru.m.wikipedia.org 143 60.84 101.99 282 1.972 68.5314 referral rutracker.org 143 60.14 79.49 200 1.399 85.3115 referral brainmod.ru 105 41.90 127.41 199 1.895 71.43</nowiki>}} Сравнивая данные показатели у разных истоников трафика мжно выявить наиболее ценные из них. Отобразим только поисковый трафик: {{r-code|code=<nowiki>> head(subset(ga.data, medium == "organic"), n = 10) medium source sessions percentNewSessions avgSessionDuration pageviews pageviewsPerSession bounceRate2 organic yandex 72949 43.72 146.2 170021 2.331 69.303 organic google 61130 45.60 183.3 143721 2.351 65.154 organic go.mail.ru 5884 49.68 160.8 16012 2.721 66.425 organic rambler 683 53.29 134.4 1635 2.394 68.966 organic bing 379 47.23 185.2 1158 3.055 62.537 organic ask 115 46.09 181.5 313 2.722 60.00</nowiki>}} Отобразим только трафик переходов: {{r-code|code=<nowiki>> head(subset(ga.data, medium == "referral"), n = 10) medium source sessions percentNewSessions avgSessionDuration pageviews pageviewsPerSession bounceRate8 referral vk.com 2732 26.79 212.63 7722 2.827 57.919 referral ru.wikipedia.org 2598 54.16 148.96 6640 2.556 62.3610 referral psychologos.ru 578 70.24 62.54 863 1.493 84.4311 referral e.mail.ru 338 31.07 242.53 1102 3.260 54.7312 referral nigma.ru 265 30.94 198.44 881 3.325 71.7013 referral ru.m.wikipedia.org 143 60.84 101.99 282 1.972 68.5314 referral rutracker.org 143 60.14 79.49 200 1.399 85.3115 referral brainmod.ru 105 41.90 127.41 199 1.895 71.43</nowiki>}} Визуализируем эту таблицу с помощью столбиковой диаграммы: {{r-code|code=<nowiki>> qplot(data = head(subset(ga.data, medium == "organic")), x = reorder(source, sessions), y = sessions,+ geom = "bar", stat = "identity", xlab = "") + coord_flip() + theme_bw()</nowiki>}} [[Файл:Ga-searches.svg|600px|центр]] {{r-code|code=<nowiki>> qplot(data = head(subset(ga.data, medium == "referral")), x = reorder(source, sessions), y = sessions,+ geom = "bar", stat = "identity", xlab = "") + coord_flip() + theme_bw()</nowiki>}} [[Файл:Ga-referrals.svg|600px|центр]] <code>reorder(source, sessions)</code> используется для сортировки столбцов в диаграмме в зависимости от значения столбца «sessions». Для более детального анализа сайтов, с которых приходят посетители, а также целевые страницы, можно сделать следующую выборку данных: {{r-code|code=<nowiki>> ga.data <- ga$getData(id, start.date = "2014-03-24", end.date = "2014-04-23",+ metrics = "ga:sessions", dimensions = "ga:medium,ga:source,ga:referralPath,ga:pageTitle",+ sort = "-ga:sessions", filters = "ga:medium==referral", batch = TRUE, walk = TRUE)</nowiki>}} В каждом заголовке страницы присутствует также название сайта<ref>Это поведение зависит от настроек «движка» сайта.</ref>, для удобства представления данных убираем его: {{r-code|code=ga.data$pageTitle <- gsub(" — Psylab.info", "", ga.data$pageTitle)}} Выведем список наиболее посещаемых страниц нашего сайта посетителям, которые приходят с сайта Википедии: {{r-code|code=<nowiki>> head(ga.data[grep("wikipedia", ga.data$source), -1:-3], n = 10) pageTitle sessions2 Методика чернильных пятен Роршаха 4303 Прогрессивные матрицы Равена 2864 Методика многофакторного исследования личности Кэттелла 2705 Опросник «Уровень субъективного контроля» 2456 Категория:Тесты интеллекта 18412 Шкала депрессии Бека 7813 Тест структуры интеллекта Амтхауэра 7615 Методика многофакторного исследования личности Кэттелла 5417 Тест фрустрационных реакций Розенцвейга 5219 Миннесотский многоаспектный личностный опросник 51</nowiki>}} == География посещений == Информация о географии посещений можно получить с помощью измерений из группы «Geo Network». Для начала получим данных о количестве посещений по странам. {{r-code|code=<nowiki>> ga.data <- ga$getData(ids = id, start.date = Sys.Date() - 31, end.date = Sys.Date() - 1,+ metrics = "ga:sessions", dimensions = "ga:country",+ sort = "-ga:sessions", filters = "ga:country!=(not set)")</nowiki>}} Полученные данные представляют собой следующую таблицу: {{r-code|code=<nowiki>> head(ga.data, n = 10) country sessions1 Russia 1151672 Ukraine 251663 Belarus 83614 Kazakhstan 42525 Netherlands 15656 Moldova 9807 United States 6818 Armenia 5159 Latvia 46310 Kyrgyzstan 392</nowiki>}} Рассмотрим более подробно география посещений по городам РФ: {{r-code|code=<nowiki>> ga.data <- ga$getData(ids = id, start.date = "2014-03-24", end.date = "2014-04-23",+ metrics = "ga:sessions", dimensions = "ga:country,ga:city",+ sort = "-ga:sessions", filters = "ga:country==Russia;ga:city!=(not set)")</nowiki>}} Полученные результаты: {{r-code|code=<nowiki>> head(ga.data, n = 10) country city sessions1 Russia Moscow 187602 Russia Saint Petersburg 146603 Russia Novosibirsk 43594 Russia Yekaterinburg 39725 Russia Samara 39166 Russia Kazan 20717 Russia Rostov-on-Don 18758 Russia Krasnodar 18169 Russia Perm 175310 Russia Krasnoyarsk 1715</nowiki>}} == Примечания == <references /> [[Категория:R]][[Категория:Веб-аналитика]]