Die Aktion `community` erkennt Gemeinschaften in einem Graphen. In der Netzwerkanalyse werden Gemeinschaften oft als dicht verbundene Knotengruppen betrachtet, zwischen denen nur spärliche Verbindungen bestehen. Diese Aktion ist nützlich, um Cluster oder Gruppierungen innerhalb eines Netzwerks zu identifizieren, was in sozialen Netzwerken, biologischen Netzwerken und vielen anderen Bereichen Anwendung findet.
| Parameter | Beschreibung |
|---|---|
| algorithm | Gibt den Algorithmus an, der für die Gemeinschaftserkennung verwendet werden soll. 'LABELPROPAGATION' verwendet den Label-Propagation-Algorithmus, während 'LOUVAIN' den Louvain-Algorithmus verwendet. Standard ist 'LOUVAIN'. |
| deterministic | Stellt bei Einstellung auf TRUE sicher, dass jeder Aufruf (mit derselben Maschinenkonfiguration und Parametereinstellungen) dasselbe Endergebnis liefert. Standard ist TRUE. |
| direction | Gibt an, ob der Eingabegraph als gerichtet ('DIRECTED') oder ungerichtet ('UNDIRECTED') betrachtet werden soll. Standard ist 'UNDIRECTED'. |
| display | Gibt eine Liste von Ergebnistabellen an, die zur Anzeige an den Client gesendet werden sollen. |
| distributed | Verwendet bei Einstellung auf TRUE einen verteilten Graphen. Standard ist FALSE. |
| fix | Gibt die Variable an, die Gruppen von Knoten definiert, die für die Gemeinschaftserkennung zusammengehalten werden sollen. Jeder Wert der Variable muss eine 32-Bit-Ganzzahl größer oder gleich 0 oder ein fehlender Wert sein. |
| graph | Gibt den zu verwendenden In-Memory-Graphen an. Standard ist -1 (der zuletzt erstellte Graph). |
| indexOffset | Gibt den Index-Offset für Bezeichner in den Protokoll- und Ergebnisausgabetabellen an. Standard ist 0. |
| labelUpdateMode | Gibt an, ob Knoten ihre Bezeichnungen entsprechend den Bezeichnungen ihrer Nachbarn in der aktuellen Iteration (ASYNCHRONOUS) oder der vorherigen Iteration (SYNCHRONOUS) aktualisieren. Standard ist 'SYNCHRONOUS'. |
| linkRemovalRatio | Gibt den Prozentsatz der Links mit geringem Gewicht an, die um jede Knotenumgebung herum entfernt werden sollen. Der Bereich liegt zwischen 0 und 100. Standard ist 10. |
| links | Gibt die Eingabedatentabelle an, die die Linkinformationen des Graphen enthält. |
| linksVar | Gibt die Datenvariablennamen für die Linktabelle an. |
| logFreqTime | Steuert die Frequenz n (in Sekunden) für die Anzeige von Iterationsprotokollen für einige Algorithmen. Standard ist 5. |
| logLevel | Steuert die Menge der im SAS-Protokoll angezeigten Informationen. Mögliche Werte sind 'NONE', 'BASIC', 'MODERATE', 'AGGRESSIVE'. Standard ist 'BASIC'. |
| maxIters | Gibt die maximale Anzahl von Iterationen an, die der Algorithmus ausführen kann. Standard ist 20 für LOUVAIN und 100 für LABELPROPAGATION. |
| multiLinks | Bezieht bei Einstellung auf TRUE Multilinks beim Lesen eines Eingabegraphen mit ein. Standard ist TRUE. |
| nodes | Gibt die Eingabedatentabelle an, die die Knoteninformationen des Graphen enthält. |
| nodesVar | Gibt die Datenvariablennamen für die Knotentabelle an. |
| nThreads | Gibt die maximale Anzahl von Threads an, die für die Multithread-Verarbeitung verwendet werden sollen. |
| outCommLinks | Gibt die Ausgabedatentabelle an, die die Links zwischen den einzelnen Gemeinschaften beschreibt. |
| outCommunity | Gibt die Ausgabedatentabelle an, die Eigenschaften zu jeder Gemeinschaft enthält. |
| outGraphList | Gibt die Ausgabedatentabelle an, die zusammenfassende Informationen über In-Memory-Graphen enthält. |
| outLevel | Gibt die Ausgabedatentabelle an, die Gemeinschaftsinformationen auf verschiedenen Auflösungsstufen enthält. |
| outLinks | Gibt die Ausgabedatentabelle an, die die Linkinformationen des Graphen zusammen mit allen Ergebnissen der Algorithmen enthält, die Metriken für Links berechnen. |
| outNodes | Gibt die Ausgabedatentabelle an, die die Knoteninformationen des Graphen zusammen mit allen Ergebnissen der Algorithmen enthält, die Metriken für Knoten berechnen. |
| outOverlap | Gibt die Ausgabedatentabelle an, die die Intensität jedes Knotens beschreibt. |
| outputTables | Listet die Namen der Ergebnistabellen auf, die als CAS-Tabellen auf dem Server gespeichert werden sollen. |
| recursive | Zerlegt große Gemeinschaften in kleinere, bis die angegebenen Bedingungen (maxCommSize, maxDiameter) erfüllt sind. |
| resolutionList | Gibt eine Liste von Auflösungswerten (nicht negative Zahlen) an, die durch Leerzeichen getrennt sind. |
| selfLinks | Bezieht bei Einstellung auf TRUE Self-Links (Schleifen) beim Lesen eines Eingabegraphen mit ein. Standard ist TRUE. |
| standardizedLabels | Gibt bei Einstellung auf TRUE an, dass die Eingabegraphdaten in einem standardisierten Format vorliegen. Standard ist FALSE. |
| standardizedLabelsOut | Fordert bei Einstellung auf TRUE an, dass die Ausgabegraphdaten ein standardisiertes Format enthalten. Standard ist FALSE. |
| tolerance | Gibt den Toleranzwert an, bei dem die Iterationen gestoppt werden sollen. Der gültige Bereich liegt streng zwischen 0 und 1. |
| warmStart | Gibt die Variable an, die anfängliche Gemeinschaftsbezeichner für den Warmstart der Gemeinschaftserkennung definiert. |
Dieses Beispiel zeigt, wie ein ungerichteter Graph mit 11 Knoten und 15 Links erstellt wird, um die Gemeinschaftserkennung zu demonstrieren.
| 1 | DATA mycas.LinkSetIn; |
| 2 | INPUT from $ to $ @@; |
| 3 | DATALINES; |
| 4 | A B A C A D B C B D C D |
| 5 | E F E G F G |
| 6 | H I H J I J |
| 7 | K D K E |
| 8 | ; |
| 9 | RUN; |
Dieses Beispiel zeigt, wie man Gemeinschaften in einem ungerichteten Graphen mit dem Louvain-Algorithmus erkennt. Die Ergebnisse werden in den Tabellen `mycas.CommLinks` und `mycas.NodeOut` gespeichert.
| 1 | PROC CAS; |
| 2 | LOADACTIONSET "network"; |
| 3 | ACTION network.community RESULT=r STATUS=s / |
| 4 | links={name='LinkSetIn'} |
| 5 | outNodes={name='NodeOut', replace=true} |
| 6 | outCommLinks={name='CommLinks', replace=true}; |
| 7 | PRINT r.ProblemSummary; |
| 8 | PRINT r.SolutionSummary; |
| 9 | RUN; |
| 10 | fetch / TABLE={name='CommLinks'} sortBy={'community', 'to_community'}; |
| 11 | RUN; |
| 12 | fetch / TABLE={name='NodeOut'} sortBy={'community', 'node'}; |
| 13 | RUN; |
| 14 | QUIT; |
Dieses Beispiel verwendet den Louvain-Algorithmus in einem gerichteten Graphen, um Gemeinschaften zu finden. Die Option `direction='DIRECTED'` wird verwendet, um die Direktionalität der Links zu berücksichtigen.
| 1 | PROC CAS; |
| 2 | ACTION network.community RESULT=r STATUS=s / |
| 3 | direction='DIRECTED' |
| 4 | links={name='LinkSetIn'} |
| 5 | outNodes={name='Comm', replace=true}; |
| 6 | PRINT r.ProblemSummary; |
| 7 | PRINT r.SolutionSummary; |
| 8 | RUN; |
| 9 | fetch / TABLE={name='Comm'} sortBy={'community', 'node'}; |
| 10 | RUN; |
| 11 | QUIT; |