Cet article est le dernier d’une série sur l’analyse des données Google Analytics de l’association Networking Morbihan avec R.
Dans cet article, nous allons réaliser une Analyse en Composantes Principales sur la variable canal de trafic.
A quoi sert une Analyse en Composantes Principales ?
Une Analyse en Composantes Principale – ACP – ou en Anglais PCA (Principal Component Analysis) est une méthode d’analyse de données qui permet d’explorer les liaisons entre les variables (pour nous ici les canaux : direct, referral, search, social, webmail) et les ressemblances entre individus (pour nous les pages Web : nous en avons 1262 différentes) .
L’ACP nous donne les informations suivantes que l’on va pouvoir visualiser :
Visualisation des individus : notion de distances entre individus, identification de groupes.
Visualisation des variables : en fonction de leurs corrélations. (ici notre cas)
Exemple de visualisation de variables
Mathématiquement cela consiste à transformer des variables liées entre elles (dites « corrélées ») en nouvelles variables décorrélées les unes des autres.
Ces nouvelles variables sont nommées « composantes principales », ou axes principaux.
Cela permet notamment de réduire le nombre de variables et de rendre l’information plus lisible si l’on a un jeu de données important avec de nombreuses variables.
l’ACP peut servir aussi à la vérification d’un jeu de données en identifiant les valeurs aberrantes (voir graphique ci-dessous) ou d’étape préalable à d’autres traitements statistiques que nous n’aborderons pas ici.
Comme dans les précédents articles, nous utiliserons le jeu de données de Networking Morbihan pour illustrer notre propos. Vous aurez besoin de 3 fichiers à dézipper dans le même répertoire que le code R :
Vous pouvez aussi construire votre jeu de données à partir de vos propres données Google Analytics. Auquel cas, suivez les procédures que nous avions décrites dans des articles précédents :
##########################################################################
# Auteur : Pierre Rouarch 2019 - Licence GPL 3
# PCATrafficChannelsR
# Analyse en Composantes principales canaux trafic Web.
# Pour illustrer notre propos nous utiliserons le jeu de données de
# l'association Networking-Morbihan
##########################################################################
#Packages et bibliothèques utiles (décommenter au besoin)
##########################################################################
#install.packages("lubridate") #si vous ne l'avez pas
#install.packages("tseries")
#install.packages("devtools")
#devtools::install_github("twitter/AnomalyDetection") #pour anomalyDetection de Twitter
#devtools::install_github('sinhrks/ggfortify') #pour ggfortify
#install.packages("XML")
#install.packages("stringi")
#install.packages("BSDA")
#install.packages("BBmisc")
#install.packages("stringi")
#install.packages("FactoMineR")
#install.packages("factoextra")
#install.packages("rcorr")
#install.packages("lubridate") #si vous ne l'avez pas
library (lubridate) #pour yday
#library(tseries) #pour ts
library(AnomalyDetection) #pour anomalydetectionVec
#library(XML) # pour xmlParse
#library(stringi) #pour stri_replace_all_fixed(x, " ", "")
library(BSDA) #pour SIGN.test
library(BBmisc) #pour which.first
#install.packages("stringi")
library(stringi) #pour stri_detect
library(ggfortify) #pour ploter autoplot type ggplot
#install.packages("tidyverse") #si vous ne l'avez pas #pour gggplot2, dplyr, tidyr, readr, purr, tibble, stringr, forcats
#install.packages("forecast") #pour ma
#Chargement des bibliothèques utiles
library(tidyverse) #pour gggplot2, dplyr, tidyr, readr, purr, tibble, stringr, forcats
library(forecast) #pour arima, ma, tsclean
library(FactoMineR) #pour ACP
library(factoextra) #compléments ACP FactoMineR
Récupération des fichiers dfPageViews.csv, myArticles.csv et mySourcesChannel.csv
##########################################################################
# Récupération des fichiers
##########################################################################
dfPageViews
Données Globales :
Préparation des données et calcul de l’ACP.
##########################################################################
# Pour le traffic Global on ajoute les canaux
##########################################################################
#recuperation de la variable channel dans le dataframe
#principal par un left join.
dfPVChannel % #on ne garde que PagePath et channel
group_by(pagePath, channel) %>% #groupement par cleanLandingPagePath et channel
mutate(pageviews = n()) %>% #on décompte les pages vues
unique() %>% #découblonnement
spread(key=channel, value=pageviews, fill = 0, convert = FALSE, drop = TRUE,
sep = NULL) #eclatement du facteur channel en variables
#Calcul de l'ACP avec FactoMineR
res.pca = PCA(PVDataForACP[, -1], scale.unit=TRUE, ncp=5, graph=F)
summary(res.pca) #resumé des données
#############################Plots Simples individus et variables.
#plot(res.pca, choix = "ind") #individus
#plot(res.pca, choix = "var") #variables
Screeplot pour toutes les pages.
Il s’agit du graphique permettant de visualiser le pourcentage de variance expliquée en fonction des dimensions.
Pourcentage de variance expliquée selon les dimensions : toutes les pages
Diagramme des variables pour toutes les pages :
######################### Diagramme des variables ################################################
# Colorer en fonction du cos2: qualité de représentation
VarPlot
Pourcentage de variable expliquée selon les dimensions : pages de base
Mis à part Webmail qui diffère légèrement, tous les autres canaux sont pratiquement tous sur l’axe de la composante 1. Cela montre qu’ils sont fortement et positivement corrélés.
Le fait que Webmail diffère pourrait indiquer que certaines pages bénéficient de plus de trafic via email que d’autres. Ce qui est la réalité.
Le cos² indique la qualité de représentation des variables sur le graphique de l’ACP. Il est calculé comme étant les coordonnées au carré: var.cos2 = var.coord * var.coord. Ici toutes les variables sont très bien représentées : > 0,99.
Trafic de base
Création du jeu de données pour le Trafic de BAse et calcul de l’ACP
##########################################################################
# Pour le traffic de base
##########################################################################
#Recréation du trafic de base
#récupere les chemins des pages pour les comparer dans dfPageViews
myArticles$pagePath % #on ne garde que PagePath et channel
group_by(pagePath, channel) %>% #groupement par cleanLandingPagePath et channel
mutate(pageviews = n()) %>% #on décompte les pages vues
unique() %>% #découblonnement
spread(key=channel, value=pageviews, fill = 0, convert = FALSE, drop = TRUE,
sep = NULL) #eclatement du facteur channel en variables
#Calcul de la
res.pca = PCA(BasePVDataForACP[, -1], scale.unit=TRUE, ncp=5, graph=F)
summary(res.pca) #resumé des données
Graphique de pourcentage de variance expliquee pour le trafic de base
Pourcentage de variable expliquée selon les dimensions : pages de base
Diagramme des variables pour les pages de base
######################### Diagramme des variables ################################################
# Colorer en fonction du cos2: qualité de représentation
VarPlot
Diagramme des variables, pages de base.
Toutes les sources de trafic sont fortement liées pour les pages de base.
Pages Direct Marketing
Preparation des donnees pour les pages direct marketing et calcul de l’aCP
##########################################################################
#regardons pour le trafic Direct Marketing uniquement i.e le traffic dont
# la source a dirigé vers une page Articles Marketing
##########################################################################
#Construction du trafic Direct Marketing
#on garde uniquement les landingPagePath de nos articles :
#DM = Direct Marketing
patternArticlesToKeep % #on ne garde que PagePath et channel
group_by(pagePath, channel) %>% #groupement par cleanLandingPagePath et channel
mutate(pageviews = n()) %>% #on décompte les pages vues
unique() %>% #découblonnement
spread(key=channel, value=pageviews, fill = 0, convert = FALSE, drop = TRUE,
sep = NULL) #eclatement du facteur channel en variables
res.pca = PCA(DMPVPVDataForACP[, -1], scale.unit=TRUE, ncp=5, graph=F)
summary(res.pca) #resumé des données
Graphique de pourcentage de variance expliquee pour le trafic DIRECT MARKETING
Pourcentage de variance expliquée : pages direct marketing
Diagramme des variables pour les pages DIRECT MARKETING
######################## Diagramme des variables ################################################
# Colorer en fonction du cos2: qualité de représentation
VarPlot
Diagramme des variables : pages direct marketing
Le fait que search se détache pourrait indiquer que certaines pages on un trafic search différencié par rapport aux autres.
Et vous, qu’obtenez-vous avec les données de votre site ?
A bientôt,
Pierre
Partager la publication "Analyse en Composantes Principales sur les canaux de trafic Web avec R"