Enfin de beaux graphes avec R ? Le package qgraph à l’essai

Je l’ai déjà écrit, R me paraît être aujourd’hui le logiciel le plus performant en analyse de réseau, et ce quel que soit le type de réseau étudié. Reste que lorsqu’il s’agit de passer de l’exploration des données à la communication, les graphes produits par R ne font pas le poids face aux visualisations générées par des outils comme Cytoscape, Gephi ou Tulip. Est-ce que l’arrivée du récent package qgraph change les données du problème ? Pas sûr…

Développé par de psychologues, l’objectif du package qgraph est de permettre des visualisations lisibles de graphes denses tout en minimisant la taille des fichiers vectoriels exportables. Si l’objectif premier affiché par les auteurs est la visualisation de matrices de corrélation, il est évidemment possible de l’utiliser pour représenter un graphe simple valué.

Le nombre de commandes est on ne peut plus limité : qgraph est la seule du module. Comme l’expliquent les auteurs dans le Journal of Statistical Softwares, le nombre de packages permettant l’analyse de graphes est largement suffisant – et ils n’ont pas tort. Pourtant, le package permet d’obtenir les mesures de graphe valué proposés par Tore Opshal dans ses articles, sur son blog (dont la visite est très recommandée : http://toreopsahl.com/) et… dans son package tnet.

Si on teste les scripts d’exemple du mode d’emploi, on obtient des résultats visuellement plus attractifs que la très grande majorité des images produites dans R.

visualisation avec qgraph

Le code R utilisé pour générer cette image est le suivant :

library(qgraph)

data(big5)

qgraph.panel(cor(big5),groups=big5groups,minimum=0.25, borders=FALSE,vsize=1,cut=0.3)

Le format des données en entrée est le même que pour le package igraph et, pour utiliser qgraph(x), x doit être une matrice (valuée), une liste de liens ou un objet de type qgraph. Le script suivant importe un tableau de données (individus – variables), calcule la matrice des corrélations puis la visualise en faisant varier couleur et valeur en fonction de la corrélation – seules celles supérieures à |0.5| sont représentées (option minimum).

library(qgraph)

#import du tableau de données

d <- read.table(« donnees.txt », sep= »\t », header=TRUE, row.names=1)

#calcul de la matrice de corrélations

m <- cor(as.matrix(d))

#visualisation

qgraph(m, layout= »spring », minimum=0.5)

Et on obtient une image de ce type-là : les corrélations négatives sont en verts, les corrélations positives en rouge, et l’épaisseur dépend de l’intensité de la relation entre les variables.

visualisation avec qgraph

Si on résume, le package peut produire des images plus sympathiques que la majorité des packages d’analyse de graphe dans R – sauf à écrire dans ces derniers d’interminables scripts – mais les limites sont évidentes : seuls les graphes simples et valués sont concernés. Et le résultat reste quoi qu’il en soit moins attrayant que ceux obtenus avec les logiciels évoqués au début de ce billet. Donc, ce package vous sera utile si et seulement si vous représentez souvent des matrices de corrélation…

Références

S. Epskamp, A.O.J. Cramer, L.J. Waldorp, V.D. Scmittmann et D. Borsboom, 2012, qgraph: Network Visualizations of Relationships in  Psychometric Data, Journal of Statistical Softwares, 48(4): 1-18, http://www.jstatsoft.org/v48/i04/.

Blog de Sacha Epskamp : http://sachaepskamp.com/qgraph.


Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *