network

centrality

Description

L'action `centrality` du jeu d'actions `network` est utilisée pour calculer diverses métriques de centralité sur un graphe. Ces métriques sont fondamentales en analyse de réseaux pour identifier les nœuds les plus importants ou influents. Par exemple, la centralité de degré mesure le nombre de connexions d'un nœud, la centralité d'intermédiarité identifie les nœuds qui servent de ponts entre différentes parties du réseau, et la centralité de proximité évalue la rapidité avec laquelle un nœud peut atteindre tous les autres. Cette action permet de calculer ces métriques pour des graphes pondérés ou non, et dirigés ou non.

network.centrality { auth="BOTH" | "UNWEIGHT" | "WEIGHT", between="BOTH" | "UNWEIGHT" | "WEIGHT", betweenNorm=TRUE | FALSE, close="BOTH" | "UNWEIGHT" | "WEIGHT", closeNoPath="DIAMETER" | "HARMONIC" | "NNODES" | "ZERO", clusteringCoefficient=TRUE | FALSE, degree="BOTH" | "UNWEIGHT" | "WEIGHT", deterministic=TRUE | FALSE, direction="DIRECTED" | "UNDIRECTED", display={...}, distributed=TRUE | FALSE, eigen="BOTH" | "UNWEIGHT" | "WEIGHT", eigenAlgorithm="AUTOMATIC" | "JACOBIDAVIDSON" | "POWER", eigenMaxIters=integer, graph=integer, hub="BOTH" | "UNWEIGHT" | "WEIGHT", indexOffset=integer, influence="BOTH" | "UNWEIGHT" | "WEIGHT", links={...}, linksVar={...}, logFreqTime=integer, logLevel="AGGRESSIVE" | "BASIC" | "MODERATE" | "NONE", multiLinks=TRUE | FALSE, nodes={...}, nodesVar={...}, nThreads=integer, outGraphList={...}, outLinks={...}, outNodes={...}, outputTables={...}, pageRank="BOTH" | "UNWEIGHT" | "WEIGHT", pageRankAlpha=double, pageRankTolerance=double, samplePercent=double, selfLinks=TRUE | FALSE, standardizedLabels=TRUE | FALSE, standardizedLabelsOut=TRUE | FALSE };
Paramètres
ParamètreDescription
authSpécifie comment calculer la centralité d'autorité (valeurs possibles : 'BOTH', 'UNWEIGHT', 'WEIGHT').
betweenSpécifie comment calculer la centralité d'intermédiarité (valeurs possibles : 'BOTH', 'UNWEIGHT', 'WEIGHT').
betweenNormSi TRUE, normalise le calcul de la centralité d'intermédiarité.
closeSpécifie comment calculer la centralité de proximité (valeurs possibles : 'BOTH', 'UNWEIGHT', 'WEIGHT').
closeNoPathSpécifie la méthode pour gérer les chemins inexistants dans le calcul de la proximité (valeurs possibles : 'DIAMETER', 'HARMONIC', 'NNODES', 'ZERO').
clusteringCoefficientSi TRUE, calcule le coefficient de clustering des nœuds.
degreeSpécifie comment calculer la centralité de degré (valeurs possibles : 'BOTH', 'UNWEIGHT', 'WEIGHT').
deterministicSi TRUE, garantit des résultats reproductibles pour une même configuration.
directionSpécifie si le graphe est 'DIRECTED' (dirigé) ou 'UNDIRECTED' (non dirigé).
displaySpécifie les tables de résultats à afficher côté client.
distributedSi TRUE, utilise un traitement distribué pour le graphe.
eigenSpécifie comment calculer la centralité de vecteur propre (valeurs possibles : 'BOTH', 'UNWEIGHT', 'WEIGHT').
eigenAlgorithmSpécifie l'algorithme pour les calculs de vecteurs propres ('AUTOMATIC', 'JACOBIDAVIDSON', 'POWER').
eigenMaxItersNombre maximum d'itérations pour les calculs de vecteurs propres.
graphSpécifie le graphe en mémoire à utiliser.
hubSpécifie comment calculer la centralité de hub (valeurs possibles : 'BOTH', 'UNWEIGHT', 'WEIGHT').
indexOffsetSpécifie le décalage d'index pour les identifiants dans les tables de sortie.
influenceSpécifie comment calculer la centralité d'influence (valeurs possibles : 'BOTH', 'UNWEIGHT', 'WEIGHT').
linksSpécifie la table d'entrée contenant les liens du graphe.
linksVarSpécifie les noms des variables dans la table des liens.
logFreqTimeFréquence (en secondes) d'affichage des journaux d'itération.
logLevelNiveau de détail des messages dans le journal SAS ('NONE', 'BASIC', 'MODERATE', 'AGGRESSIVE').
multiLinksSi TRUE, inclut les liens multiples lors de la lecture du graphe.
nodesSpécifie la table d'entrée contenant les nœuds du graphe.
nodesVarSpécifie les noms des variables dans la table des nœuds.
nThreadsSpécifie le nombre de threads à utiliser pour le traitement.
outGraphListSpécifie la table de sortie pour les informations récapitulatives sur les graphes en mémoire.
outLinksSpécifie la table de sortie pour les liens du graphe avec leurs métriques calculées.
outNodesSpécifie la table de sortie pour les nœuds du graphe avec leurs métriques calculées.
outputTablesListe les noms des tables de résultats à sauvegarder en tant que tables CAS.
pageRankSpécifie comment calculer la centralité PageRank (valeurs possibles : 'BOTH', 'UNWEIGHT', 'WEIGHT').
pageRankAlphaFacteur d'amortissement pour l'algorithme PageRank.
pageRankToleranceTolérance de convergence pour l'algorithme PageRank.
samplePercentPourcentage de nœuds à échantillonner pour le calcul approximatif de l'intermédiarité.
selfLinksSi TRUE, inclut les liens d'un nœud vers lui-même.
standardizedLabelsSi TRUE, indique que les données du graphe d'entrée utilisent un format de libellés standardisé.
standardizedLabelsOutSi TRUE, la sortie du graphe utilisera un format de libellés standardisé.
Préparation des Données Voir la fiche de ce code dataprep
Création des Données de Graphe

Ce code crée une table CAS nommée `mycas.Links` qui représente les liens d'un graphe simple. Chaque ligne définit un lien entre un nœud `from` et un nœud `to`, avec un poids `weight` associé.

Copié !
1DATA mycas.Links;
2 INFILE DATALINES delimiter=',';
3 INPUT from $ to $ weight;
4 DATALINES;
5A,B,1
6A,C,1
7A,D,1
8B,E,1
9B,F,1
10C,G,1
11C,H,1
12D,I,1
13D,J,1
14;
15RUN;

Exemples

Cet exemple calcule la centralité de degré non pondérée pour chaque nœud du graphe et stocke les résultats dans la table `mycas.NodeCentrality`.

Code SAS® / CAS Code en attente de validation par la communauté
Copié !
1PROC CAS;
2 network.centrality /
3 links={name='Links'},
4 degree='UNWEIGHT',
5 direction='UNDIRECTED',
6 outNodes={name='NodeCentrality', replace=true};
7RUN;
8QUIT;
Résultat :
Une table CAS nommée `NodeCentrality` est créée, contenant les colonnes `node`, `centr_degree_unwt` (centralité de degré non pondérée), `centr_degree_in_unwt` (degré entrant) et `centr_degree_out_unwt` (degré sortant).

Cet exemple illustre comment calculer simultanément plusieurs métriques de centralité (intermédiarité, proximité et vecteur propre) en utilisant à la fois les poids des liens et la structure non pondérée. Les résultats sont exportés dans une table de nœuds détaillée.

Code SAS® / CAS Code en attente de validation par la communauté
Copié !
1PROC CAS;
2 network.centrality /
3 links={name='Links'},
4 direction='UNDIRECTED',
5 multiLinks=true,
6 between='BOTH',
7 close='BOTH',
8 eigen='BOTH',
9 outNodes={name='NodeCentralityDetailed', replace=true};
10RUN;
11QUIT;
Résultat :
La table `NodeCentralityDetailed` est créée dans la caslib active. Elle contient le nœud et une colonne pour chaque métrique de centralité calculée, à la fois pour les versions pondérées (`_wt`) et non pondérées (`_unwt`). Par exemple, `centr_between_wt`, `centr_between_unwt`, `centr_close_wt`, `centr_eigen_wt`, etc.

Scénarios associés

Cas d'usage
Identification des Influenceurs dans un Réseau de Télécommunications

Un opérateur télécom souhaite identifier les 'Super-Connecteurs' parmi ses abonnés pour une campagne de rétention. L'objectif est d'utiliser le PageRank et la Centralité de Degr...

Cas d'usage
Analyse de Robustesse Réseau IT (Performance sur Grand Graphe)

Le département Cybersécurité veut identifier les points de défaillance critiques (Single Points of Failure) dans un réseau informatique massif (milliers de serveurs). Le calcul ...

Cas d'usage
Optimisation Logistique sur Archipel (Graphes Déconnectés)

Une entreprise de logistique gère des livraisons sur plusieurs îles non reliées entre elles (composantes déconnectées). Elle veut calculer la 'Proximité' (Closeness) pour placer...