network

core

Descripción

La acción `core` calcula la descomposición del núcleo de un grafo. La descomposición del núcleo es una herramienta fundamental en el análisis de redes que ayuda a identificar las partes más densamente conectadas de un grafo. Un k-núcleo (k-core) es un subgrafo inducido en el que cada vértice tiene un grado de al menos k. Esta acción es útil para la visualización de grafos grandes y para comprender la estructura jerárquica de la conectividad de la red.

network.core <result=results> <status=rc> / <deterministic=TRUE | FALSE>, <direction="DIRECTED" | "UNDIRECTED">, <display={displayTables}>, <distributed=TRUE | FALSE>, <graph=integer>, <indexOffset=integer>, <links={castable}>, <linksVar={linksVar}>, <logFreqTime=integer>, <logLevel="AGGRESSIVE" | "BASIC" | "MODERATE" | "NONE">, <maxTime=double>, <multiLinks=TRUE | FALSE>, <nodes={castable}>, <nodesVar={nodesVar}>, <nThreads=integer>, <outGraphList={casouttable}>, <outLinks={casouttable}>, <outNodes={casouttable}>, <outputTables={outputTables}>, <selfLinks=TRUE | FALSE>, <standardizedLabels=TRUE | FALSE>, <standardizedLabelsOut=TRUE | FALSE>, <timeType="CPU" | "REAL">;
Parámetros
ParámetroDescripción
deterministicCuando se establece en True, asegura que cada invocación (con la misma configuración de máquina y ajustes de parámetros) produce 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.
graphEspecifica el grafo en memoria a utilizar.
indexOffsetEspecifica el desplazamiento del índice para los identificadores en las tablas de datos de salida de registro y resultados.
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 n (en segundos) para mostrar los registros de iteración para algunos algoritmos.
logLevelControla la cantidad de información que se muestra en el registro de SAS.
maxTimeEspecifica la cantidad máxima de tiempo que el algoritmo debe emplear.
multiLinksCuando se establece en True, incluye multienlaces 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 de resumen sobre los grafos en memoria.
outLinksEspecifica la tabla de datos de salida para contener la información de los enlaces del grafo junto con cualquier resultado de los algoritmos que calculan métricas en los enlaces.
outNodesEspecifica la tabla de datos de salida para contener la información de los nodos del grafo junto con cualquier resultado de los algoritmos que calculan métricas en los nodos.
outputTablesLista los nombres de las tablas de resultados para guardar como tablas CAS en el servidor.
selfLinksCuando se establece en True, incluye autoenlaces 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.
timeTypeEspecifica si se debe usar tiempo de CPU o tiempo real para el límite de tiempo máximo.
Creación de Datos de Muestra

Este código SAS crea una tabla de datos de enlaces simple en la librería `mycas`. La tabla `Links` representa las conexiones en una red social, donde cada fila define un enlace entre dos personas (de 'from' a 'to').

¡Copiado!
1DATA mycas.Links;
2 INPUT from $ to $ @@;
3 DATALINES;
4A B A C A D B C
5B D C D C E D E
6D F E F E G F G
7;
8RUN;

Ejemplos

Este ejemplo calcula la descomposición del núcleo para el grafo de entrada definido en la tabla `mycas.Links`. Los resultados, que incluyen el número de núcleo para cada nodo, se guardan en la tabla `mycas.OutNodes`.

Código SAS® / CAS Código en espera de validación por la comunidad
¡Copiado!
1PROC CAS;
2 ACTION network.core /
3 links={name='Links'}
4 outNodes={name='OutNodes', replace=true};
5RUN;
6QUIT;
Resultado :
Una tabla CAS llamada `OutNodes` en la librería `mycas`. Esta tabla contendrá los nodos del grafo y una columna `core` que indica el número de núcleo de cada nodo. Los nodos con un número de núcleo más alto pertenecen a subgrafos más densamente conectados.

Este ejemplo trata el grafo como dirigido usando el parámetro `direction='DIRECTED'`. En un grafo dirigido, el grado de un nodo se divide en grado de entrada y grado de salida, lo que afecta el cálculo del núcleo. Los resultados se guardan en una nueva tabla para comparación.

Código SAS® / CAS Código en espera de validación por la comunidad
¡Copiado!
1PROC CAS;
2 ACTION network.core /
3 links={name='Links'}
4 direction='DIRECTED'
5 outNodes={name='OutNodes_Directed', replace=true};
6RUN;
7QUIT;
Resultado :
Una tabla CAS llamada `OutNodes_Directed`. Los valores de núcleo en esta tabla pueden diferir de los del ejemplo simple porque el cálculo del grado de cada nodo considera la direccionalidad de los enlaces.

Después de calcular la descomposición del núcleo, este ejemplo utiliza la acción `freq` del action set `simple` para obtener la distribución de los números de núcleo en el grafo. Esto ayuda a entender la estructura de densidad del grafo.

Código SAS® / CAS Código en espera de validación por la comunidad
¡Copiado!
1PROC CAS;
2 ACTION network.core /
3 links={name='Links'}
4 outNodes={name='OutNodes', replace=true};
5 ACTION SIMPLE.freq /
6 TABLE={name='OutNodes'}
7 inputs={'core'};
8RUN;
9QUIT;
Resultado :
Una tabla de frecuencia que muestra cuántos nodos pertenecen a cada número de núcleo. Esto proporciona una visión general de la estructura de anidamiento de los subgrafos densos.

FAQ

¿Para qué se utiliza la acción 'core' del conjunto de acciones 'network'?
¿Qué es la descomposición del núcleo (k-core) en el análisis de redes?
¿Cómo se especifica el grafo de entrada para la acción 'core'?
¿Qué tablas de salida genera la acción 'core'?
¿Se puede ejecutar la descomposición del núcleo en un grafo dirigido?