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.
| Paramètre | Description |
|---|---|
| auth | Spécifie comment calculer la centralité d'autorité (valeurs possibles : 'BOTH', 'UNWEIGHT', 'WEIGHT'). |
| between | Spécifie comment calculer la centralité d'intermédiarité (valeurs possibles : 'BOTH', 'UNWEIGHT', 'WEIGHT'). |
| betweenNorm | Si TRUE, normalise le calcul de la centralité d'intermédiarité. |
| close | Spécifie comment calculer la centralité de proximité (valeurs possibles : 'BOTH', 'UNWEIGHT', 'WEIGHT'). |
| closeNoPath | Spécifie la méthode pour gérer les chemins inexistants dans le calcul de la proximité (valeurs possibles : 'DIAMETER', 'HARMONIC', 'NNODES', 'ZERO'). |
| clusteringCoefficient | Si TRUE, calcule le coefficient de clustering des nœuds. |
| degree | Spécifie comment calculer la centralité de degré (valeurs possibles : 'BOTH', 'UNWEIGHT', 'WEIGHT'). |
| deterministic | Si TRUE, garantit des résultats reproductibles pour une même configuration. |
| direction | Spécifie si le graphe est 'DIRECTED' (dirigé) ou 'UNDIRECTED' (non dirigé). |
| display | Spécifie les tables de résultats à afficher côté client. |
| distributed | Si TRUE, utilise un traitement distribué pour le graphe. |
| eigen | Spécifie comment calculer la centralité de vecteur propre (valeurs possibles : 'BOTH', 'UNWEIGHT', 'WEIGHT'). |
| eigenAlgorithm | Spécifie l'algorithme pour les calculs de vecteurs propres ('AUTOMATIC', 'JACOBIDAVIDSON', 'POWER'). |
| eigenMaxIters | Nombre maximum d'itérations pour les calculs de vecteurs propres. |
| graph | Spécifie le graphe en mémoire à utiliser. |
| hub | Spécifie comment calculer la centralité de hub (valeurs possibles : 'BOTH', 'UNWEIGHT', 'WEIGHT'). |
| indexOffset | Spécifie le décalage d'index pour les identifiants dans les tables de sortie. |
| influence | Spécifie comment calculer la centralité d'influence (valeurs possibles : 'BOTH', 'UNWEIGHT', 'WEIGHT'). |
| links | Spécifie la table d'entrée contenant les liens du graphe. |
| linksVar | Spécifie les noms des variables dans la table des liens. |
| logFreqTime | Fréquence (en secondes) d'affichage des journaux d'itération. |
| logLevel | Niveau de détail des messages dans le journal SAS ('NONE', 'BASIC', 'MODERATE', 'AGGRESSIVE'). |
| multiLinks | Si TRUE, inclut les liens multiples lors de la lecture du graphe. |
| nodes | Spécifie la table d'entrée contenant les nœuds du graphe. |
| nodesVar | Spécifie les noms des variables dans la table des nœuds. |
| nThreads | Spécifie le nombre de threads à utiliser pour le traitement. |
| outGraphList | Spécifie la table de sortie pour les informations récapitulatives sur les graphes en mémoire. |
| outLinks | Spécifie la table de sortie pour les liens du graphe avec leurs métriques calculées. |
| outNodes | Spécifie la table de sortie pour les nœuds du graphe avec leurs métriques calculées. |
| outputTables | Liste les noms des tables de résultats à sauvegarder en tant que tables CAS. |
| pageRank | Spécifie comment calculer la centralité PageRank (valeurs possibles : 'BOTH', 'UNWEIGHT', 'WEIGHT'). |
| pageRankAlpha | Facteur d'amortissement pour l'algorithme PageRank. |
| pageRankTolerance | Tolérance de convergence pour l'algorithme PageRank. |
| samplePercent | Pourcentage de nœuds à échantillonner pour le calcul approximatif de l'intermédiarité. |
| selfLinks | Si TRUE, inclut les liens d'un nœud vers lui-même. |
| standardizedLabels | Si TRUE, indique que les données du graphe d'entrée utilisent un format de libellés standardisé. |
| standardizedLabelsOut | Si TRUE, la sortie du graphe utilisera un format de libellés standardisé. |
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é.
| 1 | DATA mycas.Links; |
| 2 | INFILE DATALINES delimiter=','; |
| 3 | INPUT from $ to $ weight; |
| 4 | DATALINES; |
| 5 | A,B,1 |
| 6 | A,C,1 |
| 7 | A,D,1 |
| 8 | B,E,1 |
| 9 | B,F,1 |
| 10 | C,G,1 |
| 11 | C,H,1 |
| 12 | D,I,1 |
| 13 | D,J,1 |
| 14 | ; |
| 15 | RUN; |
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`.
| 1 | PROC CAS; |
| 2 | network.centrality / |
| 3 | links={name='Links'}, |
| 4 | degree='UNWEIGHT', |
| 5 | direction='UNDIRECTED', |
| 6 | outNodes={name='NodeCentrality', replace=true}; |
| 7 | RUN; |
| 8 | QUIT; |
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.
| 1 | PROC 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}; |
| 10 | RUN; |
| 11 | QUIT; |
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...
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 ...
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...