Изменения

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

15 918 байтов добавлено, 17:10, 17 мая 2014
м
Анализ суточной активности посетителей по дням недели
> view <- "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 <- 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>}}
== Анализ посещаемости сайта ==
Получение данных:
{{r-code|code=<nowiki>> ga.data <- ga$getData(id, start.date = Sys.Date()- 31, end.date = Sys.Date() - 301,
+ metrics = "ga:pageviews,ga:sessions,ga:users",
+ dimensions = "ga:date")</nowiki>}}
== Анализ посещаемости по дням недели ==
Проанализируем динамику посещаемости сайта в течении недели. Для этого возьмём сведения о количестве посещений с момента начала сбора статистики до текущего дняпоследнего воскресенья<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 = Syssunday.Date()date,
+ metrics = "ga:sessions", dimensions = "ga:dayOfWeekName")</nowiki>}}
{{r-code|code=<nowiki>> ga.data[order(ga.data$dayOfWeekName), ]
dayOfWeekName sessions
2 Monday 28409230906 Tuesday 30165241577 Wednesday 29784276095 Thursday 22936279641 Friday 19199235873 Saturday 13791169244 Sunday 1692220598</nowiki>}}
Визуализировать данную таблицу можно следующим образом:
{{r-code|code=<nowiki>> qplot(data = ga.data, x = dayOfWeekName, y = sessions, geom = "bar", + stat = "summaryidentity", fun.y = "mean",+ 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>}}
Приведём первые несколько строк таблицы для наглядной демонстрации структуры полученных данных:
В качестве визуализации воспользуемся плиточным графиком, который окрашивает зоны на пересечении часов и дней недели в зависимости от значения переменной <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. Получить текущий часовой пояс можно узнать, получив информацию о профилях 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 theme28823 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(axissubset(ga.ticks data, medium = element_blank= "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"), axisn = 10) medium source sessions percentNewSessions avgSessionDuration pageviews pageviewsPerSession bounceRate8 referral vk.textcom 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 = element_blankreorder(source, sessions), axisy = sessions,+ geom = "bar", stat = "identity", xlab = "") + coord_flip() + theme_bw()</nowiki>}} [[Файл:Ga-searches.textsvg|600px|центр]] {{r-code|code=<nowiki>> qplot(data = head(subset(ga.data, medium == "referral")), x = reorder(source, sessions), y = element_blanksessions,+ 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",+ scale_fill_discrete sort = "-ga:sessions", filters = "ga:medium==referral", batch = TRUE, walk = TRUE)</nowiki>}} В каждом заголовке страницы присутствует также название сайта<ref>Это поведение зависит от настроек «движка» сайта.</ref>, для удобства представления данных убираем его: {{r-code|code=ga.data$pageTitle <- gsub(name " — 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]]
[[Категория:Веб-аналитика]]