network

centrality

Descripción

Calcula las métricas de centralidad de un grafo. Estas métricas son fundamentales en el análisis de redes para identificar los nodos más importantes o influyentes. Por ejemplo, en una red social, la centralidad puede ayudar a identificar a los 'influencers'. En una red de transporte, puede señalar los hubs más críticos.

network.centrality <result=results> <status=rc> / 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;
Parámetros
ParámetroDescripción
authEspecifica cómo calcular la centralidad de autoridad. Útil en grafos dirigidos para encontrar nodos que son referenciados por muchos hubs.
betweenEspecifica cómo calcular la centralidad de intermediación. Mide la frecuencia con la que un nodo aparece en los caminos más cortos entre otros nodos.
betweenNormCuando se establece en True, normaliza el cálculo de la centralidad de intermediación, permitiendo la comparación entre grafos de diferentes tamaños.
closeEspecifica cómo calcular la centralidad de cercanía. Mide qué tan cerca está un nodo de todos los demás nodos en la red.
closeNoPathEspecifica un método para tratar la distancia en caminos más cortos cuando no existe una ruta entre dos nodos (nodos desconectados).
clusteringCoefficientCuando se establece en True, calcula el coeficiente de agrupamiento del nodo, que mide la tendencia de los vecinos de un nodo a conectarse entre sí.
degreeEspecifica cómo calcular la centralidad de grado. Es el número de enlaces incidentes en un nodo.
deterministicCuando se establece en True, asegura que cada invocación (con la misma configuración de máquina y parámetros) produzca el mismo resultado final.
directionEspecifica si se debe considerar el grafo de entrada como dirigido o no dirigido.
displayEspecifica una lista de tablas de resultados para enviar al cliente para su visualización.
distributedCuando se establece en True, utiliza un grafo distribuido para el cálculo, lo que es crucial para redes muy grandes.
eigenEspecifica cómo calcular la centralidad de vector propio. Mide la influencia de un nodo en la red, considerando la importancia de sus vecinos.
eigenAlgorithmEspecifica el algoritmo a utilizar para calcular métricas de centralidad que requieren la resolución de sistemas de valores propios (eigen, hub, auth).
eigenMaxItersEspecifica el número máximo de iteraciones para los cálculos de vector propio para limitar el tiempo de cómputo.
graphEspecifica el grafo en memoria a utilizar para el análisis.
hubEspecifica cómo calcular la centralidad de hub. Útil en grafos dirigidos para encontrar nodos que apuntan a muchas autoridades.
indexOffsetEspecifica el desplazamiento del índice para los identificadores en las tablas de datos de salida de registro y resultados.
influenceEspecifica cómo calcular la centralidad de influencia, que combina la centralidad de grado y la de sus vecinos.
linksEspecifica la tabla de datos de entrada que contiene la información de los enlaces del grafo.
linksVarEspecifica los nombres de las variables de datos para la tabla de enlaces.
logFreqTimeControla la frecuencia (en segundos) para mostrar los registros de iteración para algoritmos computacionalmente intensivos.
logLevelControla la cantidad de información que se muestra en el registro de SAS.
multiLinksCuando se establece en True, incluye múltiples enlaces entre los mismos dos nodos cuando se lee un grafo de entrada.
nodesEspecifica la tabla de datos de entrada que contiene la información de los nodos del grafo.
nodesVarEspecifica los nombres de las variables de datos para la tabla de nodos.
nThreadsEspecifica el número máximo de hilos a utilizar para el procesamiento multihilo.
outGraphListEspecifica la tabla de datos de salida para contener información resumida sobre los grafos en memoria.
outLinksEspecifica la tabla de datos de salida para contener la información de los enlaces del grafo junto con los resultados de los algoritmos.
outNodesEspecifica la tabla de datos de salida para contener la información de los nodos del grafo junto con los resultados de los algoritmos.
outputTablesEnumera los nombres de las tablas de resultados para guardar como tablas CAS en el servidor.
pageRankEspecifica cómo calcular la centralidad de PageRank, un algoritmo famoso para medir la importancia de los nodos.
pageRankAlphaEspecifica el factor de amortiguamiento (damping factor) para el algoritmo PageRank.
pageRankToleranceEspecifica la tolerancia de convergencia para el algoritmo PageRank.
samplePercentEspecifica el porcentaje de nodos de origen a muestrear para el cálculo aproximado de la centralidad de intermediación.
selfLinksCuando se establece en True, incluye autoenlaces (enlaces de un nodo a sí mismo) cuando se lee un grafo de entrada.
standardizedLabelsCuando se establece en True, especifica que los datos del grafo de entrada están en un formato estandarizado.
standardizedLabelsOutCuando se establece en True, solicita que los datos del grafo de salida incluyan un formato estandarizado.
Creación de Datos de Grafo

Creamos un grafo simple para ilustrar el cálculo de las métricas de centralidad. Este grafo contiene nodos que representan individuos y enlaces ponderados que representan la fuerza de sus interacciones.

¡Copiado!
1DATA mycas.Links;
2 INFILE DATALINES dsd;
3 INPUT from $ to $ weight;
4 DATALINES;
5A,B,1
6A,C,1
7A,D,1
8B,C,2
9B,D,1
10C,D,1
11C,E,1
12D,E,1
13E,F,1
14F,G,1
15F,H,1
16G,H,1
17;
18RUN;

Ejemplos

Este ejemplo calcula la centralidad de grado (sin ponderar) y la centralidad de intermediación (ponderada) para cada nodo en el grafo. La centralidad de grado es útil para una rápida evaluación de la conectividad, mientras que la de intermediación identifica nodos 'puente'.

Código SAS® / CAS Código en espera de validación por la comunidad
¡Copiado!
1PROC CAS;
2 ACTION network.centrality /
3 links={name="Links"}
4 degree="UNWEIGHT"
5 between="WEIGHT"
6 outNodes={name="NodeCentrality", replace=true};
7RUN;
8QUIT;
Resultado :
La tabla 'NodeCentrality' se crea en la caslib activa. Contiene los nodos del grafo junto con sus puntuaciones de centralidad de grado (cent_degree_unweight) e intermediación (cent_between_weight).

Este ejemplo realiza un análisis de centralidad más completo en un grafo dirigido. Calcula la centralidad de cercanía (usando la fórmula armónica para nodos desconectados), la centralidad de vector propio (usando el algoritmo de potencia) y la centralidad de PageRank. Estas métricas avanzadas proporcionan una visión más matizada de la influencia de los nodos.

Código SAS® / CAS Código en espera de validación por la comunidad
¡Copiado!
1PROC CAS;
2 ACTION network.centrality /
3 links={name="Links"}
4 direction="DIRECTED"
5 close="BOTH"
6 closeNoPath="HARMONIC"
7 eigen="WEIGHT"
8 eigenAlgorithm="POWER"
9 pageRank="WEIGHT"
10 pageRankAlpha=0.85
11 outNodes={name="NodeCentrality_Detailed", replace=true};
12RUN;
13QUIT;
Resultado :
Una tabla de salida llamada 'NodeCentrality_Detailed' se genera en la caslib activa. Esta tabla incluye los nodos y sus métricas de centralidad calculadas: cercanía ponderada y no ponderada (cent_close_unweight, cent_close_weight), vector propio ponderado (cent_eigen_weight) y PageRank ponderado (cent_pagerank_weight).

FAQ

¿Qué es la acción 'centrality' en SAS Viya?
¿Qué métricas de centralidad clave se pueden calcular con esta acción?
¿Cómo gestiona la acción la centralidad de cercanía (closeness) para nodos que no están conectados?
¿Qué algoritmos están disponibles para los cálculos basados en vectores propios como PageRank o Eigenvector?
¿Qué especifica el parámetro 'direction' y qué valores puede tomar?
¿Cuál es el propósito de la acción 'centrality' en el conjunto de acciones 'network'?
¿Qué tipos de métricas de centralidad se pueden calcular con esta acción?
¿Cómo se especifica si el grafo de entrada es dirigido o no dirigido?
¿Qué opciones existen para calcular la centralidad de cercanía ('closeness') cuando hay nodos no conectados?
¿Se pueden realizar los cálculos de centralidad en paralelo para mejorar el rendimiento?
¿Cómo se gestionan los cálculos de centralidad para grafos ponderados y no ponderados?
¿Qué algoritmos están disponibles para calcular la centralidad de vector propio (eigenvector)?
¿Qué tablas se generan como salida de la acción 'centrality'?