Category Archives: Twitter

L’esprit critique, c’est tellement old-school

I’m sorry. I did not start it, but I may have contributed to it” disait S.M. Ong au début du mois en évoquant les “fake-news”.

Ces dernières heures, j’ai pas mal échangé sur twitter – ce qui n’est pourtant pas dans mes habitudes – suite à un tweet que j’avais posté, en début de semaine,

J’avais trouvé l’article amusant, vraiment bien écrit, donc je l’ai mentionné sur Twitter. Tout comme je peux mentionner une carte intéressante sur le site du New York Times ou une statistique intéressante sur le site du Guardian. Après à peine une heure, j’ai été surpris du nombre de personnes qui semblaient avoir pris ça au premier degré. Et ça ne s’est pas démenti avec le temps, même si j’ai posté rapidement un tweet rappelant que scienceinfo.fr était un site parodique…

J’ai reçu un tweet cet après-midi où on tentait de m’apprendre que c’était un “hoax”

ce qui m’a interpelé car pour moi, un “hoax” et un article sur un site parodique, ce sont des choses différentes. Puis on m’a dit que je n’avais pas à twitter des choses pareils, des “fakes”, ayant un compte twitter certifié (tout comme Jean-Marc Morandini, ou…. Le Gorafi)

J’avoue que tous ces échanges m’ont interpelé. Surtout dans le contexte des débats sur les “fake news” qui fleurissent ces jours-ci. Mais comme s’interrogeait S.M. Ong, “what’s fake news and what’s satirical fake news these days“, la distinction est-elle simple à faire ?

Hoax et “fake news”

Les “hoax”, parfois traduit “infaux“, est un mot anglais qui désigne un canular créé notamment à des fins malveillantes, comme le rappelle wikipedia. Ces “hoax”, ou “fake news” nous ont fait entrer dans une ère de post-vérité, “post-truth”, désigné mot de l’année 2016 par l’Oxford Dictionary, comme le notait Alison Flood.

Benoît avait une réflexion intéressante à ce sujet

Quand on lit un article sur son téléphone cellulaire, on en voit pas le site, le contexte général, on ne voit plus que l’article. On ne voit pas que le site a tendance à publier des articles satiriques. On ne voit même pas le site sur lequel on est arrivé….

Les sites parodiques (ou satiriques)

Ce qui m’a surpris, suite à mon tweet, c’est que si je mentionne un article publié dans Le Gorafi, personne ne crie au scandale, personne ne me rappelle que “c’est un hoax, attention”. Ici, nous ne sommes pas dans le “hoax”, nous sommes dans l’humour, comme beaucoup de journaux le pratiquent, ainsi que le rappelle Isabel Ermida dans “Language and Humour in the Media” (qui revient d’ailleurs sur l’origine du mot “hoax”). L’exemple historique le plus connu est The Onion, en ligne depuis 20 ans (mais qui existait avant sous format papier, depuis 1988). Elle Hunt mentionne d’ailleurs que The Onion n’est pas un site de “fake news”. En France, la référence depuis 2012 est Le Gorafi. Comme le rappelle le site “Tous les articles relatés ici sont faux (jusqu’à preuve du contraire) et rédigés dans un but humoristique”. Quand on lit “Toulouse: il se fait abattre de 46 balles dans le corps pour avoir demandé un ‘pain au chocolat’”  on se doute que ce n’est pas sérieux (ou sinon, ça mérite réflexion…) ou encore “il parvient enfin à utiliser le théorème de Pythagore dans sa vie professionnelle“. Peut-on parler de “hoax” ?

En 1998, Lyle Zapato avait fait un test auprès de collégiens qui avaient cru, à l’unanimité (certes, il n’y avait que 25 enfants), un article sur internet qui mentionnait une espèce animale malheurement menacée, les “octopus paxarbolis”, c’est à dire des pieuvres qui vivent dans les arbres, raconté dans “Help Save The Endangered Pacific Northwest Tree Octopus From Extinction!“.

Il est étonnant qu’il soit aussi simple de croire vraie une histoire manifestement fausse. Mais comme le disait Jean-Noël, oui, ça fait sérieux, il y a même une photo de train, et de raclette !

Les sites “sérieux”… et l’esprit critique

C’est marrant parce que l’an passé, mon fils avait justement une introduction critique aux médias, au collège. On lui expliquait qu’il y avait des sites “sérieux”. Mais force est de constater que publier dans un journal renommé ne veut rien dire… Par exemple, le même jour que mon tweet sur la raclette, lefigaro.fr publiait “le français se hisserait au 3e rang des langues les plus parlées au monde

L’article en question parlait d’une “étude” (non citée) mais qui renvoyait vers un article paru dans quebec.huffingtonpost.ca, ce dernier étant un peu plus prudent en annonçant “le français serait la troisième langue du monde selon une nouvelle étude“. Tout en restant assez flou. Mais le titre de l’article de lefigaro.fr est complètement faux ! Le Français reste (relativement) peu parlé, mais reste une langue “puissante”, selon un terme qui n’est pas expliqué (il faut chercher un peu pour trouver plus de détails, sur kailchan.ca). Au même moment, liberation.fr publiait “on s’est aperçu que Google Maps mentait“, repris sur lci.fr. Comme le notait Philippe Reka, dire “on a demandé à des chercheurs chinois, japonais, indiens de faire des tests, et on a pu voir que si vous êtes à Pékin, vous avez une certaine frontière dans l’Himalaya et qu’à Delhi, vous en avez une autre“, c’est un peu fort de café… Il suffit en effet d’aller (depuis son canapé) sur http://google.cn/maps/ ou http://www.google.co.in/maps/. Pour reprendre l’animation de Philippe Rivière, on voit assez simplement que les tracés des frontières diffèrent (comme tout ceux qui jouent avec google maps le savent depuis longtemps)

Mais je m’arrête là, acrimed.org revient très régulièrement sur les “vraies news”, qui n’en sont souvent pas…

Comme le rappellait Benjamin Herold le meilleur antidote à la gratuité de l’information en ligne (mais je rajouterais à la course au buzz que l’on retrouve partout, y compris dans les sites – et les journaux – “sérieux”) est une culture de la pensée critique. C’est également ce que rappelle “Evaluating Information: The Cornerstone of Civic Online Reasoning” paru voilà déjà 5 ans.

Je vais continuer à publier sur mon compte twitter des liens vers des informations sérieuses, mais aussi des articles qui m’ont amusés. Tout comme sur mon blog, lorsque je publie “coffee and productivity” montrant que le café augmente la productivité,

ou “cigarette and life expectancy” montrant qu’avec le même raisonnement, fumer fait vivre plus longtemps…

J’ai envie de croire que les personnes qui suivent mon fil twitter ou qui viennent sur mon blog savent faire preuve d’esprit critique. Et apprécient que l’on soit sérieux, mais aussi satirique, à l’occasion, voie que l’on fasse preuve d’humour…  Cela dit, la frontière entre “humour” et “sérieux” est complexe à définir… spurious-correlations c’est sérieux ?

Monthly Review

A (nonexhaustive) list of writings worth reading, discovered in September.

Continue reading Monthly Review

Monthly Review

A short list of writings worth reading, discovered this month

Continue reading Monthly Review

Monthly Review

A few years back, I had a somewhere else chronicle on this blog, that was (almost) a daily review of interesting things I found on the internet. I did stop since it was simply a duplicate of links that I post on twitter. Nevertheless, people keep asking me to run it again. So I will try, but only on a monthly basis. It might be a bit long, with some old posts (today, there are two weeks of tweets), but again, please let me know if missed something worth reading…

Continue reading Monthly Review

Popularité, ou reconnaissance ?

Assez souvent, quand on est enseignant/chercheur, on remplit des demandes de financements, ou de promotions, on nous demande de parler de l’impact de nos travaux et de notre reconnaissance. La première fois que j’ai fait face à cette question, c’était il y a 5 ans, à Montréal, pour une demande de financement auprès du NSERC, au niveau fédéral. Sur le moment, la question m’a déstabilisé. Non pas qu’elle n’ait pas de sens, mais qu’on me la pose à moi. Qui suis-je pour savoir si ce que je fais a le moindre impact ?

Classiquement, l’impact, on le mesure avec les citations par exemple. On peut alors utiliser l’indice synthétique de Hirsch. Ces citations, elles commencent à figurer sur nos CV, ou tout du moins sur les CV en ligne que sont google scholarorcidresearch gateacademia,  etc. Un autre endroit où on retrouve la reconnaissance, et c’est probablement lié aux citations, ce sont les invitations en séminaire ou en conférence, les demandes pour faire partie de jurys, etc. Je devrais préciser que vu de l’extérieur, ce qu’on voit, ce sont les invitations “acceptées”. Les invitations en conférence sont probablement une information importante, mais là par exemple – pour des raisons personnelles – je me retrouve à décliner des invitations. Mon activité va baisser, mais comment l’interpréter ? Dans la liste, on devrait peut être rajouter les invitations pour arbitrer des publications d’articles dans des journaux et revues. On est alors très clairement identifié comme un pair sur un thème précis.

Mais pour comprendre en quoi nous avons un quelconque impact, il est toujours agréable quand on nous informe sur la raison qui a motivé une invitation. Malgré tout, c’est assez rare. Je pourrais toutefois noter quelques cas, où on nous invite pour présenter un papier particulier dans une conférence, ou quand l’éditeur explique brièvement la raison de la sollicitation, lors d’une demande d’arbitrage. Un exemple récent que je pourrais mentionner (histoire d’illustrer un peu mon billet) est l’invitation que j’avais reçu, en début d’année, pour aller parler à la Bank of England,

Plus précisément, comme le dit l’invitation (je reprends)

The Chief Economists Workshop is an annual forum that we host to facilitate high-level discussion between the Chief Economists from around thirty-five of the major central banks in the world, and academic and professional experts. The format is a mixture of presentations, discussion and debate. As such it offers a great opportunity for you to interact with and influence leading policymakers. There is no media presence. I attach a copy of the programmes from the previous two years to give you an idea of the format.

Many of us in the Bank of England are avid followers of your Twitter feed, and your ability to offer multi-disciplinary insights to current policy problems. I would like to invite you to give a talk along these lines – for example on actuarial and statistical insights into Big Data. It is not necessary to have a formal paper. The idea is more to discuss the issues and generate debate. We would be looking for a presentation of about 45 minutes followed by 45 minutes of Q and A and can schedule your talk to fit in with your commitments.

J’ai eu le plaisir d’être invité avec Andrew Gelman (NYU) et Andrew Lo (MIT). J’ai l’impression qu’un universitaire devrait être humilié de recevoir une telle lettre d’invitation (même si mon compte twitter est l’occasion de partager des informations en lien avec les thèmes de recherche qui m’intéressent – la statistique, l’économie, l’assurance, les risques, le climat, etc). Mais si on y pense deux minutes, la raison invoquée a l’avantage d’être honnête, et finalement flatteuse (on m’invite pour mon côté polymathe, ce qui me fait infiniment plaisir). Je doute que beaucoup de monde lise mes papiers (vu le prix qu’il faut payer pour y accéder, ça se comprendrait presque), et j’ai l’impression que quand on me demande de venir parler dans une conférence, c’est pour partager des connaissances, donner mon point de vue sur tel ou tel point, sur lequel j’ai pu réfléchir au cours de mes travaux de recherche.

Plus récemment, l’autre jour, j’étais particulièrement fier d’être dans les 10 scientifiques (médecins et scientifiques au sens large) les plus populaires sur Twitter, selon Science & Avenir,

D’autant plus que je n’avais rien demandé. Il y a plusieurs mois, j’avais dit – peut être un peu maladroitement – que je ne participerais plus à ces concours, à ces classements (en l’occurrence on nous invitait à participer à un répertoire des meilleurs blogs de sciences). Mais c’est toujours valorisant d’apprendre qu’on est “populaire”. Comme tous les chercheurs, on marche à la carotte, et avoir une médaille est une forme de reconnaissance qui fait forcément plaisir.

Ce n’est certes pas une reconnaissance par mes pairs, mais c’est malgré tout une forme de reconnaissance. Qui permet d’être interrogé (et cité) dans une enquête qui revient sur le financement de la couverture des catastrophes naturelles en France, une chronique sur les cat bonds, ou sur les investissements en un super-calculateur sur le climat. Cette reconnaissance en dehors du cercle classique (et très restreint) d’experts de sa propre discipline a du bon. Pour élargir son champ de vision tout d’abord et avoir un point de vue très différent. Mais aussi parfois rencontrer des gens en dehors du monde académique. Qui ne s’embarrassent pas à payer des éditeurs scientifiques pour avoir accès aux articles, mais qui sont d’avides lecteurs des blogs, qui ont souvent des données, ou des problèmes intéressants à nous soumettre. En revenant sur le financement du régime cat’nat en France pour les besoins de l’entrevue, on a commencé avec des collègues à retravailler sur la prévention. Personnellement, ce sont toujours ces discussions qui me permettent de trouver des thèmes de recherche (en plus de la lecture d’articles académiques finissant par un “tiens, il devrait être possible de regarder…” ou un “personnellement, j’aurais plus fait…”). Et j’adore ça ! peut être parce que c’est toujours l’occasion d’apprendre de nouvelles choses.

Et si je tweetais en anglais pour une mauvaise raison

Sur Twitter, assez naturellement, j’ai tendance à tweeter en anglais. J’ai toujours eu l’impression qu’en anglais, la limite des 140 caractères était moins contraignante. Qu’en anglais, la même chose pouvait être dite de manière plus concise.

Histoire de vérifier cette vague intuition, je suis allé chercher des livres sur Gutenberg. Le plus simple est de récupérer un livre en français, au format texte (txt), de compter le nombre de symboles, et de trouver le même livre en anglais. La fonction, à partir d’un code de livre, ressemble à ça

> cpte=function(no){
+     url0=paste(
+         "http://www.gutenberg.org/cache/epub/",
+         no,"/pg",no,".txt",sep="")
+     download.file(url0,destfile="u.txt")
+     s=scan("u.txt",what="character")
+     sum(nchar(s))
+ }

Par exemple, pour David Copperfield, de Dickens, le  code pour la version originale, en anglais, est

> gb=766

et en français, il faut récupérer 2 fichiers

> fr_a=17868
> fr_b=17869

Aussi,

> g=cpte(gb)
essai de l'URL 'http://www.gutenberg.org/cache/epub/766/pg766.txt'
Content type 'text/plain; charset=utf-8' length 1992535 bytes (1.9 MB)
=================================================
downloaded 1.9 MB

Read 288181 items
> f=cpte(fr_a)+cpte(fr_b)
essai de l'URL 'http://www.gutenberg.org/cache/epub/17868/pg17868.txt'
Content type 'text/plain; charset=utf-8' length 1161492 bytes (1.1 MB)
=================================================
downloaded 1.1 MB

Read 191311 items
essai de l'URL 'http://www.gutenberg.org/cache/epub/17869/pg17869.txt'
Content type 'text/plain; charset=utf-8' length 1135661 bytes (1.1 MB)
=================================================
downloaded 1.1 MB

Read 186515 items

le ratio du nombre de caractère en anglais, et en français, est de l’ordre de 90%. Autrement dit, la version anglaise contient 10% de caractères en moins que la version française,

> g/f
[1] 0.9090498

Si on regarde une pièce de théâtre, comme Othello, la version anglaise est 25% plus courte que la version française.

> fr=18179
> gb=1793
> g=cpte(gb)
essai de l'URL 'http://www.gutenberg.org/cache/epub/1793/pg1793.txt'
Content type 'text/plain; charset=utf-8' length 188634 bytes (184 KB)
=================================================
downloaded 184 KB

Read 24951 items
> f=cpte(fr)
essai de l'URL 'http://www.gutenberg.org/cache/epub/18179/pg18179.txt'
Content type 'text/plain; charset=utf-8' length 239158 bytes (233 KB)
=================================================
downloaded 233 KB

Read 36157 items
> g/f
[1] 0.746805

Plus généralement pour les pièces de théâtre de Shakespeare, on valide mon intuition : les versions en anglais sont toujours plus courtes que les versions en français,

Pour faire ce graphique, on peut utiliser la trentaine de livres que j’ai regardé, à l’aide du fichier

> download.file(
+ "http://freakonometrics.free.fr/livre.RData",
+ "livre.RData")
essai de l'URL 'http://freakonometrics.free.fr/livre.RData'
Content type 'text/plain' length 1095 bytes
=================================================
downloaded 1095 bytes

> load("livre.RData")

La base ressemble à ça

> base
           nom        FR      UK language   ratio
1  3 Mousquet.    1110255 1156011       FR 104.12
2  Dorian Grey     398653  404799       UK 101.54
3  Pierre-Jean     248299  228838       FR  92.16
4      Odyssée     691648  651044       GR 118.17
5       Iliade     550924  514953       GR  74.45
6  Jules César     157726  105685       UK  67.00
7      Macbeth     160571   96276       UK  59.95
8      Othello     189984  141881       UK  74.68
9       Hamlet     275629  145380       UK  52.74
10   Com. Mép.     115583   97704       UK  84.53
11  Ant.-Cléo.     185806  130857       UK  70.42
12   Rom.-Jul.     195273  126323       UK  64.69
13    Roi Lear     196185  124483       UK  63.45
14  Sganarelle      50408   63387       FR 125.74
15 OliverTwist     778914  770784       UK  98.95
16  D.Copperf.    1808770 1644262       UK  90.90
17    Assomoir     585237  565444       FR  96.61
18   T. Raquin     351525  353837       FR 100.65
19    20000 L.     745559  518932       FR  69.60
20    80 Jours     367388  329073       FR  89.57
21  5 Semaines     491510  483289       FR  98.32
22 CentreTerre     362617  370584       FR 102.19
23          93     585073  637499       FR 108.96
24  Notre Dame     885048  928256       FR 104.88
25   Jane Eyre     922233  919521       UK  99.70
26    Possédés    1241293 1293319       RU 104.19
27 Guerre-Paix    2409360 2739725       RU 113.71
28     Corbeau      27884   21886       UK  78.48
29  Mme Bovary     585237  565444       FR  96.61

Si on visualise tous les titres, et pas seulement les pièces de Shakespeare, on obtient

Autrement dit, la différence n’est pas aussi significative qu’elle y paraissait. Plus troublant, si on regarde les livres écrit en anglais (en rouge ci-dessous) on observe effectivement que la version française est plus longue. Par contre, pour les livres écrits en français (en bleu), la version anglaise est sensiblement de la même taille…

A suivre donc…

Quand les chercheurs cherchent leur voie (voix) sur Twitter

Il y a plusieurs semaines (mois?), avec @3wen et @pareto35, on nous avait demandé d’écrire un petit article sur Twitter, et sur l’usage de Twitter dans le monde de la recherche, pour la Newsletter du CREM (Centre de Recherche en Économie et Management, de l’Université de Rennes 1, et de l’Université de Caen). On avait envoyé l’article, et je n’y avais plus pensé. Or cet après-midi, @alisag1728 publiait “25 Interesting Observations About How Academics Use Twitter” qui éclairait le débat, et qui m’a refait pensé à cet article. Comme les discussions semblent à nouveau d’actualité, j’en profite donc pour mettre en ligne la note qu’on avait écrite… Tous les commentaires sont les bienvenus (en gardant en mémoire que l’article était écrit à destination de chercheurs qui entendent peut être parler de Twitter, à l’occasion, mais qui ne voient pas – a priori – pourquoi y être présent).
Continue reading Quand les chercheurs cherchent leur voie (voix) sur Twitter

Academic Tweets

Almost four years ago, I did tweet, for the very first time of my life:

The goal was to mention a post on my blog (on optimal control). 15,000 tweets later, I wanted to get back on my experience on Twitter, trying to explain why I tweet, and why academics have some kind of legitimacy to be on Twitter (from my understanding of the goal of such a platform) and they should use it by having a Twitter account.

  • How Twitter works?

I guess I should explain what Twitter is, in case some readers do not know it. “Trying to explain Twitter to the non-user has become something like the tech world’s Arthurian challenge, a seemingly impossible task that no-one is able to fully complete” as explained in Theorizing Twitter: Narratives and Identity. But let me try. Rules on Twitter are simple,

  1. you need to create an account, on http://twitter.com/. You have 160 characters for a short bio, and you can use an avatar
  2. then you can starting tweeting, i.e. posting online messages with 140 characters
  3. you can also be passive, and simply follow some discussions… you can type something in the search window, and then you will see all the tweets containing that word (or that sentence), like why do people tweetIt is also possible to follow some hastags (following the symbol) such as , or some people (following the @ symbol) such as @freakonometrics (that’s me).
  4. if you like my tweets (posted under the name @freakonometrics), you can follow me, and I will appear in your so-called TL (or timeline). You will become my follower (of course, if I find your tweets interesting, I might follow you back).
  5. you can also include a picture (one, only). Since a link will be mentioned in your tweet (automatically generated by Twitter), you will have less than 140 characters to tweet.
  6. you can add html links, that will be shortern by Twitter.
  7. if you include a link on a video (say on http://vimeo.com/) or a song (say on https://soundcloud.com/), then, the object will appear directly in the tweet: followers will see the movie, not only the tweet with a link, see e.g.

Then, there are (almost official) codes

  1. you can retweet a tweet, which means forwarding another user’s tweet to all of your followers. RTs are not endorsement (neither are tweets actually)… You can use the retweet button, or use the old fashion RT (for re-tweet) or MT (for modified tweet) if you had to shorten a tweet. This is important to mention how you get some information in case you want to share it with you followers (it is called a mention, and it is like using a reference in a research paper). Another way of acknowledging the account who originally shared the content being tweeted is to HT the account (hat tip)
  2. you can reply to a tweet using the reply button. If you reply to one of my tweets, your tweet will start with @freakonometrics and only your followers also following me will see it in their tweet list. If you want to share the answer with everyone, the tweet should start with a dot, .@freakonometrics. It is also possible to send direct (private) messages… It is also possible to poke another account if you want to make sure that someone reads your tweet.
  3. it is possible to favorite a tweet, by clicking the yellow star next to the message. If a lot of the people I follow favorite a tweet, it will be more likely to appear in the discover window, even if I do not follow that account. It might also be interesting to favorite tweets since they can appear in some widgets you have on your blog. Keep in mind that some tweets are promoted, meaning that some company pay to have more exposure… promote and favorite are quite different…
  4. there are some strange customs, such as the #FF for follow Friday. On Friday, you can share usernames of your favorite twitterers, the accounts you find interesting. I am not a social person, so I do not use that, and I do not know how to react when someone #FF me (usually I simply favorite, which is a simple way to say thank you without tweeting a stupid “thanks“)
  5. because of the 140 character constraint, a lot of strange words can be used on Twitter, such as “OH” which most often means “overheard“… just go on google to find more…

and there are more unofficial codes (here, it will be rather subjective, so comments are opened if you want to criticize)

  1. when someone RT, MT or HT one of your tweets, it is common to favorite the tweet. Maybe common is not appropriate here : it is something people with a lot of followers did to me a few years ago, which helped me, somehow, to get more popular, and I also try to do it.
  2. do not steal tweets: you should always mention the account that originally shared the content. From an ethical point of view, that’s an obvious statement. But from a technical point of view, with the 140 character rule, it can be complex. I mean, if you want to add “HT @freakonometrics” you have only 120 characters left, so either you shorten the tweet, or you keep the tweet as it was and you tweet right after something like “previous tweet, HT @freakonometrics
  3. it is possible to delete a Tweet. I do not know if there are rules here, because I’ve seen a lot of tweets with invalid urls, or big typos… I do delete some tweets. My rules are : (1) if I see a typo (or a problem with the url), I have the right to correct it, so I can write a new tweet, an delete the previous one; (2) if  a tweet arouses controversy (and if it was not the goal, say that with 140 characters, I got misunderstood), then I delete the tweet: I am not on Twitter to argue, only to share some contents (we’ll get back on that point later on).

See http://ryan.cordells.us/s13dh/, or An Introduction to Social Media for Scientists, for some advice on how to start  tweeting. So now that we’ve seen how Twitter works, how can we use it? As academics.

  • Are Academics on Twitter ?

Only « one in forty scholars are active on Twitter » as estimated in Priem et al. in 2011. And let’s face it honestly : academics are mainly skeptical about Twitter. For most of them, it’s for their kids, or perhaps for graduate students (if they have some ideas about what Twitter is). But not researchers. I follow (and am followed) by a lot of graduate students, PhD’s or postdocs, and a few more senior researchers. Most of those senior, prominent scientists, share extremely interesting information! I do not discuss the quality here, simply the fact that, indeed, not everyone is willing to go on Twitter. And be active.

But if not everyone is on Twitter, important people are. At least, in Economics. In January, I wanted to go to the conference of the American Economic Association, in Philadelphia, but I could not do it. That’s where the job market for PhD students in Economics took place. But it was extremely active on Twitter (you got updates following frequently the #ASSA2014 hashtag). From my perspective (maybe also the people I follow), it looked like everyone there was on Twitter during that (major) event.

  • Twitter as a Bookmark

I do spend a lot of time online, reading articles, for work, for fun, and sometimes, I’d like to keep tracks of those articles, or posts on blogs, or articles on http://arxiv.org/, etc. The first motivation to use Twitter is because I need bookmarks. With Twitter, those bookmarks are public. It does not mean that I endorse what I read, it should be understood as « I found that interesting, and I want to bookmark it, to find it, someday ». A few years ago, it was difficult to get back old tweets, like those I posted in 2010 or 2011, so I decided to start my Somewhere Else chronicle on this blog: I simply post all the tweets I wrote, to mention readings worth reading, outside my blog, somewhere else. Like that one:

It is clearly not perfect. I got a lot of tweets with questions following that tweet (but I did not answer them, I shared the graph, I did not create it). The point was « that seems to be interesting, and I’d be glad to find it if someday I want to spend more time on linguistic issues ».

As most academics, I do read a lot. And one of our duties is to share information… This was mentioned in Priem and Costello (2010), « the professional impact of Twitter may be particularly pronounced for scholars given that sharing information is a central component of their work » (see also Letierce et al (2010)). They estimated that 30% tweets sent by academics contains a hyperlink to a peer-reviewed resource (usually a pdf file of a research paper). And it is not necessarily a paper published online 24 hours ago : it can also be a paper rediscovered accidentally, or a technical report written a few decades ago that has just been scanned. @coulmont went back on a « strange experience » (as he defined it) a few months ago, when I (re)discovered a post published on his blog almost one year before, tweeted it, and then a buzz started on that old post. At least, that’s what he told me, we’ll never know for sure if this was because of me, or not (I doubt it actually, there were a lot of good reasons to rediscover that post).

Traditionally, academic visibility is measured using citations, meaning that some work has been accepted by (so called) peers, in the scientific community. Academics need to write to have an impact. But a lot of time is spent on reading. This reading activity is missed by standard citation counts (unless you publish a review, for instance).  On Twitter, you can comment, even (briefly) discuss a publication, some tricks on computer codes, share graphical visualization, etc. It is not like posting an anonymous comment on some scientific blog (actually, several blogs do not have open comments any more). On Twitter, there is some kind of credibility, and not only from the academic resume : people know you and follow you. According to Scott Wagers, « good content is propagated rapidly, bad content is not ». Of course, it is not that simple. There is a time for tweeting, clearly. If you tweet when someone with a lot of followers, then things might grow exponentially fast, and within a few hours, a tweet can be RTd a dozen, a hundred, a thousand times (we’ll get back on the viral effect of Twitter at the end of this post).

  • Live-Tweet in Conferences

Another popular use among academics is to use Twitter for live-tweets, see e.g. How People are using Twitter during conference or the interesting “who is going to read 12,000 tweets?!“. But as mentioned on a lot of blogs, one should be careful about live-tweeting. As recalled in Live-tweeting at academic conferences, « with great power comes great responsibility ». Live tweeting is supposed to be fun, but stay polite, and respectful. And use quotation marks. Getting back on the so-called Twittergate (see An Idea is a Dangerous Thing to Quarantine #twittergate), Aaron Bady, used that interesting image, about Twitter within the academic community « I conjured up the image of an appropriate cantankerous old professor yelling at a bunch of punk tweeters to get off his lawn, like Clint Eastwood in Gran Twittarino ».

Now, to be honest, I have been involved in some live-tweet only once, while I was giving a talk, at the World Social Science Forum, a few months ago

But I usually do not live-tweet, I do not feel comfortable with it (I prefer to take notes in my book, even if I might also write a post on my blog later on, but I always ask the speaker if I can quote what he or she said). « Some worried that having someone tweet their insights before they publish might increase the likelihood that they will be scooped by a colleague — although others regarded that notion as slightly paranoid » as mentioned in the Academic Twitterazzi. « The debate over live tweeting at conferences is, in many ways, about control and access: who controls conference space, presentation content, or access to knowledge? » wrote Roopika Risam in Conference Live Tweets: Twitter Good or #Twittergate?.

Beyond those pseudo-ethical considerations, there is also a more practical reason: in mathematics, it is quite difficult to live-tweet. I mean, it is difficult to write equations in Twitter, and a graph without the formal model is usually useless. There might some interest when there are computation issues, to share a visualization for instance (there were interesting experiences in R conferences this summer, e.g. in Lyon).

  • Twitter to Meet People

It is also possible to start discussions on Twitter. But again, I am not a social guy, so I usually do not like that. I mean, if I share a link to an article, it is because I found it interesting. If someone wants me to go further, or to discuss it, why not…. but Twitter is not the place. I prefer my blog, where I do not have the 140 character constraint.

An important issue in Twitter is to speed up connections between scientists. There is nothing new here. Traditionally, scientists have always interacted with other scientists, in sort of one-to-one interactions, attending seminars, conferences, discussion with colleagues. Using the words of Priem et al (2013), « informal conversations have moved out of the faculty lounge to online social media platforms », such as Twitter. One of the interests is to join somehow a larger « virtual department » with colleagues that are not next door, but who might be far away and in other areas of research. One can even discuss with real people, outside academia. Since I have interests in risk modeling, finance, climate, computer science, mathematics, I can also discuss with people working on stock markets, in insurance companies, in data visualization startups, even journalists. The awesome point is that it becomes possible to interact with open minded researchers. As mentioned in Fox (2012) – slightly changing the title – « blogging [and micro blogging] changed how economics share ideas ».

The first step in the scientific process is to find ideas, new ideas or concepts to investigate, datasets to describe. Following interesting people on Twitter can be the first step. The final step is to communicate findings and to disseminate. The time when researchers were studying the table of contents of journals to find interesting articles is behind us. When disseminating on a blog, we can share codes, graphs, datasets, links to additional material. On Twitter, we have to deal with the 140 character constraint, which makes it hard. One idea can be to use a nice visualization, a graph, a map.

  • Personal versus Institutional Accounts

On Twitter, I mainly follow researchers, only a few institutional accounts. For instance, I like the @HarvardBiz to get updates about their blog, and recent articles. It’s like using RSS feed (except that I am not a big fan of RSS). I might also confess that I have been asked, a long time ago, to be the Twitter Manager of the @StatFr account, of the French Statistical Society. But I quickly faced two problems: it is very difficult to be active on two accounts at the same time, especially when they share the same goal (here, it was just tweeting links to interesting articles, related to statistics – as well as activities of the association). And it is difficult to get a clear guideline. I mean, on my Twitter account, I tweet whatever I like. After a few days experiencing the @StatFr account, I had to argue with the President of the Society because of a link I mentioned in one of my tweet, that was too controversial (but, from my point of view, was mentioning interesting statistical issues). So I have to confess I prefer to follow people, more than institutions or groups.

On the other hand, in all you can tweet, academics behind the nature chemistry Twitter account (@NatureChemistry) went back on 4 years of experience. Among lessons learnt, collectively, it was mentioned that with the 140 characters constraint, « clarity is a virtue », which is indeed of the the things you learn with Twitter. Furthermore, they mention that following important researchers in your scientific community on Twitter is interesting. Not only you can discover interesting information. With personal ccounts, you can also learn more personal information. For instance, it’s always a pleasure to get news and updates from Emiliano,

 

  • The Impact of Twitter in Standard Process of Academic Dissemination

For academics still skeptical about the use of Twitter, I should probably mention Shuai et al. (2012) which proved (following 4,600 papers) that papers mentioned on Twitter are more downloaded, and more cited (see also Eysenbach1 (2011)). Dissemination using Twitter can help to reach other researchers, in your area, but also journalists, people working in the industry or for governmental organization, even members of parliament… It is hard to follow the sequence, but here how it looks like

publication of an academic paper
(in a journal, or on arxiv)

tweet mentioning the paper

mention in a popular blog

mention in a newspaper

citations
(etc.)

Things can go viral easily with Twitter (again, we’ll get back on this point more specifically soon). But still. It is difficult to clearly understand what  happened (in the newspaper, the researchers are usually mentioned, as well as the blog sharing the information, but that’s all…)

  • Having Fun on Twitter

A few weeks ago, I saw a nice graph, on a blog

and I wanted to reproduce it. With a code as simply as possible. Sure, it’s a geek’s thing to try to write codes as short as possible. But that’s fun, really

 

It was not worst writing a post on my blog, and with a couple of tweets, I keep tracks of that interesting mathematical problem.

People on Twitter try also – sometimes – to have fun, following some hastags, such as, a few weeks ago, e.g.

(see also here for a collection of great tweets) or more recently #SixWordPeerReview,

  • Gaining Time to Discover Interesting Information

So, clearly, you can save time to discover interesting publications, simply by following interesting people. But, as you may imagine, the difficult point is to follow your TL. If you follow, say 400 people, each of them did tweet, on average 5 times in a given day (including RTs), that makes 2000 tweet to read, if you go on Twitter once a day. Much more if you go on Twitter once a week. To save some time, somehow, it is possible to use dedicated websites such as http://tweetedtimes.com/. Based on your TL and people you follow, it is possible get a subset of popular tweets and links shared those people you follow. I believe that a similar algorithm is used in the https://twitter.com/i/discover page (probably more based on tweets favored than RTd).

  • My Own Experience on Twitter

Now, to share a bit of my personal experience, I should probably mention that I do not have a cell phone, neither a tablet. So when I go on Twitter, it has to be on my laptop. It might be while cooking and preparing the lunch box for the kids, in the morning, just to get quickly the news from the night. It might also be in the office, when some code is running, and I have to wait. Most of the night it’s in the evening. Once the kids are asleep.

If I look at my tweets, you can see that I RT a lot of tweets (the old way), and a few Twitter accounts (even if I have the feeling that only tweets published more than two years ago appear here)

  • Going viral on Twitter

To conclude, I should warn everyone that Twitter is addictive. And it can be exhilarating and dangerous when things start going viral… For instance, a few days ago, I did post a simple map (without proper references, it was mentioned in another tweet since there were two references, one for each map), and then, in 24 hours, there were almost 1,000 RTs (not to mentioned tweets mentioning that tweets that were also RTd),

The interesting side is that it was a nice opportunity to understand how this viral process works, and @3wen published an interesting post on that experience.

  • Possible Conclusion (?)

Being on Twitter is an amazing experience. I met (at least virtually) a lot of people, that I would have never been interacting with if they were not on Twitter. David Monniaux, editor of the great blog http://david.monniaux.free.fr/dotclear/ used to be on Twitter (@monniaux), but – according to the legend I read on Twitter – being on Twitter was time consuming (David used to interact a lot), so he decided to quit. Thus, I am glad that I do have neither a smartphone, nor a tablet! Because I would spend hours on Twitter! With moderation, Twitter is a great tool. But to be honest, it’s a little bit crowded… it is a place to be, but it’s hard to have a discussion with other people, with the 140 characters. I really believe it’s not the place to ask questions, and start a discussion. This is why I also try to go on other microblogging plateforms to interact, more confidential… But I won’t mention them here, I’d like to keep it that way.

  • To Go Further

Twitter for academic and engagement
Using Twitter for Curated Academic Content
Beyond citations: scholars’ visibility on the social Web
Live-tweeting at academic conferences
An Introduction to Social Media for Scientists
How People are using Twitter during conference
Using Twitter During an Academic Conference
Presenting for Twitter at Conferences
An Idea is a Dangerous Thing to Quarantine #twittergate
My Norm is More Normal Than Yours: Academic Tweeting and Loose Fish
“But who is going to read 12,000 tweets?!” How researchers can collect and share relevant social media content at conferences
Don’t Have Time to Tweet-bollocks! Twitter can even save you time as a scientist.
The role of Twitter in the life cycle of a scientific publication, and the associated infographics
Can tweets predict citations? (metrics of social impact based on Twitter and correlation with traditional metrics of scientific impact)
All you can tweet
Twitter as tool for strengthen a scientific community
How and why scholars cite on Twitter
Prevalence and use of Twitter among scholars (on http://figshare.com/)
Twitter as a tool for conservation education and outreach: what scientific conferences can do to promote live tweeting
Understanding how Twitter is used to spread scientific messages

Research, and honesty

Some great thoughts about research… via Twitter

Wait… that one was actually a true story

Qui se ressemble se suit (sur Twitter au moins)

Un nouveau billet pour reprendre une analyse marrante faite par @3wen  (Ewen Gallic, qui travaille à Montréal alors que je profite de la Suisse). Suite à l’analyse amusante des trolls de Twitter, j’avais lancé l’idée qu’il pourrait être amusant de regarder parmi les députés français (que j’avais un peu suivis l’autre jour), qui tweete avec qui. Ewen a eu la bonne idée de regarder sur  http://lelab.europe1.fr/ ce qui lui a permis de récupérer la liste des comptes Twitter des députés, en France. L’idée est simple: parmi les députés français, on regarde qui suit qui. Quelqu’un de très suivi sera au centre du nuage, alors que quelqu’un qui se contente de suivre sera sur le bord (intensément connecté au reste du nuage). Pour les personnes peu familières, Twitter n’est pas Facebook: on n’a pas des “amis“, il y a des gens que l’on suit parce qu’ils racontent des choses qui peuvent nous intéresser.

En utilisant gephi Ewen a ensuite pu visualiser le graphique des interconnexions entre les députés.

Sans grande surprise, les députés de gauche suivent essentiellement les députés de gauche, et inversement. Quelques gros comptes font la passerelle entre les deux groupes parlementaires. En fait, si on regarde en détail (voire sur le fichier image complet), on peut observer un peu mieux ce qui se passe.

Bon, la grande difficulté est de lire ces interactions correctement. En particulier, on ne peut pas conclure (à la vue seule du graphique) que Cécile Duflot est de gauche ! Ce que cela nous dit est que ce qu’elle raconte intéresse les gens de gauche (ou en tous cas les députés du Parti Socialiste), et pas du tout les gens de droite (les députés de l’UMP) ! On notera aussi que le centre n’existe pas. Sur Twitter en tous cas. Et si on regarde tout en bas, à droite, on retrouve le Front National, et on a la confirmation que ce que raconte le Front National n’intéresse personne !

A la recherche des groupes de trolls sur Twitter

Il y a quelques jours @olihb avait mis en ligne sur son blog http://olihb.com/ une très jolie carte permettant de visualiser les personnes (ou les comptes) impliquées sur Twitter sur les manifestations récentes au Québec (la carte était basée sur gephi). Beaucoup de monde twittait avec des hashtags, et l’idée était d’utiliser les plus classiques et les plus populaires pour identifier les comptes actifs (#ggi#manifencours, etc). Mais la semaine passée j’avais l’impression que le débat s’était durci, avec beaucoup plus de trolls dans les discussions.

Bref, le principe est que les trolls évoluent souvent en petits groupes, donc avec @3wen on a voulu voir si on pouvait identifier facilement les groupes de trolls (sans pour autant faire du sentiment analysis, juste visualiser des personnes qui se suivent beaucoup entre elles, les connivences entre twittos, i.e. du suivi mutuel).

La méthodologie est simple. On a deux bases à notre disposition. Un première contient tous les tweets contenant #ggi entre le 7 juin à 1 heure du matin et le 8 à minuit 45 (soit 14,700 tweets). La seconde contient tous les tweets contenant #ggi entre le 12 juin à 23 heures 30 et le 14 juin à 17 heures (soit 14,784 tweets). Ah oui, les heures sont GMT. Plus précisément, on a la fréquence d’arrivée suivante

Les durées d’observations sont courtes, mais l’idée est que si une personne a tweetté au moins une fois pendant ces périodes, on les a dans notre base, et ça suffit pour les suivre. On ne va pas étudier l’intensité de la mise en ligne de tweets. Je ne rentre pas dans le détail du code, mais c’est basé sur les fonctions présentées dans un précédant billet, et toujours avec la même librairie,

require("RJSONIO")

Sur des deux bases, i.e. 29,484 tweets, on récupère un ensemble de 6,556 twittos uniques (mais répartis dans deux listes: ceux qui ont tweeté le 7 et ceux qui ont tweeté le 14). Pour toutes ces personnes, on est allé voir qui les suivaient. Sur le principe, c’est simple, mais on fonctionne avec des API qui imposent des limites horaires. Bref, il faut bricoler. Pour une personne, on récupère avec la fonction suivante la liste de ses followers,

recuperefollowers=function(id,nbrequetes){
followers=try(scan(paste(
"http://api.twitter.com/1/followers/ids.json?cursor=-1&user_id=",
id,sep=""),what = "character", encoding="latin1"))
if(is.null(attr(followers,"condition"))){
followers=paste(followers[1:length(followers)],collapse=" ")
followers=fromJSON(followers, method = "C")
id_followers=followers$id
next_cursor=followers$next_cursor_str
nbrequetes=nbrequetes+1
plusDe5000=FALSE
while(nbrequetes<150 & next_cursor!="0" &
is.null(attr(followers,"condition"))){
plusDe5000=TRUE
followers=scan(paste(
"http://api.twitter.com/1/followers/ids.json?cursor=",
next_cursor,"&user_id=",id,sep="")
,what = "character", encoding="latin1")
followers=paste(followers[1:length(followers)],collapse=" ")
followers=fromJSON(followers, method = "C")
id_followers=c(id_followers,followers$id)
next_cursor=followers$next_cursor_str
nbrequetes=nbrequetes+1
}
if(plusDe5000 & nbrequetes>=149){
return(c(list(),nbrequetes,TRUE))
}else{
return(c(list(id_followers),nbrequetes,FALSE))
}}else{
nbrequetes=nbrequetes+1
print(paste("Probleme rencontre avec ",id,sep=""))
return(c(list("PROBLEME"),nbrequetes,FALSE))}}

On peut ensuite lancer cette fonction sur tous les identifiants qu’on a récupéré, et on stocke tout le monde dans une (petite) base

temp=try(recuperefollowers(
lesIDAParcourir[unID_index],nbrequetes))
lesFollowers=temp[[1]]
resul=cbind(rep(lesIDAParcourir[unID_index]
,length(lesFollowers)),lesFollowers)
nbrequetes=temp[[2]]
refaire=temp[[3]]
Sys.sleep(runif(1,1,1.5))
compte=compte+1
write.table(resul,paste("auto_resul_",
compte,".txt",sep=""),sep=";")

Si on veut que ça tourne, il faut juste faire patienter un heure après avoir fait 150 requêtes. Bref, dans la boucle, on met une petite fonction qui temporise,

if(nbrequetes>148){
nbrequetes=1
Sys.sleep(60*60+60*trunc(runif(1,2,3))) }

Une fois créées les 6,500 bases de nos 6,500 comptes, contenant la liste de tous les followers, on va les agréger (fort heureusement, on n’avait pas les  gros comptes avec plus d’un million de followers). La liste se récupère avec

N=list.files("id/petits")

D’ailleurs, pour recoller les 6,500 bases ensemble, Ewen suggérait le code suivant, beaucoup beaucoup plus rapide qu’une gros boucle,

recupere_petits_fichiers=function(x){
temp=read.table(paste("id/petits/",x,sep=""),
header=TRUE,sep=";",comment.char="",
check.names=FALSE,colClasses=
c("character","character"))
colnames(temp)=list("id_twittos","id_follower")
head(temp)

On fait ensuite une récupération des followers pour la première base de tweets, et une autre pour ceux de la seconde. Les deux listes sont obtenues avec le code suivant

present_avant_temp=temp[which(
temp$id_twittos%in%lesID_avant),]
if(nrow(present_avant_temp)>0){
present_avant_temp=
present_avant_temp[which(
present_avant_temp$id_follower%in%lesID_avant),]}
else{
present_avant_temp=NULL}

present_apres_temp=
temp[which(temp$id_twittos%in%lesID_apres),]
if(nrow(present_apres_temp)>0){present_apres_temp=
present_apres_temp[
which(present_apres_temp$id_follower%in%lesID_apres),]}
else{present_apres_temp=NULL}
return(c(list(present_avant_temp),
list(present_apres_temp),
list(nbfollowers=nrow(temp))))

Pour constituer notre grosse base, la ruse est d’utiliser non pas une boucle sur tous les petites bases, mais

resul=lapply(N,recupere_petits_fichiers)
liens_avant=data.frame(do.call(
"rbind",lapply(resul,function(x) x[[1]])),
stringsAsFactors=FALSE)
liens_apres=data.frame(do.call(
"rbind",lapply(resul,function(x) x[[2]])),
stringsAsFactors=FALSE)

On a ainsi récupéré une liste avec plusieurs centaines de milliers de comptes Twitter. On a retenu seulement ceux qui avaient twitté avec le hashtag #ggi. On a ainsi pu constituer, pour nos 6,556 twittos une base de personnes qui tweettent, et de personnes qui les suivent (et qui ont twitté pendant cette – courte – période avec le hastag #ggi). Bref, une grosse matrice de correspondance de qui suit qui. On a pu le faire sur les deux bases. C’est précisément la différence entre les deux bases que l’on a cherché à visualiser, et gephi semble permettre de comparer les bases dans le temps. A gauche, on a le nuage de connexions entre les comptes pour la première période, et à droite pour la seconde.

Bon, le premier est plus compact, mais on voit qu’il y a des différences, en particulier sur les bords, que ce soit en haut

ou à droite du nuage,

Dans les deux cas, on voit que plein de petits comptes sont venus se greffer au nuage, souvent en suivant quelqu’un qui le suit en retour. Et parfois, ce sont les seuls connexions qu’ils ont (qui utilisent le hashtag #ggi). Ce sont ces comptes qui pourraient constituer les nouveaux trolls qu’on espérait identifier. L’avantage est qu’on a les noms de tous ces comptes (on ne les a pas mis sur le graphique), mais dans un second temps, on va aller regarder ce qu’on fait précisément ces comptes. Peut-être interprétons nous mal ces graphiques, qui représentent une arrivée de nouveaux comptes, et que cette dynamique est la même pour tous les nouveaux comptes, qui commencent par de faibles connexions, et ensuite vont s’étoffer au fur et à mesure. Ce qu’il faut que l’on comprenne aussi c’est pourquoi ils sont tous aussi rapprochés. Ils semblent être suivis par des personnes qui sont suivis pas les mêmes personnes. Ce qui laisse à penser que l’on a effectivement identifié une certaine catégorie de comptes.
On peut reprendre les graphs avec une résolution plus fine, avant

et après

ou alors en changeant les options, avant

à comparer avec après

On voit peut être encore plus clairement sur ces deux dernières images les nouveaux comptes se greffer sur le graph existant. Si la qualité ne suffit pas, des graphiques (très) haute résolution sont téléchargeables (15Mo chacun), avant etaprès (avec les identifiants cette fois). Sinon, en promenant la souris sur le dessin dessous, on voit encore mieux la différence,
 

Maintenant – pour être complètement honnête – sur la lecture des graphs, j’avoue ne pas avoir tout bien compris. Les représentations semblent claires, mais j’aurais bien aimé être certain d’avoir compris la construction proposée par gephi avant de les mettre en ligne. Car si on regarde sur moins ce compte, on comprend que l’algorithme permet effectivement de bien mettre en avant les réseaux. Parmi les illustrations les plus frappantes, la figure suivante montre des interconnections avec Facebook à gauche, et purement aléatoire à droite (illustration trouvé sur le site de gephi),

La grande difficulté est alors de représenter spatialement les groupes, comme le notent Gastner et Newman dans The Spatial Structure of Networks, Watts et Strogatz dansCollective dynamics of ‘small-world’ networksou encore Nisha et Venkatesh dans Small worlds: How and why. Mais pour etre tout à fait complet, je renverrais aussi vers la thèse de doctorat de Jure Leskovec, intituléeDynamics of large networks ainsi qu’au livre (intégralement téléchargeable) Networks, Crowds, and Markets: Reasoning About a Highly Connected World de David Easley et Jon Kleinberg. Bref, on a découvert un outils probablement très riche, mais il va nous falloir du temps pour comprendre ce qu’il fait vraiment.

Do you still have time to sleep ?

Last week, @3wen (Ewen) helped me to write nice R functions to extract tweets in R and build datasets containing a lot of information. I’ve tried a couple of time on my own. Once on tweet contents, but it was not convincing and once on the activity on Twitter following an event (e.g. the death of someone famous). I have to admit that I am not a big fan of databases that can be generated using standard function to study tweets. For instance, we can only extract tweets, notre-tweets (which is also an important indicator of tweet-activity). @3wen suggested to use

require("RJSONIO")

The first step is to extract some information from a tweet, and store it in a dataset (details can be found on https://dev.twitter.com/)

obtenir_ligne <- function(unTweet){
date_courante=unTweet$created_at
id_courant=unTweet$id_str
text=unTweet$text
nb_followers=unTweet$user$followers_count
nb_amis=unTweet$user$friends_count
utc_offset=unTweet$user$utc_offset
listeMentions=unTweet$entities$user_mentions
return(c(list(c(id_courant,date_courante,text,
nb_followers,nb_amis,utc_offset)),
list(do.call("rbind",lapply(listeMentions,
function(x,id_courant) c(id_courant,
x$screen_name),unTweet$id_str)))))
}

Now that we  have the code to extract information from one tweet, let us find several tweets, from one user, say my account,

nom="Freakonometrics"

The (small) problem here, is that we have a limitation: we can only get 100 tweets per call of the function

n=100
tweets_courants=scan(paste(
"http://api.twitter.com/1/statuses/user_timeline.json?
include_entities=true&include_rts=true&screen_name=
",nom,"&count=",n,sep=""),what = "character",
encoding="latin1")
tweets_courants=paste(tweets_courants[
1:length(tweets_courants)],collapse=" ")
tweets_courants=fromJSON(tweets_courants,
method = "C")

Then, we use our function to build a database with 100 lines,

extracTweets <- lapply(tweets_courants,
obtenir_ligne)
mentions=do.call("rbind",lapply(extracTweets,
function(x) x[[2]]))
colnames(mentions)=list("id","screen_name")
res=t(sapply(extracTweets,function(x) x[[1]]))
colnames(res) <- list("id","date","text",
"nb_followers","nb_amis","utc_offset")

The idea then is simply to use a loop, based on the latest id observed

dernier_id=tweets_courants[[length(
tweets_courants)]]$id_str

So, here we go,

compteurLimite=100

while(compteurLimite<4100){
tweets_courants=scan(paste(
"http://api.twitter.com/1/statuses/user_timeline.json?
include_entities=true&include_rts=true&screen_name=
",nom,"&count=",n,"&max_id=",dernier_id,sep=""),
what = "character", encoding="latin1")
tweets_courants=paste(tweets_courants[
1:length(tweets_courants)],collapse=" ")
tweets_courants=fromJSON(tweets_courants,
method = "C")

extracTweets <- lapply(tweets_courants[
2:length(tweets_courants)],obtenir_ligne)
mentions=rbind(mentions,do.call("rbind",
lapply(extracTweets,function(x) x[[2]])))
res=rbind(res,t(sapply(extracTweets,function(x) x[[1]])))
t(sapply(extracTweets,function(x) x[[1]]))
dernier_id=tweets_courants[[length(
tweets_courants)]]$id_str
compteurLimite=compteurLimite+100
}

resFreakonometrics=res=
data.frame(res,stringsAsFactors=FALSE)

All the information about my own tweets (and re-tweets) are stored in a nice dataset. Actually, we have even more, since we have extracted also names of people mentioned in tweets,

mentionsFreakonometrics=
data.frame(mentions)

We can look at people I mention in my tweets

gazouillis=sapply(split(mentionsFreakonometrics,
mentions$screen_name),nrow)
gazouillis=gazouillis[order(gazouillis,
decreasing=TRUE)]

plot(gazouillis)
plot(gazouillis,log="xy")
> gazouillis[1:20]
tomroud freakonometrics       adelaigue       dmonniaux
155              84              77              56
J_P_Boucher         embruns      SkyZeLimit        coulmont
42              39              35              31
Fabrice_BM            3wen          obouba          msotod
31              30              29              27
StatFr     nholzschuch        renaudjf        squintar
26              25              23              23
Vicnent        pareto35        romainqc        valatini
23              22              22              22

If we plot those frequencies, we can clearly observe a standard Pareto distribution,

Now, let us spend some time with dates and time of tweets (it was the initial goal of this post)… One more time, there is a (small) technical problem that we have to deal with: language. We need a function to convert date in English (on Twitter) to dates in French (since I have a French version of R),

changer_date_anglais <- function(date_courante){
mois <- c("Jan","Fév", "Mar", "Avr", "Mai",
"Jui", "Jul", "Aoû", "Sep", "Oct", "Nov", "Déc")
months <- c("Jan", "Feb", "Mar", "Apr", "May",
"Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec")
jours <- c("Lun","Mar","Mer","Jeu",
"Ven","Sam","Dim")
days <- c("Mon","Tue","Wed","Thu",
"Fri","Sat","Sun")
leJour <- substr(date_courante,1,3)
leMois <- substr(date_courante,5,7)
return(paste(jours[match(leJour,days)]," ",
mois[match(leMois,months)],substr(
date_courante,8,nchar(date_courante)),sep=""))
}

So now, it is possible to plot the times where I am online, tweeting,

DATE=Vectorize(changer_date_anglais)(res$date)
DATE=sapply(resSkyZeLimit$date,
changer_date_anglais,simplify=TRUE)

DATE2=strptime(as.character(DATE),
"%a %b %d %H:%M:%S %z %Y")
lt= as.POSIXlt(DATE2, origin="1970-01-01")
heure=lt$hour+lt$min/60
plot(DATE2,heure)

On this graph, we can see that I am clearly not online almost 6 hours a day (or at least not on Twitter). It is possible to visualize more precisely the period of the day where I might be on Twitter,

hist(heure,breaks=0:24,col="light green",proba=TRUE)
X=c(heure-24,heure,heure+24)
d=density(X,n = 512, from=0, to=24,bw=1)
lines(d$x,d$y*3,lwd=3,col="red")

or, if we want to illustrate with some kind of heat plot,

Note that we did it for my Twitter account, but we can also run the code on (almost) anyone on Twitter. Consider e.g. @adelaigue. Since Alexandre is tweeting in France, we have to play with time-zones,

res=extractR("adelaigue")
DATE=Vectorize(changer_date_anglais)(res$date)
DATE2=strptime(as.character(DATE),
"%a %b %d %H:%M:%S %z %Y",tz = "GMT")+2*60*60

or I can also look at @skythelimit who’s usually twitting from Singapore (I am in Montréal). I can seen clearly when we might have overlaps,

res=extractR("skythelimit")

Nice isn’t it. But it is possible to do much better… for instance, for those who do not ask specifically not to be Geo-located, we can see where they do tweet during the day, and during the night… I am quite sure a dozen posts with those functions can be written…

Quelques heures d’effervescence sur Twitter

Pour ceux qui dormaient entre 11 heures et 15 heures (à Montréal, soit 17 heures – 21 heures en France), hier, Bernard Clavel est mort. Auparavant, j’allais sur le site de Libé, ou du Monde, pour me tenir informé de ce qui se passe en dehors de mon bureau (ou de ma cuisine),

Maintenant je suis sur Twitter… et autant l’avouer, j’ai essayé des outils comme TweetDeck mais au bout de 2 heures, force est de constater que j’ai arrêté l’application car j’en avais marre d’être harcelé par ces fenêtres…
Sur Twitter, tout le monde a quelque chose à dire sur tout, et ne peut s’empêcher de vouloir le dire à tout le monde…. Par exemple “Bernard Clavel” ne faisait pas franchement parti des mots tapé régulièrement sur Twitter…. Mais à l’annonce de sa mort, tout le monde veut diffuser l’information à son réseau…. Ça allait tellement vite que j’étais obligé de faire des backups des pages internets tous les quarts d’heure (sinon l’historique disparaît, ce qui limite l’intérêt des outils statistiques). Pour être précis, ma recherchait était

http://twitter.com/#search?q=bernard%20clavel

et pendant près de 4 heures, ça allait du tweet original, au retweet, au message recopié sans citation, etc…. J’ai récupéré ainsi plus de 400 tweets, mais sans l’horaire…. Finalement, j’ai découvert

http://search.tweetreports.com/search_results.php?search=bernard+clavel&sear=Y

Pendant l’heure qui suit les premiers tweets, c’est l’effervescence, puis ça retombe… avec un pic à 20 heures, visiblement certains l’apprenant aux informations du soir…

Manifestement la loi gamma (la date initiale étant le premier tweet annonçant le décès) n’est pas adaptée…

Moralité, pour poursuivre le billet de la semaine dernière (ici), on peut tenter un mélange, en l’occurrence un mélange gamma/exponentielle…. la première loi gamma permet d’intégrer le délai de transmission de l’information au réseau, alors que pour le second, il semble que ce soit une annonce au 20 heures qui ait déclenché la soudaine envie de tweeter..

Allez, le jour où je maîtrise mieux les outils linguistiques, je regarde en plus quand les tweets anglophone et hispaniques sont arrivés…..