optNetwork biconnectedComponents

Analyse de Communautés sur un Réseau Social par Pays (Volumétrie)

Scénario de test & Cas d'usage

Contexte Métier

Un réseau social veut analyser la structure des communautés d'utilisateurs dans différents pays. L'objectif est d'exécuter l'analyse en parallèle pour chaque pays (en utilisant un traitement BY-group) sur un grand volume de données simulé, afin d'identifier les 'super-connecteurs' (points d'articulation) dans chaque marché local.
À propos du Set : optNetwork

Analyse de réseaux et algorithmes de graphes.

Découvrir toutes les actions de optNetwork
Préparation des Données

Génération d'un jeu de données volumineux simulant des interactions (liens) entre utilisateurs, avec une variable 'pays' pour permettre un traitement groupé.

Copié !
1DATA mycas.InteractionsSociales(keep=pays utilisateur_A utilisateur_B);
2 call streaminit(123);
3 array pays_list{3} $ ('FR', 'DE', 'ES');
4 DO pays_idx = 1 to dim(pays_list);
5 pays = pays_list[pays_idx];
6 DO i = 1 to 5000; /* Génère 5000 liens par pays */
7 utilisateur_A = cat(pays, floor(rand('UNIFORM')*200));
8 utilisateur_B = cat(pays, floor(rand('UNIFORM')*200));
9 IF utilisateur_A ne utilisateur_B THEN OUTPUT;
10 END;
11 END;
12RUN;

Étapes de réalisation

1
Exécution de l'analyse des composantes biconnexées en groupant par la variable 'pays'.
Copié !
1PROC CAS;
2 ACTION optNetwork.biconnectedComponents /
3 links={name='InteractionsSociales', groupBy={'pays'}},
4 logLevel='MODERATE',
5 nThreads=4,
6 outNodes={name='InfluenceursParPays', replace=true, groupBy={'_GROUPID_'}},
7 outGraphList={name='ResumeParPays', replace=true};
8RUN;
9QUIT;
2
Vérification de la table de résumé pour confirmer que l'analyse a été effectuée pour chaque pays.
Copié !
1PROC PRINT DATA=mycas.ResumeParPays;
2RUN;
3
Exemple de requête pour trouver les influenceurs (points d'articulation) pour un pays spécifique (ex: 'FR').
Copié !
1 
2PROC PRINT
3DATA=mycas.InfluenceursParPays;
4where _GROUPID_ contains 'pays=FR' and artpoint = 1;
5RUN;
6 

Résultat Attendu


L'action doit s'exécuter sans erreur et créer une table 'ResumeParPays' listant les 3 graphes générés (un pour FR, un pour DE, un pour ES). La table 'InfluenceursParPays' doit contenir les résultats concaténés pour les 3 pays, avec une colonne '_GROUPID_' permettant de filtrer les résultats. On s'attend à trouver plusieurs points d'articulation pour chaque pays, validant le bon fonctionnement du traitement 'groupBy'.