L’évolution vers le web 2.0 pousse les e-commerçants à repenser leur business model : d’un contenu purement informationnel, on passe à une information échangée de manière bilatérale, le prospect devient aussi acteur.
Ceci pose la question de l’arbitrage entre les 2 types de contenus d’un site de e-commerce :
- le contenu généré par les utilisateurs ou User Generated Content (UGC),
- et le contenu éditorial ou Professional Generated Content (PGC).
L’un amène du trafic mais vend peu, l’autre vend beaucoup mais amène peu de trafic. Or le revenu total est le produit du nombre de visiteurs par le panier moyen. La modélisation des flux entre ces 2 types de contenus permet de mieux comprendre leur dynamique, en gardant pour objectif de maximiser au final la fonction profit.
C’est le sujet du séminaire que nous effectuons depuis Octobre 2012 au sein d’une équipe de l’INSEAD composée du Prof. Theodoros Evgeniou et de deux étudiants en thèse, Inyoung Chae et Kaifu Zhang.
Ici les "ventes" sont en fait l’affichage d’une publicité que le site fac- ture à ses sociétés clientes. L’acquisition d’un client est son inscription sur le site. La majorité du trafic sur le site se situe sur les sections UGC, alors que la publicité en ligne est facturée principalement sur les sections PGC. C’est donc un excellent exemple à étudier pour résoudre la problématique présentée.
3. Remerciements
Nous tenons à remercier notre encadrant à l’INSEAD, Mr. Theodoros
Evgeniou, ainsi que Kaifu Zhang, Padmanabhan Paddy et Inyoung Chae
pour leur aide et leur enseignement sur ce sujet. Nous remercions aussi notre
encadrant à l’Ecole Centrale Paris, Mr. Nicolas Vayatis, pour son temps et
ses conseils.
2
4. Introduction
L’évolution vers le web 2.0 pousse les e-commerçants à repenser leur
business model : d’un contenu purement informationnel, on passe à une
information échangée de manière bilatérale, le prospect devient aussi acteur.
Ceci pose la question de l’arbitrage entre les 2 types de contenus d’un site
de e-commerce :
- le contenu généré par les utilisateurs ou User Generated Content (UGC),
- et le contenu éditorial ou Professional Generated Content (PGC).
L’un amène du trafic mais vend peu, l’autre vend beaucoup mais amène
peu de trafic. Or le revenu total est le produit du nombre de visiteurs par
le panier moyen. La modélisation des flux entre ces 2 types de contenus
permet de mieux comprendre leur dynamique, en gardant pour objectif de
maximiser au final la fonction profit.
C’est le sujet du séminaire que nous effectuons depuis Octobre 2012 au
sein d’une équipe de l’INSEAD composée du Prof. Theodoros Evgeniou et
de deux étudiants en thèse, Inyoung Chae et Kaifu Zhang.
Ici les "ventes" sont en fait l’affichage d’une publicité que le site facture à ses sociétés clientes. L’acquisition d’un client est son inscription sur
le site. La majorité du trafic sur le site se situe sur les sections UGC, alors
que la publicité en ligne est facturée principalement sur les sections PGC.
C’est donc un excellent exemple à étudier pour résoudre la problématique
présentée.
3
5. 1
1.1
Cadre et problématique
Le Web 2.0
L’évolution naturelle du web vers le web 2.0 conduit à un réseau
interactif : l’internaute devient contributeur. L’échange d’information
devient bilatéral, non seulement entre le visiteur et la page, mais aussi entre
visiteurs. L’internaute devient donc, grâce aux outils mis à sa disposition,
une personne active sur la toile. Les 10 sites les plus visités au monde sur
internet sont purement collaboratifs ou ont une partie collaborative, donc
cette évolution est rapide et très importante.
Or un commerce classique adopte généralement l’ancien schéma : l’information est partagée au prospect par le commerçant, et le prospect est
rarement acteur dans le business model du commerce. Nous nous intéressons
ici à la partie publicité de la communication prospect-commerçant.
Donc les sites commerçants ont dû rapidement adaptés à cette nouvelle tendance, grâce notamment aux forums, blogs, ou avis d’acheteurs.
L’étude consiste donc à modéliser le revenu potentiel d’un site commerçant
en fonction de son trafic sur les deux types de pages, contributif ou
informatif, en utilisant des outils de séries temporelles.
1.2
Conséquences sur le e-business
Le Business Model d’un site commerçant est profondément modifié par
cette évolution. Le site doit arbitrer entre 2 types de contenus :
– le contenu collaboratif : User Generated Content (UGC)
– le contenu informationnel ou transactionnel : Professional Generated
Content (PGC).
Pour qu’un site commerçant augmente ses revenus, en augmentant par
exemple le nombre de clics sur les publicités qu’il comporte, il dispose de
2 leviers, il peut :
– augmenter son trafic i.e. le nombre d’internautes qui viennent sur ses
pages,
– augmenter la propension à cliquer sur les publicités des internautes
déjà présents.
Ainsi, organiser une partie UGC, sous la forme de blogs, forums etc.
adresse le premier levier. Rédiger du contenu à visée transactionnelle ou
informer sur des produits (contenu PGC) adresse le second levier : le taux
de clic sur les publicités est plus important sur les pages de PGC que sur les
4
6. pages de UGC.
Il est indispensable de ne pas se focaliser sur un des deux leviers seulement :
– un site qui se concentre sur l’UGC gagne peu d’argent par visiteur,
mais a de nombreux visiteurs.
– un site qui se concentre sur le PGC gagne beaucoup d’argent par
visiteur, mais a peu de visiteurs.
Il est donc nécessaire de trouver un équilibre entre le nombre de pages
contenant de l’UGC, le nombre de pages contenant du PGC, et de trouver
quels types d’UGC sont les plus efficaces, c’est à dire quels sont ceux qui
permettent de maximiser la fonction profit.
1.3
Le cas du portail étudié
Le site vend de l’espace publicitaire en ligne. L’espace publicitaire est
plus cher sur les pages PGC car le contenu des pages UGC n’étant pas
modéré en temps réel, les entreprises sont peu enclines à mettre leur publicité sur ces pages. Mais la majorité du trafic est sur les pages UGC du site.
Le portail a alors posé à l’équipe du Prof. Evgeniou les questions suivantes :
5
7. – Comment augmenter le trafic vers les sections PGC ? Peut on utiliser
les pages UGC ?
– La plupart des visiteurs font leur premier clic sur une page UGC et ne
vont jamais sur une page PGC : comment faire en sorte qu’un "first
time" visiteur d’une page UGC aille durant la même visite sur une
page PGC ?
– Comment les pages UGC affectent l’acquisition et la rétention de
nouveaux clients ?
Dans le cas du portail étudié, les clients sont les utilisateurs inscrits sur
le site et l’acquisition d’un client est son inscription sur le site. Ces clients
habituels sont ensuite la cible des publicités du site.
6
8. 2
Pré-traitement des données
Pour répondre aux questions précédentes, notre équipe dispose de données sur le trafic et l’évolution du contenu des sections UGC et PGC.
2.1
Données et premier traitement
Les données brutes (raw data) proviennent des cookies du site. Elles
datent de fin 2010. Très succinctement, elles permettent de savoir, pour
chaque visiteur :
− la page qu’il a consultée,
− l’heure (donc le temps qu’il est resté sur la page),
− et ses actions (s’il a posté une réponse à un forum, un billet sur son
blog etc.).
Donc chaque utilisateur qui change de page, ou rafraîchit sa page, crée une
nouvelle ligne dans la table de données. Les données d’observation couvrent
une plage de 73 jours. Elles représentaient donc plus de 20Go.
La première étape a consisté à traiter ces données, pour en extraire des
variables agrégées par jour. Le langage utilisé a été STATA pour simplifier
l’étude des séries temporelles à l’étape suivante (le langage fournit des outils
très puissants). Les variables finales sont les suivantes :
1. nombre de vues totales par jour
2. nombre de visiteurs sur les pages éditoriales par jour
3. nombre de visites sur les pages éditoriales par jour
4. nombre de visiteurs sur les pages blog par jour
5. nombre de visites sur les pages blog par jour
6. nombre de visiteurs sur les pages album (posts de photos) par jour
7. nombre de visites sur les pages album (posts de photos) par jour
8. nombre de visiteurs sur les pages forum par jour
9. nombre de visites sur les pages forum par jour
10. nombre de création de fil de discussion dans un forum par jour
11. nombre de réponse à un fil de discussion dans un forum par jour
12. nombre de posts sur les pages blog par jour
13. nombre de posts de photos sur les pages par jour
Il a fallu :
− couper les données (en environ 6000 fichiers), car le logiciel n’est pas
capable de traiter des fichiers aussi volumineux,
7
9. − traiter chaque fichier découpé en comptant le nombre d’observations
de chaque variable agrégée,
− recoller les résultats concernant chaque fichier en sommant les
observations.
Le code est en annexe.
2.2
Correction et complétion des données
Une fois ce traitement terminé, les données se sont avérées incomplètes. Il
manquait de nombreuses observations concernant les actions des utilisateurs
(les 3 derniers types de variables du II.1). Après contact avec l’entreprise,
Theodoros nous a fourni des données supplémentaires, sous formes de 3 fichiers "rextract", chacun fournissant des informations sur les parties forum,
blog et album. Mais nous n’avions aucun moyen de savoir si certaines observations étaient déjà présentes dans les données brutes de départ, donc
nous ne pouvions pas simplement concaténer les nouveaux fichiers avec les
anciens. Nous avons donc écrit un premier algorithme qui vérifie si des observations sont communes aux données initiales (raw data) et aux nouveaux
fichiers (rextract).
Voici son fonctionnement en pseudo-code :
− on découpe les fichiers initiaux en "plus gros morceaux"
− pour chaque jour k
· on parcourt toutes les données brutes initiales, on conserve celles
correspondant au jour k
· on parcourt tous les rextracts (les fichiers de complétion), on vérifie
si les observations qu’ils contiennent ne sont pas déjà présentes, en
comparant l’heure, l’identification de l’utilisateur et l’identification
de la page
· si elles ne le sont pas, on complète la base de données
· on sauvegarde les données relatives au jour k, complètes
− pour chaque jour k on compte le nombre d’observations pour toutes
les variables agrégées
− on somme sur tous les jours.
De nombreux ajustements ont dû être effectués pour que ce code
fonctionne. Par exemple, certaines observations sont précises à la seconde,
d’autres à la minute, donc beaucoup d’observations sont techniquement
identiques, mais différentes en apparence (puisque l’heure semble différente).
L’étape de traitement des données est cruciale, car le type d’inattention donnée en exemple fournit des résultats aberrants durant l’étude, et il
est assez difficile d’en trouver l’origine. Nous avons donc testé la cohérence
8
10. des résultats après chaque modification, et de nombreuses reprises du code
ont été nécessaires. A nouveau, le code est en annexe. On ne fournit que
le code pour la section forum, celui pour les sections blog et album est
similaire.
En résumé, on s’intéressera aux relations entre les 12 variables de 2 à
13 afin de répondre aux questions posées par l’entreprise, observées sur 72
jours : du 05 Octobre au 16 Décembre, le 73ème jour ayant été abandonné
par manque d’informations.
9
11. 3
Les résultats de séries temporelles utilisés
Pour répondre aux questions posés par l’entreprise, il nous faut quantifier
l’influence des sections UGC sur les sections PGC. Nous devons par exemple
la façons dont une augmentation du trafic ou du contenu des sections UGC
impacte le trafic des sections UGC et PGC du site. Pour cela, les modèles
VAR (Vectors Auto-Regressive) et les IRF (Impulse Response Functions)
sont les outils adéquats. Grossièrement, un vecteur auto-régressif est un vecteur de l’ensemble des features, que l’on régresse à partir des observations de
ce même vecteur, à des temps antérieurs (t-1, t-2. . . , t-k), et les IRF sont des
chocs appliqués à chaque feature en un temps antérieur, en vue d’observer
l’évolution des autres.
3.1
Utilisation des modèles VAR
Par souci de clarté, on se place en dimension 2. Tous les arguments se
généralisent sans problème à la dimension n (dans notre cas, n = 12).
Hypothèses
− Les variables à expliquer sont les yt et zt .
− On prend un lag de 1. Le lag est à choisir selon différents critères de
sélection de modèles (BIC, Akaike,...).
− t est un bruit.
Méthode
On écrit le vecteur des variables à expliquer comme transformation linéaire de ses états antérieurs, ici en fonction de t − 1 seulement, puisque le
lag est de 1. On expliquera ce choix dans la partie suivante. On ajoute un
bruit aléatoire. On associe un choc à chacune des variables, pour observer
l’évolution des autres. Ces chocs s’appellent les fonctions IRF.
On part du modèle suivant :
1 b12
b21 1
yt
zt
=
b10
b20
+
c11 c12
c21 c22
Que l’on réécrit : BXt = Γ0 + Γ1 Xt−1 +
yt−1
zt−1
+
eyt
ezt
t
C’est le modèle Structural VAR (SVAR), on remarque qu’il y a 10 paramètres à ajuster : 8 variables, et les variances des e (eyt et ezt sont décoréllés).
On peut reformuler ce modèle en inversant B, c’est généralement
possible. On obtient :
10
12. yt
zt
=
a10
a20
a11 a12
a21 a22
+
yt−1
zt−1
+
yt
zt
C’est à dire : Xt = A0 + A1 Xt−1 + et
Ce modèle est le VAR en forme standard, dont 9 paramètres sont à ajuster
(6 variables, les variances des e et la covariance Cov( yt , zt )).
Le modèle SVAR présente une inconnue de plus par rapport au modèle
VAR. Il nous faudra donc ajouter des contraintes sur les matrices (des zéros)
afin de pouvoir résoudre le modèle SVAR. En pratique on fera l’hypothèse
que l’une des variable n’influence pas l’autre.
yt
=
zt
b11 b12
0 b22
eyt
ezt
ou plus généralement, si la matrice est triangulaire inférieure. C’est à dire
si y n’a pas d’effet instantané sur z.
Le processus a aussi une représentation MA(∞), c’est le modèle VMA
(Vector Moving Average) :
yt
zt
=
yt
¯
zt
¯
∞
(i)
(i)
i
φ11 φ12
(i)
(i)
φ21 φ22
+
i=0
∞
y,t−i
¯
=X+
z,t−i
Φi
t−i
i=0
Une fois notre modèle VAR posé, on va chercher à faire l’étude de l’influence d’un choc dans une variable sur les autres variables. C’est l’analyse
impulsionnelle : on cherche à obtenir les Impulse Response Functions (IRF).
Reprenons le modèle VMA :
∞
yt
zt
¯
=X+
Φi
t−i
i=0
L’étude des chocs se fera ainsi :
dyt
d z,t
= φ12 (0),
dzt
d z,t
= φ22 (0),
et en décalant d’une période :
dyt+1
d z,t
= φ12 (1),
dyt
d
z,t−1
zyt+1
d z,t
= φ22 (1)
= φ12 (1) etc.
Ces φ donnent d’ailleurs l’erreur de forecast :
¯
¯
xt+1 = X + Φ0 t+1 + Φ1 t−1 + ... Ext+1 = X + Φ1 t + Φ2
11
t−1
+ ...
13. donc l’erreur au temps t + 1 est :
xt+1 − Et xt+1 = Φ0 t+1
et il en est de même pour les temps suivants :
xt+n − Ext+n = Φ0 t+n + Φ1 t+n−1 + Φ2 t+n−2 + ... + Φn−1
donc sur chacune des variables :
yt+n − Eyt+n = φ11,0 y,t+n + φ11,1
φ21,1 z,t+n−1 ...φ21,n−1 z,t+1
y,t+n−1 ...φ11,n−1 y,t+1
et finalement :
2
2
σy,n = σy (φ2 + φ2 + ... + φ2
11,0
11,1
11,n−1 )
t+1
+ φ21,0
z,t+n
+
2
+ σz (φ2 + φ2 + ... + φ2
21,0
21,1
21,n−1 )
proportion à la variance du choc de la variable
proportion à la variance du choc dans z
Le terme qui représenta la proportion de la variance due au choc en
y diminue avec le temps alors que le terme dû au choc en z augmente. Si
2
δσy,n
0 i.e. z n’explique pas l’erreur sur y, alors y est exogène. Si elle
2
σz
l’explique beaucoup (proche de 1), alors y est endogène. L’idée est que :
si z peut faire absolument n’importe quoi (variance élevée) sans que ça
n’influence y, alors y n’est pas "dans" le modèle.
Pour l’étude des IRF, on va cependant chercher à obtenir les conséquences
d’un choc sur une variable de manière isolée. Or si la matrice Σ = E[ y,t z,t ]
de variance covariance des résidus n’est pas diagonale, un choc sur y,t sera
accompagné d’un choc sur z,t . La décomposition de Cholesky de la matrice
Σ symétrique donne Σ = P P où P est une matrice triangulaire supérieure
avec ses éléments diagonaux positifs. Ainsi le VMA se ré-écrit :
yt
zt
∞
¯
=X+
∞
Φi
i=0
t−i
¯
=X+
∞
Φi P P
i=0
−1
t−i
¯
=X+
Θi ut−i
i=0
avec Θi = Φi P et ut−i = P −1 t−i . Les ut−i ont maintenant une matrice
de variance covariance égale à l’identité. Les colonnes de Θi représenteront
la réponse du système par rapport à un choc indépendant et normalisé sur
l’innovation d’une variable après i périodes.
Dans notre cas le logiciel Stata nous permet de faire l’étude des IRFs
très facilement une fois le modèle VAR posé. Mais pour cela il faut bien
préciser l’ordre des variables dans la décomposition de Cholesky qu’effectuera
le logiciel. Deux ordres des variables différents peuvent a priori donner des
résultats différents pour les IRFs. C’est l’objet de la partie suivante.
12
14. 4
Résultats obtenus
Pour mémoire, notre modèle VAR comporte 12 variables observées sur 72
jours, du 05 Octobre 2010 au 16 Décembre 2010, la 1ère variable est déduite :
1. nombre de vues totales par jour
2. nombre de visiteurs sur les pages éditoriales par jour
3. nombre de visites sur les pages éditoriales par jour
4. nombre de visiteurs sur les pages blog par jour
5. nombre de visites sur les pages blog par jour
6. nombre de visiteurs sur les pages album (posts de photos) par jour
7. nombre de visites sur les pages album (posts de photos) par jour
8. nombre de visiteurs sur les pages forum par jour
9. nombre de visites sur les pages forum par jour
10. nombre de création de fil de discussion dans un forum par jour
11. nombre de réponse à un fil de discussion dans un forum par jour
12. nombre de posts sur les pages blog par jour
13. nombre de posts de photos sur les pages par jour
On travaille dans la suite avec les log des variables.
4.1
Choix du lag et stationnarité
Nous avons choisi d’utiliser le critère BIC pour choisir le lag de notre
modèle. La commande varsoc sur Stata permet d’évaluer le critère BIC sur
plusieurs lag possibles. Cela nous a donné le résultat suivant :
13
15. Nous avons donc choisi un lag de 1 en suivant le critère BIC. On aurait
pu hésiter avec un lag de 4 qui était recommandé par les autres critères, mais
de manière classique en marketing statistique les chercheurs ont tendance à
privilégier le lag le plus faible.
Les variables doivent être stationnaires afin de pouvoir tirer des conclusions
d’une régression. Nous avons testé la stationnarité des variables avec un
lag de 1 grâce à la commande dfuller de Stata qui permet de soumettre
les variables au test de Dickey-Fuller. Les 12 variables sont stationnaires
avec un lag de 1 pour une p-value inférieure à 5%, sauf pour le nombre de
visites de la section album pour laquelle la p-value est à 12%, mais nous
l’acceptons quand même. Ceci est principalement dû au fait que les variables
présentent 2 périodes : une de 7 jours, hebdomadaire, et une de plusieurs
mois, saisonnière. Notre échelle de temps trop courte nous empêche de
capturer l’information saisonnière, autrement dit notre modèle ne permet
pas d’expliquer l’aberration des données du dernier jour, qui représente
une chute saisonnière. Cette observation a été possible grâce à l’étude de
données similaires, sur lesquelles a déjà travaillé une équipe de Theodoros,
mais que nous ne pouvons pas exploiter dans notre projet.
4.2
Modèle VAR et IRF
En suivant le modèle VAR présenté précédemment, nous avons dû choisir
l’ordre des variables pour la décomposition de Cholesky de la matrice Σ.
Pour cela nous avons pensé à une première technique "intuitive". Nous avons
étudié l’influence d’un choc dans les innovations de chaque variable sur les
autres variables en normalisant chaque ligne de la matrice Σ. Cela donne le
résultat suivant :
14
16. De cette matrice, nous avons pu tirer des conclusions sur les variables
les plus influentes (au sens de l’étude IRF). Elles correspondent aux lignes
les plus "rouges" de la matrice normalisée. Nous avons ensuite tester les
ordres ordre1 : "des variables les plus influentes vers les variables les moins
influentes" et les ordre 2 et 3 reprennent une organisation : "des variables
les moins influentes vers les variables les plus influentes".
ordre1 : log_forumvisitors log_blogvisitors log_forumviews log_blogviews
log_albumvisitors log_albumviews log_editovisitors log_editoviews
log_forumposts log_forumthreads log_albumpost log_blogpost
ordre2 : log_blogpost log_albumpost log_forumthreads log_forumposts
log_editoviews log_editovisitors log_albumviews log_albumvisitors
log_blogviews log_forumviews log_blogvisitors log_forumvisitors
ordre3 : log_blogpost log_albumpost log_forumthreads log_forumposts
log_editoviews log_albumviews log_editovisitors log_albumvisitors
log_blogviews log_blogvisitors log_forumviews log_forumvisitors
Les trois ordres donnent des résultats semblables, mais avec de meilleurs
intervalles de confiance et des résultats plus logiques pour l’ordre 3. Nous
allons donc présenter dans la suite les résultats de l’ordre 3. En utilisant les
fonctionnalités des IRF de Stata, nous pouvons obtenir une projection des
conséquences d’un choc sur l’une des variables sur une ou plusieurs autres
variables. La période de projection (7 jours) a été choisie en observant que
sous 7 jours on captait la majorité de l’effet du choc (ensuite, l’IRF tombe
à zéro). Par exemple, un choc sur le nombre de nouveaux posts dans la
15
17. section forum aura pour conséquence sur le nombre de vues des sections
edito, sur 7 jours, la forme suivante :
4.3
Interprétation des résultats
Les résultats de l’analyse IRF sont en annexes. Nous souhaitons tirer des
conclusions d’après ces tableaux afin de répondre aux questions posées par
le client. Dans cette optique, nous nous intéressons en particulier à l’effet
des sections UGC (album, blog et forum) sur les sections PGC (edito). Une
remarque importante est que au-delà de 2-3 jours les intervalles de confiance
à 95% explosent et les résultats ne sont plus exploitables. Nous commenterons
ce point plus tard. En ne regardant que les projections sur 2 jours, on peut
noter que :
− Une augmentation des posts sur la section forum a un impact positif
sur le trafic (nombre de visiteurs et de vues) des sections forum mais
aussi des sections edito. Les posts sur les sections blog et album ont
un impact très faible (autour de 5% l’impact des posts sur la section
forum) sur le trafic des sections edito.
− Une augmentation du nombre de post dans chacune des 3 sections
UGC augmente le nombre de posts dans la même section. La création
de contenu entraîne plus de création du contenu du même type. De
même, une augmentation du nombre de post de la section forum augmente le nombre de posts sur les sections blog et album. En revanche,
des augmentations du nombre de posts sur les sections blog et album
n’ont pas d’impact important sur la section forum.
− Le nombre de vues sur la section forum impacte positivement le trafic
des sections edito. Etonnamment, au contraire le nombre de visiteurs
sur la section forum impacte négativement le trafic des sections edito.
Le trafic sur la section album impacte positivement le trafic des
16
18. sections edito et le trafic sur la section blog impacte négativement le
trafic des sections edito.
Ces résultats sont encourageants puisqu’il semble que le trafic et le contenu
des sections UGC comme les sections forum et album peuvent avoir un impact bénéfique sur les sections PGC.
4.4
Ordre des variables
Parmi les stratégies possibles d’amélioration, nous avons vu que l’ordre
des variables est important lors de l’étude des IRF. Il n’existe cependant
pas de "prior" nous permettant de hiérarchiser les qualités des résultats
par ordre de variables. Avec 12 variables, il y a 12 ! ordres possibles, et 10
graphiques par ordre, donc plus de 5 ∗ 109 graphiques en tout. Une étude
exhaustive est donc exclue.
L’idée est donc de grouper les variables similaires.
On peut donc penser à un premier type de méthode de groupement :
par fonction. En effet, il y a 3 grandes catégories de variables :
− les views,
− les visitors,
− les actions.
On peut donc les ordonner par fonction : par exemple d’abord les views,
ensuite les visitors et enfin les actions. Il y a 6 combinaisons possibles de
fonctions, et plusieurs combinaisons internes à chaque fonction (par exemple
forumviews, albumviews puis blogview. . . )
On peut aussi les grouper par nature, c’est-à-dire par type de contenu :
− les pages forum,
− les pages edito,
− les pages blog,
− les pages album.
Il y a donc 24 combinaisons possibles de natures, et plusieurs combinaisons
internes à chaque nature (par exemple d’abord les views, ensuite les visitors,
enfin les actions).
On réduit donc l’étude à 54 ordres possibles. Pour vérifier que notre
étude est consistante relativement à tous ces ordres, on vérifie que le signe
d’un effet d’un choc sur une variable est le même d’un ordre à l’autre. Par
exemple en choisissant l’ordre 1, si un choc sur la variable forumviews a un
impact positif sur la variable editovisitors, il faut que l’ordre 2 fournisse
la même conclusion. Le temps de calcul rend l’étude de tous les liens sur
17
19. tous les ordres de variables inenvisageable. Donc nous avons choisi de ne
confirmer qu’un lien, sur tous les ordres possibles : il s’agit de l’impact
positif des albumviews sur les editoviews. Nous générons donc les graphes
correspondant à tous les ordres, avec pour générateur la variable albumviews, et nous observons les évolutions des autres variables, notamment si
cette évolution est positive ou négative, à partir d’un seuil. Il a été confirmé
par plusieurs des 54 ordres retenus (sauf pour l’ordre 21, qui donne des
résultats aberrants pour tous les graphes), donc il est certainement vrai,
et c’est le principal lien sur lequel nous basons nos recommandations pour
l’entreprise (orienter l’évolution du site vers la partie Album, cf partie
suivante). Pour être totalement rigoureux, il faudrait prendre le temps, et
avoir une machine capable d’effectuer tous les calculs possibles pour estimer
tous les impacts sur tous les ordres possibles. Mais d’une part en choisissant
quelques ordres au hasard, ils fournissent les mêmes résultats sur tous les
liens, et d’autre part tous les ordres fournissent les mêmes conclusions sur
le lien entre albumviews et editoviews, il est donc très probable que tous les
ordres fournissent les mêmes conclusions.
4.5
Conclusion et Discussion
Croiser ces résultats sur plusieurs ordres nous permet d’obtenir la dynamique suivante :
Les flèches vertes représentent les effets positifs, les flèches oranges
les effets neutres, et les flèches rouges dénotent d’un effet négatif. Nous
18
20. pouvons donc reformuler l’objectif : il s’agit de trouver la section UGC qui
présente le plus de flèches vertes vers la section PGC. La section à privilégier
en priorité est donc la section Album, pour laquelle l’effet est purement
positif. Dans la mesure où l’effet positif des forumposts est équivalent en
valeur absolue à l’effet négatif des forumviews/visitors, la section Forum ne
permet pas d’augmenter le trafic vers la section PGC (et donc les revenus).
Enfin, la section blog a un effet négatif, et nous éloigne donc de notre objectif.
L’étude peut être affinée par le sujet traité sur chacune des sections :
il est possible que chaque section présente une forte variabilité suivant le
sujet traité. Par exemple, un fil de conversation sur un forum dont le sujet
est la maternité peut générer beaucoup de trafic vers le contenu éditorial
qu’un fil de conversation traitant d’un sujet différent. Il est donc possible
de décliner toute notre étude sur une nouvelle dimension : le sujet traité.
Pour que cette étude soit possible, une quantité de données beaucoup plus
importante aurait été nécessaire, et sur une durée d’au moins un an (car les
sujets sont certainement cycliques).
Les revenus sont égaux au trafic sur le PGC multiplié par la valeur
moyenne d’un utilisateur sur le PGC, ajouté au volume sur l’UGC multiplié
par la valeur moyenne d’un utilisateur sur l’UGC.
L’objectif a été tout au long de l’étude de maximiser les revenus du site
en générant du trafic du contenu UGC vers le contenu PGC. Il est aussi
envisageable d’augmenter les revenus en s’appuyant sur le levier de la valeur
moyenne d’un utilisateur sur la partie UGC. Il s’agit donc de la question de
la publicité ciblée. Contrairement à son application habituelle, elle s’appuie
ici sur un contenu dynamique généré par l’utilisateur, d’où la difficulté d’y
calquer les outils habituels.
19
21. Conclusion
L’évolution vers le web 2.0 a profondément modifié le business model
des e-commerçants. Les liens entre UGC et PGC sont au centre de leurs
problématiques. Notre étude proposera une réponse à certaines de ces
questions, notamment en modélisant les liens entre les trafics sur les sections
UGC et PGC, et en améliorant le taux de transformation, d’UGC peu
générateur de valeur au PGC fortement générateur de valeur. L’objectif
est donc l’utilisation d’outils puissants de mathématiques appliquées, pour
répondre à des problématiques business réelles, qui ont potentiellement
un fort impact sur l’activité des acteurs de l’industrie de la publicité en ligne.
Les outils en question sont les séries temporelles. La 1ère étape a
consisté en la préparation des données, couplée à la 2nde qui consistait à
vérifier leur pertinence (étape sélection et preprocessing). De nombreux
allers-retours ont été effectués entre ces 2 étapes.
L’étape de transformation et de data-mining (3ème étape) a rapidement suivi. Lorsque les données sont consistantes, cette étape ne pose pas
de problème.
La 4ème étape a été la compréhension des concepts de séries temporelles, et la sélection de ceux les plus adaptés à notre étude et aux données
dont nous disposons. La 5ème étape (interprétation, évaluation) a consisté
en la calibration de la méthode sélectionnée aux données, c’est-à-dire le
choix de l’ordre des variables. C’est évidemment l’étape la plus génératrice
de valeur, et en l’occurrence c’est certainement la plus courte. Nous sommes
donc, à ce stade, en mesure de répondre aux questions : "quels sont les
liens entre les contenus UGC et PGC, et comment améliorer le taux de
20
23. 5
5.1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
Annexes
Annexe 1 : code du premier traitement
/∗ 1 ) C l e a n i n g t h e data∗/
//erase data . dta
set more o f f
clear
f o r v a l u e s i =1(1) 2000 {
i n s h e e t u s i n g "/ U s e r s / r e n u c c i f l o r e n t /Desktop/ F i l e 1 / ‘ i ’ . c s v "
rename v1 d a t e l o g
rename v2 c s t i d
rename v3 u s e r i d
rename v4 p a g e i d
rename v5 for umi d
rename v6 i s p o s t
rename v7 i s r e p l y
rename v8 s i t e i d
rename v9 i s c o n n e c t e d
rename v10 s o u s r u b r i q u e i d
rename v11 i s a l b u m p o s t
rename v12 i s b l o g p o s t
rename v13 i s m p p o s t
rename v14 e d i t o t y p e i d
rename v15 a l b u m c a t e g o r y i d
rename v16 b l o g c a t e g o r y i d
drop u s e r i d
g double time=c l o c k ( d a t e l o g , "YMDhms" )
format time %tcNN/DD/CCYY HH:M SS
_
M:
g date=d o f c ( time )
drop d a t e l o g
format date %tdNN/DD/CCYY
order c s t i d date time , f i r s t
/∗ d e f i n e d t h e " o t h e r " category w i t h o u t t h e d e f i n e d category ∗/
g o t h e r=1 i f fo rum id==. & a l b u m c a t e g o r y i d==0 & b l o g c a t e g o r y i d==0
& e d i t o t y p e i d==0
/∗ C r e a t i n g t h e number o f v i e w s f o r each date∗/
b y s o r t date c s t i d : egen t o t a l v i e w p e r I D=count ( c s t i d )
l a b e l var t o t a l v i e w p e r I D " t o t a l number o f page v i e w s p e r ID"
by date : egen t o t a l v i e w=count ( t o t a l v i e w p e r I D )
l a b e l var t o t a l v i e w " t o t a l number o f page v i e w s p e r day "
g temp_edit=1 i f
e d i t o t y p e i d !=0
b y s o r t date c s t i d : egen e d i t o v i e w p e r I D=count ( temp_edit )
b y s o r t date c s t i d : g e d i t o_v i s i t = cond (_
N==1 ,1 ,_n ) i f
e d i t o v i e w p e r I D !=0
45 g e d i t o_v i s i t o r =1 i f e d i t o_v i s i t ==1
46 b y s o r t date : egen e d i t o v i s i t o r=count ( e d i t o_v i s i t o r )
22
24. 47 l a b e l var e d i t o v i s i t o r " t o t a l number o f v i s i t o r s i n e d i t o
section "
48 g e d i t o_view=e d i t o v i e w p e r I D i f e d i t o_v i s i t ==1
49 by date : g e d i t o v i e w=sum( e d i t o_view )
50 l a b e l var e d i t o v i e w " t o t a l number o f v i e w s i n e d i t o s e c t i o n "
51 drop temp_edit e d i t o v i e w p e r I D e d i t o_v i s i t e d i t o_v i s i t o r e d i t o_
view
52
53 g temp_forum=1 i f
fo rum id !=.
54 b y s o r t date c s t i d : egen forumviewperID=count ( temp_forum )
55 b y s o r t date c s t i d : g forum_v i s i t = cond (_
N==1 ,1 ,_n ) i f
forumviewperID !=0
56 g forum_v i s i t o r =1 i f forum_v i s i t ==1
57 b y s o r t date : egen f o r u m v i s i t o r=count ( forum_v i s i t o r )
58 l a b e l var f o r u m v i s i t o r " t o t a l number o f v i s i t o r s i n forum
section "
59 g forum_view=forumviewperID i f forum_v i s i t ==1
60 by date : g forumview=sum( forum_view )
61 l a b e l var forumview " t o t a l number o f v i e w s i n forum s e c t i o n "
62 drop temp_forum forumviewperID forum_v i s i t forum_v i s i t o r forum_
view
63
64 g temp_forum_o t h e r =1 i f
fo rum id !=. | o t h e r==1
65 b y s o r t date c s t i d : egen forumviewperID_o t h e r=count ( temp_forum_
other )
66 b y s o r t date c s t i d : g forum_v i s i t_o t h e r = cond (_
N==1 ,1 ,_n ) i f
forumviewperID_o t h e r !=0
67 g forum_v i s i t o r_o t h e r=1 i f forum_v i s i t_o t h e r==1
68 b y s o r t date : egen f o r u m v i s i t o r_o t h e r=count ( forum_v i s i t o r_o t h e r )
69 l a b e l var f o r u m v i s i t o r_o t h e r " t o t a l number o f v i s i t o r s i n forum
s e c t i o n with o t h e r "
70 g forum_view_o t h e r=forumviewperID_o t h e r i f forum_v i s i t_o t h e r==1
71 by date : g forumview_o t h e r=sum( forum_view_o t h e r )
72 l a b e l var forumview_o t h e r " t o t a l number o f v i e w s i n forum
s e c t i o n with o t h e r "
73 drop temp_forum_o t h e r forumviewperID_o t h e r forum_v i s i t_o t h e r
forum_v i s i t o r_o t h e r forum_view_o t h e r
74
75 g temp_b l o g=1 i f
b l o g c a t e g o r y i d !=0
76 b y s o r t date c s t i d : egen b l o g v i e w p e r I D=count ( temp_b l o g )
77 b y s o r t date c s t i d : g b l o g_v i s i t = cond (_
N==1 ,1 ,_n ) i f
b l o g v i e w p e r I D !=0
78 g b l o g_v i s i t o r =1 i f b l o g_v i s i t ==1
79 b y s o r t date : egen b l o g v i s i t o r=count ( b l o g_v i s i t o r )
80 l a b e l var b l o g v i s i t o r " t o t a l number o f v i s i t o r s i n b l o g s e c t i o n "
81 g b l o g_view=b l o g v i e w p e r I D i f b l o g_v i s i t ==1
82 by date : g b l o g v i e w=sum( b l o g_view )
83 l a b e l var b l o g v i e w " t o t a l number o f v i e w s i n b l o g s e c t i o n "
84 drop temp_b l o g b l o g v i e w p e r I D b l o g_v i s i t b l o g_v i s i t o r b l o g_view
85
86 g temp_album=1 i f
a l b u m c a t e g o r y i d !=0
87 b y s o r t date c s t i d : egen albumviewperID=count ( temp_album )
88 b y s o r t date c s t i d : g album_v i s i t = cond (_
N==1 ,1 ,_n ) i f
albumviewperID !=0
23
25. 89 g album_v i s i t o r =1 i f album_v i s i t ==1
90 b y s o r t date : egen a l b u m v i s i t o r=count ( album_v i s i t o r )
91 l a b e l var a l b u m v i s i t o r " t o t a l number o f v i s i t o r s i n album
section "
92 g album_view=albumviewperID i f album_v i s i t ==1
93 by date : g albumview=sum( album_view )
94 l a b e l var albumview " t o t a l number o f v i e w s i n album s e c t i o n "
95 drop temp_album albumviewperID album_v i s i t album_v i s i t o r album_
view
96
97 b y s o r t date : egen p h o t o p o s t=sum( i s a l b u m p o s t )
98 l a b e l var p h o t o p o s t " t o t a l number o f p o s t i n album s e c t i o n "
99 b y s o r t date : egen b l o g p o s t=sum( i s b l o g p o s t )
100 l a b e l var p h o t o p o s t " t o t a l number o f p o s t i n b l o g s e c t i o n "
101
102 g temp_forum_s t a r t=1 i f i s p o s t==1
103 g temp_forum_r e p l y =1 i f i s r e p l y ==1
104
105 b y s o r t date : egen fo rump ost=sum( temp_forum_s t a r t )
106 l a b e l var for umpo st " t o t a l number o f new p o s t i n forum s e c t i o n "
107 b y s o r t date : egen f o ru m t h r e a d=sum( temp_forum_r e p l y )
108 l a b e l var f o r u mt h r e a d " t o t a l number o f r e p l y i n forum s e c t i o n "
109 drop temp_forum_s t a r t temp_forum_r e p l y
110
111 gen obs=
_n
112 drop i f date [ obs]==date [ obs +1]
113 keep date t o t a l v i e w e d i t o v i e w e d i t o v i s i t o r b l o g v i e w b l o g v i s i t o r
albumview a l b u m v i s i t o r p h o t o p o s t b l o g p o s t fo rump ost
f o r u m th r e a d forumview f o r u m v i s i t o r
114 o u t s h e e t u s i n g "/ U s e r s / r e n u c c i f l o r e n t /Desktop/ r e s u l t a t /1_‘ i ’ . c s v
" , comma replace
115 drop _a l l
116 }
117
118 /// F i l e 2
119
120 f o r v a l u e s i =1(1) 4678 {
121 i n s h e e t u s i n g "/ U s e r s / r e n u c c i f l o r e n t /Desktop/ F i l e 2 / ‘ i ’ . c s v "
122 rename v1 d a t e l o g
123 rename v2 c s t i d
124 rename v3 u s e r i d
125 rename v4 p a g e i d
126 rename v5 for umi d
127 rename v6 i s p o s t
128 rename v7 i s r e p l y
129 rename v8 s i t e i d
130 rename v9 i s c o n n e c t e d
131 rename v10 s o u s r u b r i q u e i d
132 rename v11 i s a l b u m p o s t
133 rename v12 i s b l o g p o s t
134 rename v13 i s m p p o s t
135 rename v14 e d i t o t y p e i d
136 rename v15 a l b u m c a t e g o r y i d
137 rename v16 b l o g c a t e g o r y i d
24
26. 138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
drop u s e r i d
g double time=c l o c k ( d a t e l o g , "YMDhms" )
format time %tcNN/DD/CCYY HH:M SS
_
M:
g date=d o f c ( time )
drop d a t e l o g
format date %tdNN/DD/CCYY
order c s t i d date time , f i r s t
/∗ d e f i n e d t h e " o t h e r " category w i t h o u t t h e d e f i n e d category ∗/
g o t h e r=1 i f fo rum id==. & a l b u m c a t e g o r y i d==0 & b l o g c a t e g o r y i d==0
& e d i t o t y p e i d==0
/∗ C r e a t i n g t h e number o f v i e w s f o r each date∗/
b y s o r t date c s t i d : egen t o t a l v i e w p e r I D=count ( c s t i d )
l a b e l var t o t a l v i e w p e r I D " t o t a l number o f page v i e w s p e r ID"
by date : egen t o t a l v i e w=count ( t o t a l v i e w p e r I D )
l a b e l var t o t a l v i e w " t o t a l number o f page v i e w s p e r day "
g temp_edit=1 i f
e d i t o t y p e i d !=0
b y s o r t date c s t i d : egen e d i t o v i e w p e r I D=count ( temp_edit )
b y s o r t date c s t i d : g e d i t o_v i s i t = cond (_
N==1 ,1 ,_n ) i f
e d i t o v i e w p e r I D !=0
g e d i t o_v i s i t o r =1 i f e d i t o_v i s i t ==1
b y s o r t date : egen e d i t o v i s i t o r=count ( e d i t o_v i s i t o r )
l a b e l var e d i t o v i s i t o r " t o t a l number o f v i s i t o r s i n e d i t o
section "
g e d i t o_view=e d i t o v i e w p e r I D i f e d i t o_v i s i t ==1
by date : g e d i t o v i e w=sum( e d i t o_view )
l a b e l var e d i t o v i e w " t o t a l number o f v i e w s i n e d i t o s e c t i o n "
drop temp_edit e d i t o v i e w p e r I D e d i t o_v i s i t e d i t o_v i s i t o r e d i t o_
view
165
166 g temp_forum=1 i f
fo rum id !=. | o t h e r==1
167 b y s o r t date c s t i d : egen forumviewperID=count ( temp_forum )
168 b y s o r t date c s t i d : g forum_v i s i t = cond (_
N==1 ,1 ,_n ) i f
forumviewperID !=0
169 g forum_v i s i t o r =1 i f forum_v i s i t ==1
170 b y s o r t date : egen f o r u m v i s i t o r=count ( forum_v i s i t o r )
171 l a b e l var f o r u m v i s i t o r " t o t a l number o f v i s i t o r s i n forum
section "
172 g forum_view=forumviewperID i f forum_v i s i t ==1
173 by date : g forumview=sum( forum_view )
174 l a b e l var forumview " t o t a l number o f v i e w s i n forum s e c t i o n "
175 drop temp_forum forumviewperID forum_v i s i t forum_v i s i t o r forum_
view
176
177 g temp_b l o g=1 i f
b l o g c a t e g o r y i d !=0
178 b y s o r t date c s t i d : egen b l o g v i e w p e r I D=count ( temp_b l o g )
179 b y s o r t date c s t i d : g b l o g_v i s i t = cond (_
N==1 ,1 ,_n ) i f
b l o g v i e w p e r I D !=0
180 g b l o g_v i s i t o r =1 i f b l o g_v i s i t ==1
181 b y s o r t date : egen b l o g v i s i t o r=count ( b l o g_v i s i t o r )
182 l a b e l var b l o g v i s i t o r " t o t a l number o f v i s i t o r s i n b l o g s e c t i o n "
183 g b l o g_view=b l o g v i e w p e r I D i f b l o g_v i s i t ==1
25
27. 184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
by date : g b l o g v i e w=sum( b l o g_view )
l a b e l var b l o g v i e w " t o t a l number o f v i e w s i n b l o g s e c t i o n "
drop temp_b l o g b l o g v i e w p e r I D b l o g_v i s i t b l o g_v i s i t o r b l o g_view
g temp_album=1 i f
a l b u m c a t e g o r y i d !=0
b y s o r t date c s t i d : egen albumviewperID=count ( temp_album )
b y s o r t date c s t i d : g album_v i s i t = cond (_
N==1 ,1 ,_n ) i f
albumviewperID !=0
g album_v i s i t o r =1 i f album_v i s i t ==1
b y s o r t date : egen a l b u m v i s i t o r=count ( album_v i s i t o r )
l a b e l var a l b u m v i s i t o r " t o t a l number o f v i s i t o r s i n album
section "
g album_view=albumviewperID i f album_v i s i t ==1
by date : g albumview=sum( album_view )
l a b e l var albumview " t o t a l number o f v i e w s i n album s e c t i o n "
drop temp_album albumviewperID album_v i s i t album_v i s i t o r album_
view
b y s o r t date : egen p h o t o p o s t=sum( i s a l b u m p o s t )
l a b e l var p h o t o p o s t " t o t a l number o f p o s t i n album s e c t i o n "
b y s o r t date : egen b l o g p o s t=sum( i s b l o g p o s t )
l a b e l var p h o t o p o s t " t o t a l number o f p o s t i n b l o g s e c t i o n "
g temp_forum_s t a r t=1 i f i s p o s t==1
g temp_forum_r e p l y =1 i f i s r e p l y ==1
b y s o r t date : egen fo rump ost=sum( temp_forum_s t a r t )
l a b e l var for umpo st " t o t a l number o f new p o s t i n forum s e c t i o n "
b y s o r t date : egen f o ru m t h r e a d=sum( temp_forum_r e p l y )
l a b e l var f o r u mt h r e a d " t o t a l number o f r e p l y i n forum s e c t i o n "
drop temp_forum_s t a r t temp_forum_r e p l y
gen obs=
_n
drop i f date [ obs]==date [ obs +1]
keep date t o t a l v i e w e d i t o v i e w e d i t o v i s i t o r b l o g v i e w b l o g v i s i t o r
albumview a l b u m v i s i t o r p h o t o p o s t b l o g p o s t fo rump ost
f o r u m th r e a d forumview f o r u m v i s i t o r
216 o u t s h e e t u s i n g "/ U s e r s / r e n u c c i f l o r e n t /Desktop/ r e s u l t a t /2_‘ i ’ . c s v
" , comma replace
217 drop _a l l
218 }
219
220 /∗ 2 ) Loading a l l t h e done f i l e s and e x p o r t i n g them as one b i g
f i l e ∗/
221
222 i n s h e e t u s i n g "/ U s e r s / r e n u c c i f l o r e n t /Desktop/ r e s u l t a t /2_1 . c s v "
223 save data , replace
224
225 f o r v a l u e s i =2(1) 4678 {
226 drop _a l l
227 i n s h e e t u s i n g "/ U s e r s / r e n u c c i f l o r e n t /Desktop/ r e s u l t a t /2_‘ i ’ . c s v "
228 append u s i n g data
229 save data , replace
230 }
26
28. 231
232 /∗ We now have s e v e r a l o b s e r v a t i o n s f o r each day , we need t o sum
them∗/
233 b y s o r t date : egen t o t a l v i e w_day=sum( t o t a l v i e w )
234 b y s o r t date : egen e d i t o v i s i t o r_day=sum( e d i t o v i s i t o r )
235 b y s o r t date : egen e d i t o v i e w_day=sum( e d i t o v i e w )
236 b y s o r t date : egen b l o g v i s i t o r_day=sum( b l o g v i s i t o r )
237 b y s o r t date : egen b l o g v i e w_day=sum( b l o g v i e w )
238 b y s o r t date : egen a l b u m v i s i t o r_day=sum( a l b u m v i s i t o r )
239 b y s o r t date : egen albumview_day=sum( albumview )
240 b y s o r t date : egen b l o g p o s t_day=sum( b l o g p o s t )
241 b y s o r t date : egen p h o t o p o s t_day=sum( p h o t o p o s t )
242 b y s o r t date : egen fo rump ost_day=sum( foru mpos t )
243 b y s o r t date : egen f o ru m t h r e a d_day=sum( f o r u m t h r e ad )
244 b y s o r t date : egen forumview_day=sum( forumview )
245 b y s o r t date : egen f o r u m v i s i t o r_day=sum( f o r u m v i s i t o r )
246 b y s o r t date : egen forumview_ t h e r_day=sum( forumview_o t h e r )
_o
247 b y s o r t date : egen f o r u m v i s i t o r_o t h e r_day=sum( f o r u m v i s i t o r_o t h e r )
248
249 gen obs=
_n
250 drop i f date [ obs]==date [ obs +1]
251 keep date t o t a l v i e w_day e d i t o v i s i t o r_day e d i t o v i e w_day
b l o g v i s i t o r_day b l o g v i e w_day a l b u m v i s i t o r_day albumview_day
b l o g p o s t_day p h o t o p o s t_day foru mpos t_day f o r u m t h r e ad_day
forumview_day f o r u m v i s i t o r_day f o r u m v i s i t o r_o t h e r_day
forumview_ t h e r_day
_o
252
253 o u t s h e e t u s i n g "/ U s e r s / r e n u c c i f l o r e n t /Desktop/ r e s u l t a t /datawork .
c s v " , comma replace
5.2
Annexe 2 : code de complétion des données
Sort_file_per_date.do
1
2
3
4
5
6
7
/∗ C r e a t e s one f i l e p e r date∗/
f o r v a l u e s i =1(1) 2000 {
clear
i n s h e e t u s i n g "/ U s e r s / d i a n e b o u c h a c o u r t /Desktop/ S e m i n a i r e / F i l e 1 /
s p l i t_l i g h t_‘ i ’ . c s v "
rename v1 d a t e l o g
rename v2 c s t i d
rename v3 u s e r i d
rename v4 p a g e i d
rename v5 for umi d
rename v6 i s p o s t
8
9
10
11
12
13
14
15 rename v7 i s r e p l y
16 rename v8 s i t e i d
17 rename v9 i s c o n n e c t e d
27
29. 18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
rename v10 s o u s r u b r i q u e i d
rename v11 i s a l b u m p o s t
rename v12 i s b l o g p o s t
rename v13 i s m p p o s t
rename v14 e d i t o t y p e i d
rename v15 a l b u m c a t e g o r y i d
rename v16 b l o g c a t e g o r y i d
g double time=c l o c k ( d a t e l o g , "YMDhms" )
format time %tcNN/DD/CCYY HH:M SS
_
M:
g date=d o f c ( time )
//we w i l l a l s o need t h e time i n minutes //
g double time1=c l o c k ( d a t e l o g , "YMDhms" )
format time1 %tcNN/DD/CCYY HH:M
_
M
drop d a t e l o g
format date %tdNN/DD/CCYY
order c s t i d date time time1 , f i r s t
sort date
sort time
f o r v a l u e s j =18540(1) 18612 {
o u t s h e e t u s i n g "/ U s e r s / d i a n e b o u c h a c o u r t /Desktop/ S e m i n a i r e / S p l i t_
l i g h t_s o r t e d / d a t e_‘ k ’_s p l i t_l i g h t_‘ i ’ . c s v " i f date == date
[ 1 ] , replace
42 drop i f date == date [ 1 ]
43 }
44 }
forum_merge.do
1
2 set more o f f
3 clear
4
5 i n s h e e t u s i n g "/ U s e r s / r e n u c c i f l o r e n t /Desktop/ d o s s i e r / t e s t s /
rextractforum . csv "
6
7 // format t h e date
8
9 g double time=c l o c k ( d a t e l o g , "YMDhms" )
10 format time %tcNN/DD/CCYY HH:M SS
_
M:
11 drop d a t e l o g
12 g date=d o f c ( time )
13 format date %tdNN/DD/CCYY
14 drop time fo rum id
15 order u s e r i d date , f i r s t
16
17 // sum o f t h e p o s t s and t h e r e p l i e s by day
18
19 g temp1=1 i f i s p o s t==" True "
20 drop i s p o s t
21 g temp2=1 i f i s r e p l y==" True "
28
30. 22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
drop i s r e p l y
g i s p o s t=temp1
drop temp1
g i s r e p l y=temp2
drop temp2
b y s o r t date : g foru mpost=sum( i s p o s t )
b y s o r t date : g f o r u m r e p l y=sum( i s r e p l y )
// d r o p p i n g t h e i n t e r m e d i a r v a l u e s
drop i f date [_n]==date [_n+1]
drop i s p o s t i s r e p l y u s e r i d
// s a v i n g
o u t s h e e t u s i n g "/ U s e r s / r e n u c c i f l o r e n t /Desktop/ d o s s i e r / t e s t s /
forum . c s v " , comma replace
39
40 c l e a r
41
42 // delete a l l t h e l i n e s t h a t don ’ t have i s r e p l y o r i s p o s t = 1
and s a v e t h e new f i l e
43
44 s e t more o f f
45
46 f o r v a l u e s i =1(1) 2000 {
47
48 i n s h e e t u s i n g "/ U s e r s / r e n u c c i f l o r e n t /Desktop/ F i l e 1 / ‘ i ’ . csv "
49 rename v1 d a t e l o g
50 rename v3 u s e r i d
51 rename v5 for umi d
52 rename v6 i s p o s t
53 rename v7 i s r e p l y
54
55
56 drop v2 v4 v8 v9 v10 v11 v12 v13 v14 v15 v16
57
58 keep i f i s p o s t==1 | i s r e p l y ==1
59
60 o u t s h e e t u s i n g "/ U s e r s / r e n u c c i f l o r e n t /Desktop/ r e s u l t a t /forum ‘ i ’ .
c s v " , comma r e p l a c e
61
62 drop _a l l
63 }
64
65 // merge a l l t h e f i l e s , t o forum_merge . c s v
66
67 i n s h e e t u s i n g "/ U s e r s / r e n u c c i f l o r e n t /Desktop/ r e s u l t a t /forum1 . c s v
"
68 g d o u b l e time=c l o c k ( d a t e l o g , "YMDhms" )
69 f o rmat time %tcNN/DD/CCYY HH:M SS
_
M:
70 drop d a t e l o g
71 s a v e data , r e p l a c e
29
31. 72
73 f o r v a l u e s i =2(1) 1894 {
74 drop _a l l
75 i n s h e e t u s i n g "/ U s e r s / r e n u c c i f l o r e n t /Desktop/ r e s u l t a t /forum ‘ i ’ .
csv "
76 g d o u b l e time=c l o c k ( d a t e l o g , "YMDhms" )
77 f o rmat time %tcNN/DD/CCYY HH:M SS
_
M:
78 drop d a t e l o g
79 append u s i n g data
80 s a v e data , r e p l a c e
81 }
82
83
84 drop _a l l
85
86 i n s h e e t u s i n g "/ U s e r s / r e n u c c i f l o r e n t /Desktop/ d o s s i e r / t e s t s /
r e x t r a c t f o r u m . csv "
87
88 // r e p l a c e True and F a l s e by 0 and 1
89
90 g temp1=1 i f i s p o s t==" True "
91 drop i s p o s t
92 g temp2=1 i f i s r e p l y==" True "
93 drop i s r e p l y
94 g i s p o s t=temp1
95 drop temp1
96 g i s r e p l y=temp2
97 drop temp2
98
99 g d o u b l e time=c l o c k ( d a t e l o g , "YMDhms" )
100 f o rmat time %tcNN/DD/CCYY HH:M
_
M
101 drop d a t e l o g
102
103 append u s i n g data
104 s a v e data , r e p l a c e
105
106 /∗ we then s u p p r e s s t h e i n f o r m a t i o n s t h a t a r e p r e s e n t 2 t i m e s
107 drop i f u s e r i d [_n]== u s e r i d [_n−1] & fo rum id [_n]==fo rum id [_n−1] &
time [_n]==time [_n−1] & i s p o s t [_n]== i s p o s t [_n−1] & i s r e p l y [_n
]== i s r e p l y [_n−1]
108
109 => problem : i f we drop l i n e s , a c t u a l l y we a r e d r o p p i n g l i n e s
o n l y from t h e r e x t r a c t f o r u m . c s v . So we mustn ’ t .
110 BUT : good news : i t l o o k s l i k e t h e r e x t r a c t f o r u m and t h e
s p l i t t e d f i l e s don ’ t o v e r l a p (
111 s i n c e t h e number o f dropped l i n e s i s t h e same i f we don ’ t merge
with t h e s p l i t t e d f i l e s ) .
112 So , we can compute t h e data about t h e forum w i t h o u t c a r i n g i f we
count some i n f o r m a t i o n s 2 t i m e s .
113
114 ∗/
115 o u t s h e e t u s i n g "/ U s e r s / r e n u c c i f l o r e n t /Desktop/ d o s s i e r / t e s t s /
forum_merge . csv " , comma r e p l a c e
116
30
32. 117 // c he ck ed by hand −> OK ( same number o f l i n e s a s DataWork . do
with code un−commented )
5.3
1
2
3
4
5
6
7
Annexe 3 : code traitement VAR
// g e n e r a t e t=date ( date , "DMY" )
//format t %d
//////////////////// G e t t i n g t h e r e s u l t s ///////////////////
clear
set more o f f
u s e "/ U s e r s / d i a n e b o u c h a c o u r t /Dropbox/ s e m i n a i r e / time s e r i e s (
Diane and F l o r e n t ) /Data R e s u l t s / R e s u l t a t_f i n a l . dta "
8 tsset t , daily
9 drop date
10
11 set m a t s i z e 10000
12 //log u s i n g "/ U s e r s / d i a n e b o u c h a c o u r t /Dropbox/ s e m i n a i r e / time
s e r i e s ( Diane and F l o r e n t ) /Diane_
VAR/Var_a n a l y s i s . l o g " ,
replace
13
14 //Working with l o g s
15 f o r e a c h var o f v a r l i s t ∗ {
16 gen log_‘ var ’=l o g ( ‘ var ’ )
17 }
18 drop log_t
19 drop i n 73
20
21
22 //////////////////// PREESTIMATION OF LAG ///////////////////
23
24 v a r s o c log_albumpost log_b l o g p o s t log_e d i t o v i s i t o r s log_
e d i t o v i e w s log_f o r u m v i s i t o r s log_forumviews log_b l o g v i s i t o r s
log_b l o g v i e w s log_a l b u m v i s i t o r s log_albumviews log_f o r u m p o s t s
log_f o r u m t h r e a d s , maxlag ( 5 )
25
26
27 //////////////////// DF TESTS ///////////////////
28
29 //ADF t e s t pour log v a r i a b l e s
30 f o r e a c h var i n log_albumpost log_b l o g p o s t log_t o t a l v i e w s log_
e d i t o v i s i t o r s log_e d i t o v i e w s log_f o r u m v i s i t o r s log_forumviews
log_b l o g v i s i t o r s log_b l o g v i e w s log_a l b u m v i s i t o r s log_
albumviews log_f o r u m p o s t s log_f o r u m t h r e a d s {
31 d i " ‘ var ’ "
32 d f u l l e r ‘ var ’ , t r e n d l a g s ( 1 )
33 }
34
35 //////////////////// VAR ///////////////////
36 var l o g_albumpost l o g_b l o g p o s t l o g_e d i t o v i s i t o r s l o g_e d i t o v i e w s
l o g_f o r u m v i s i t o r s l o g_forumviews l o g_b l o g v i s i t o r s l o g_
31
33. b l o g v i e w s l o g_a l b u m v i s i t o r s l o g_albumviews l o g_f o r u m p o s t s l o g
_f o r u m t h r e a d s , l a g s ( 1 )
37
38 //////////////////// MATRIX COVARIANCE VARIANCE ANALYSIS ///////
////////////
39 // Matrix o f e r r o r v a r i a n c e and c o v a r i a n c e
40 e r e t u r n l i s t
41 m atrix MatCov=e ( Sigma )
42
43 // Packages needed
44 s s c d mat2txt
45 s s c i n s t a l l mat2txt
46
47 // N o r m a l i s a t i o n o f t h e matrix
48 mata
49 //Get t h e matrix
50 MatCov = s t_matrix ( " MatCov " )
51
52 //Get t h e max v a l u e
53 maxMat = max( MatCov )
54
55 // No rm al is ed g l o b a l l y
56 MatCovNorm = MatCov/maxMat
57
58 //Get t h e max v a l u e p e r row
59 maxMatrow = rowmax ( MatCov )
60 // No rm al is ed by row
61 MatCovNormbyVar = J ( 1 2 , 1 2 , 0 )
62 f o r ( i =1; i <=12; i ++) {
63 MatCovNormbyVar [ i , ] = MatCov [ i , ] /maxMatrow [ i ]
64 }
65
66 //Output t h e matrix i n t o S t a t a ( from Mata t o S t a t a )
67 s t_matrix ( " MatCovNorm " , MatCovNorm )
68 s t_matrix ( " MatCovNormbyVar " , MatCovNormbyVar )
69
70 end
71
72 //Output t h e matrix i n t o t e x t f i l e , t o be c o p i e d i n E x c e l
73 mat2txt , matrix ( MatCov ) s a v i n g ( / U s e r s / d i a n e b o u c h a c o u r t /Dropbox/
s e m i n a i r e / time s e r i e s ( Diane and F l o r e n t ) /Diane_
VAR/
MatCovlag1 )
74 mat2txt , matrix ( MatCovNorm ) s a v i n g ( / U s e r s / d i a n e b o u c h a c o u r t /
Dropbox/ s e m i n a i r e / time s e r i e s ( Diane and F l o r e n t ) /Diane_
VAR/
MatCovNormlag1 )
75 mat2txt , matrix ( MatCovNormbyVar ) s a v i n g ( / U s e r s / d i a n e b o u c h a c o u r t /
Dropbox/ s e m i n a i r e / time s e r i e s ( Diane and F l o r e n t ) /Diane_
VAR/
MatCovNormbyVarlag1 )
76
77
78
79 o r d e r l o g_b l o g p o s t l o g_albumpost l o g_f o r u m t h r e a d s l o g_f o r u m p o s t s
l o g_e d i t o v i e w s l o g_e d i t o v i s i t o r s l o g_albumviews l o g_
a l b u m v i s i t o r s l o g_b l o g v i e w s l o g_forumviews l o g_b l o g v i s i t o r s
32
34. l o g_f o r u m v i s i t o r s
80 i r f s e t "/ U s e r s / d i a n e b o u c h a c o u r t /Dropbox/ s e m i n a i r e / time s e r i e s (
Diane and F l o r e n t ) /Diane_
VAR/IRFLg1 . i r f "
81
82 ///////////// ORDER 1 //////////////////
83 // i r f c r e a t e o r d e r 1 s t e p 1 , s t e p ( 1 ) o r d e r ( l o g_f o r u m v i s i t o r s l o g_
b l o g v i s i t o r s l o g_forumviews l o g_b l o g v i e w s l o g_a l b u m v i s i t o r s
l o g_albumviews l o g_e d i t o v i s i t o r s l o g_e d i t o v i e w s l o g_
f o r u m p o s t s l o g_f o r u m t h r e a d s l o g_albumpost l o g_b l o g p o s t )
84 // i r f c r e a t e o r d e r 1 s t e p 5 , s t e p ( 5 ) o r d e r ( l o g_f o r u m v i s i t o r s l o g_
b l o g v i s i t o r s l o g_forumviews l o g_b l o g v i e w s l o g_a l b u m v i s i t o r s
l o g_albumviews l o g_e d i t o v i s i t o r s l o g_e d i t o v i e w s l o g_
f o r u m p o s t s l o g_f o r u m t h r e a d s l o g_albumpost l o g_b l o g p o s t )
85 // i r f c r e a t e o r d e r 1 s t e p 8 , s t e p ( 8 ) o r d e r ( l o g_f o r u m v i s i t o r s l o g_
b l o g v i s i t o r s l o g_forumviews l o g_b l o g v i e w s l o g_a l b u m v i s i t o r s
l o g_albumviews l o g_e d i t o v i s i t o r s l o g_e d i t o v i e w s l o g_
f o r u m p o s t s l o g_f o r u m t h r e a d s l o g_albumpost l o g_b l o g p o s t )
86 // i r f c r e a t e o r d e r 1 s t e p 1 5 , s t e p ( 1 5 ) o r d e r ( l o g_f o r u m v i s i t o r s l o g_
b l o g v i s i t o r s l o g_forumviews l o g_b l o g v i e w s l o g_a l b u m v i s i t o r s
l o g_albumviews l o g_e d i t o v i s i t o r s l o g_e d i t o v i e w s l o g_
f o r u m p o s t s l o g_f o r u m t h r e a d s l o g_albumpost l o g_b l o g p o s t )
87 i r f c r e a t e o r d e r 1 s t e p 1 0 , s t e p ( 1 0 ) o r d e r ( l o g_f o r u m v i s i t o r s l o g_
b l o g v i s i t o r s l o g_forumviews l o g_b l o g v i e w s l o g_a l b u m v i s i t o r s
l o g_albumviews l o g_e d i t o v i s i t o r s l o g_e d i t o v i e w s l o g_
f o r u m p o s t s l o g_f o r u m t h r e a d s l o g_albumpost l o g_b l o g p o s t )
88
89 ///////////// ORDER 2 //////////////////
90 // i r f c r e a t e o r d e r 2 s t e p 1 , s t e p ( 1 ) o r d e r ( l o g_b l o g p o s t l o g_
albumpost l o g_f o r u m t h r e a d s l o g_f o r u m p o s t s l o g_e d i t o v i e w s l o g_
e d i t o v i s i t o r s l o g_albumviews l o g_a l b u m v i s i t o r s l o g_b l o g v i e w s
l o g_forumviews l o g_b l o g v i s i t o r s l o g_f o r u m v i s i t o r s )
91 // i r f c r e a t e o r d e r 2 s t e p 5 , s t e p ( 5 ) o r d e r ( l o g_b l o g p o s t l o g_
albumpost l o g_f o r u m t h r e a d s l o g_f o r u m p o s t s l o g_e d i t o v i e w s l o g_
e d i t o v i s i t o r s l o g_albumviews l o g_a l b u m v i s i t o r s l o g_b l o g v i e w s
l o g_forumviews l o g_b l o g v i s i t o r s l o g_f o r u m v i s i t o r s )
92 // i r f c r e a t e o r d e r 2 s t e p 8 , s t e p ( 8 ) o r d e r ( l o g_b l o g p o s t l o g_
albumpost l o g_f o r u m t h r e a d s l o g_f o r u m p o s t s l o g_e d i t o v i e w s l o g_
e d i t o v i s i t o r s l o g_albumviews l o g_a l b u m v i s i t o r s l o g_b l o g v i e w s
l o g_forumviews l o g_b l o g v i s i t o r s l o g_f o r u m v i s i t o r s )
93 // i r f c r e a t e o r d e r 2 s t e p 1 5 , s t e p ( 1 5 ) o r d e r ( l o g_b l o g p o s t l o g_
albumpost l o g_f o r u m t h r e a d s l o g_f o r u m p o s t s l o g_e d i t o v i e w s l o g_
e d i t o v i s i t o r s l o g_albumviews l o g_a l b u m v i s i t o r s l o g_b l o g v i e w s
l o g_forumviews l o g_b l o g v i s i t o r s l o g_f o r u m v i s i t o r s )
94 i r f c r e a t e o r d e r 2 s t e p 1 0 , s t e p ( 1 0 ) o r d e r ( l o g_b l o g p o s t l o g_
albumpost l o g_f o r u m t h r e a d s l o g_f o r u m p o s t s l o g_e d i t o v i e w s l o g_
e d i t o v i s i t o r s l o g_albumviews l o g_a l b u m v i s i t o r s l o g_b l o g v i e w s
l o g_forumviews l o g_b l o g v i s i t o r s l o g_f o r u m v i s i t o r s )
95
96 ///////////// ORDER 3 //////////////////
97 // i r f c r e a t e o r d e r 4 s t e p 8 , s t e p ( 8 ) o r d e r ( l o g_b l o g p o s t l o g_
albumpost l o g_f o r u m t h r e a d s l o g_f o r u m p o s t s l o g_e d i t o v i e w s l o g_
albumviews l o g_e d i t o v i s i t o r s l o g_a l b u m v i s i t o r s l o g_b l o g v i e w s
l o g_b l o g v i s i t o r s l o g_forumviews l o g_f o r u m v i s i t o r s )
33
35. 98 // i r f c r e a t e o r d e r 4 s t e p 1 5 , s t e p ( 1 5 ) o r d e r ( l o g_b l o g p o s t l o g_
albumpost l o g_f o r u m t h r e a d s l o g_f o r u m p o s t s l o g_e d i t o v i e w s l o g_
albumviews l o g_e d i t o v i s i t o r s l o g_a l b u m v i s i t o r s l o g_b l o g v i e w s
l o g_b l o g v i s i t o r s l o g_forumviews l o g_f o r u m v i s i t o r s )
99 i r f c r e a t e o r d e r 3 s t e p 1 0 , s t e p ( 1 0 ) o r d e r ( l o g_b l o g p o s t l o g_
albumpost l o g_f o r u m t h r e a d s l o g_f o r u m p o s t s l o g_e d i t o v i e w s l o g_
albumviews l o g_e d i t o v i s i t o r s l o g_a l b u m v i s i t o r s l o g_b l o g v i e w s
l o g_b l o g v i s i t o r s l o g_forumviews l o g_f o r u m v i s i t o r s )
100
101 // o r d e r 2 :
102 // l o g_b l o g p o s t l o g_albumpost l o g_f o r u m t h r e a d s l o g_f o r u m p o s t s l o g
_e d i t o v i e w s l o g_e d i t o v i s i t o r s l o g_albumviews l o g_
a l b u m v i s i t o r s l o g_b l o g v i e w s l o g_forumviews l o g_b l o g v i s i t o r s
l o g_f o r u m v i s i t o r s
103
104 // o r d e r 1 :
105 // l o g_f o r u m v i s i t o r s l o g_b l o g v i s i t o r s l o g_forumviews l o g_
b l o g v i e w s l o g_a l b u m v i s i t o r s l o g_albumviews l o g_e d i t o v i s i t o r s
l o g_e d i t o v i e w s l o g_f o r u m p o s t s l o g_f o r u m t h r e a d s l o g_albumpost
l o g_b l o g p o s t
106
107 // o r d e r abandonne :
108 // l o g_f o r u m t h r e a d s l o g_f o r u m p o s t s l o g_albumpost l o g_b l o g p o s t l o g
_e d i t o v i e w s l o g_albumviews l o g_e d i t o v i s i t o r s l o g_
a l b u m v i s i t o r s l o g_b l o g v i s i t o r s l o g_b l o g v i e w s l o g_
f o r u m v i s i t o r s l o g_forumviews
109
110 // o r d e r 3
111 // l o g_b l o g p o s t l o g_albumpost l o g_f o r u m t h r e a d s l o g_f o r u m p o s t s l o g
_e d i t o v i e w s l o g_albumviews l o g_e d i t o v i s i t o r s l o g_
a l b u m v i s i t o r s l o g_b l o g v i e w s l o g_b l o g v i s i t o r s l o g_forumviews
l o g_f o r u m v i s i t o r s )
112
113 ///////////////////// IRF STUDY ///////////////////
114
115 i r f c r e a t e o r d e r 3 s t e p 7 , s t e p ( 7 ) o r d e r ( l o g_b l o g p o s t l o g_albumpost
l o g_f o r u m t h r e a d s l o g_f o r u m p o s t s l o g_e d i t o v i e w s l o g_
albumviews l o g_e d i t o v i s i t o r s l o g_a l b u m v i s i t o r s l o g_b l o g v i e w s
l o g_b l o g v i s i t o r s l o g_forumviews l o g_f o r u m v i s i t o r s )
116
117 i r f graph i r f , i r f ( o r d e r 3 s t e p 7 ) i m p u l s e ( l o g_f o r u m p o s t s ) r e s p o n s e
( l o g_e d i t o v i e w s )
118
119 l o g u s i n g "/ U s e r s / d i a n e b o u c h a c o u r t /Dropbox/ s e m i n a i r e / time s e r i e s
( Diane and F l o r e n t ) /Diane_
VAR/ IR FA nal ys is . l o g " , r e p l a c e
120
121 f o r e a c h var1 o f v a r l i s t l o g_b l o g p o s t l o g_albumpost l o g_
f o r u m t h r e a d s l o g_f o r u m p o s t s l o g_e d i t o v i e w s l o g_albumviews l o g
_e d i t o v i s i t o r s l o g_a l b u m v i s i t o r s l o g_b l o g v i e w s l o g_
b l o g v i s i t o r s l o g_forumviews l o g_f o r u m v i s i t o r s {
122
f o r e a c h var2 o f v a r l i s t l o g_b l o g p o s t l o g_albumpost l o g_
f o r u m t h r e a d s l o g_f o r u m p o s t s l o g_e d i t o v i e w s l o g_albumviews
l o g_e d i t o v i s i t o r s l o g_a l b u m v i s i t o r s l o g_b l o g v i e w s l o g_
b l o g v i s i t o r s l o g_forumviews l o g_f o r u m v i s i t o r s {
34
36. 123
i r f t a b l e i r f , i r f ( o r d e r 3 s t e p 7 ) i m p u l s e ( ‘ var1 ’ ) response ( ‘ var2
’ ) t i t l e ( " ‘ var1 ’ −>‘var2 ’ " )
}
124
125 }
126
127 l o g c l o s e
128
129 i r f c r e a t e o r d e r 2 s t e p 7 , s t e p ( 7 ) o r d e r ( l o g_b l o g p o s t l o g_albumpost
l o g_f o r u m t h r e a d s l o g_f o r u m p o s t s l o g_e d i t o v i e w s l o g_
e d i t o v i s i t o r s l o g_albumviews l o g_a l b u m v i s i t o r s l o g_b l o g v i e w s
l o g_forumviews l o g_b l o g v i s i t o r s l o g_f o r u m v i s i t o r s )
130
131 l o g u s i n g "/ U s e r s / d i a n e b o u c h a c o u r t /Dropbox/ s e m i n a i r e / time s e r i e s
( Diane and F l o r e n t ) /Diane_
VAR/ I RF An a ly si s 2 . l o g " , r e p l a c e
132
133 f o r e a c h var1 o f v a r l i s t l o g_b l o g p o s t l o g_albumpost l o g_
f o r u m t h r e a d s l o g_f o r u m p o s t s l o g_e d i t o v i e w s l o g_e d i t o v i s i t o r s
l o g_albumviews l o g_a l b u m v i s i t o r s l o g_b l o g v i e w s l o g_forumviews
l o g_b l o g v i s i t o r s l o g_f o r u m v i s i t o r s {
134
f o r e a c h var2 o f v a r l i s t l o g_b l o g p o s t l o g_albumpost l o g_
f o r u m t h r e a d s l o g_f o r u m p o s t s l o g_e d i t o v i e w s l o g_
e d i t o v i s i t o r s l o g_albumviews l o g_a l b u m v i s i t o r s l o g_
b l o g v i e w s l o g_forumviews l o g_b l o g v i s i t o r s l o g_f o r u m v i s i t o r s
{
135
i r f t a b l e i r f , i r f ( o r d e r 2 s t e p 7 ) i m p u l s e ( ‘ var1 ’ ) response ( ‘ var2
’ ) t i t l e ( " ‘ var1 ’ −>‘var2 ’ " )
136
}
137 }
138
139 l o g c l o s e
5.4
Annexe 4 : Résultats de l’IRF
Les tableaux reprennent les réponses aux chocs sur une plage de 7 jours.
Les intervalles de confiance à 95% sont aussi notés.
log_blogpost->log_blogpost
+--------------------------------------------+
|
|
(1)
(1)
(1)
|
| step |
irf
Lower
Upper
|
|--------+-----------------------------------|
|0
| 1
1
1
|
|1
| .432482
.141971
.722992
|
|2
| .091227
-.812857
.995312
|
|3
| .059969
-.823434
.943373
|
|4
| .115361
-.714938
.94566
|
|5
| .111505
-.679139
.902149
|
|6
| .039947
-.665331
.745225
|
|7
| -.03256
-.940158
.875037
|
+--------------------------------------------+
35