Najprej sem v omrežni datoteki Slo4all.net
zamenjal imena s skrajšanimi imeni, ji dodal razbitja gender.clu
, party.clu
in position.clu
ter vse skupaj shranil kot Pajkovo projektno datoteko Slo4allShort.paj
.
read network Slo4all.net network Info button ┒============================================================================== ┃1. C:\Users\vlado\docs\papers\2024\Trajectories\Ostro\Februar24\Slo4all.net (160) ┃============================================================================== ┃Multiple Relations Network. ┃Number of vertices (n): 160 ┃---------------------------------------------------------- ┃ Arcs Edges ┃---------------------------------------------------------- ┃Total number of lines 0 9127 ┃---------------------------------------------------------- ┃Number of loops 0 0 ┃Number of multiple lines 0 2705 ┚---------------------------------------------------------- Network/Multiple relations network/Info ┒============================================================================== ┃Info on Multiple Relations Network 1. C:\Users\vlado\docs\papers\2024\Trajectories\Ostro\Februar24\Slo4all.net (160) ┃============================================================================== ┃ Relation No. Arcs Edges Total Label ┃--------------------------------------------------------------- ┃ 1 0 5925 5925 delovne izkušnje ┃ 2 0 470 470 izobraževanje ┃ 3 0 8 8 prostočasne aktivnosti ┃ 4 0 2714 2714 strankarska pozicija ┃ 5 0 10 10 svetovalne in nadzorne funkcije etc. ┚--------------------------------------------------------------- Network/Create new network/Transform/Add/vertex labels/default [Yes] Network/Create new network/Transform/Add/vertex labels/from file(s) [ostro_short.nam] select network 1 Slo4all.net File/Network/Dispose select network 2 default File/Network/Dispose read clustering gender.clu read clustering party.clu read clustering position.clu File/Network/Save [Slo4allShort.paj]
V dobljeni projektni datoteki še ročno dodamo začetna pojasnila in legende razbitij.
Na podoben način ustvarimo še projektno datoteko Slo4apr22Short.paj
.
network Info button ┒============================================================================== ┃1. C:\Users\vlado\docs\papers\2024\Trajectories\Ostro\Februar24\Slo4apr22.net (154) ┃============================================================================== ┃Multiple Relations Network. ┃Number of vertices (n): 154 ┃---------------------------------------------------------- ┃ Arcs Edges ┃---------------------------------------------------------- ┃Total number of lines 0 3339 ┃---------------------------------------------------------- ┃Number of loops 0 0 ┃Number of multiple lines 0 951 ┚---------------------------------------------------------- Network/Multiple relations network/Info ┒============================================================================== ┃Info on Multiple Relations Network 1. C:\Users\vlado\docs\papers\2024\Trajectories\Ostro\Februar24\Slo4apr22.net (154) ┃============================================================================== ┃ Relation No. Arcs Edges Total Label ┃--------------------------------------------------------------- ┃ 1 0 1767 1767 delovne izkušnje ┃ 2 0 470 470 izobraževanje ┃ 3 0 6 6 prostočasne aktivnosti ┃ 4 0 1086 1086 strankarska pozicija ┃ 5 0 10 10 svetovalne in nadzorne funkcije etc. ┚---------------------------------------------------------------
Za hiter pregled zgradbe uteženih omrežij uporabljamo razna ogrodja (skeleti), pri katerih odvržemo manj pomembne sestavine. Primer ogrodja je omrežje k-sosedov, v katerem obdržimo v vsakem vozlišču le k najpomembnejših sosedov (največje uteži).
Najprej iz osnovnega večrelacijskega časovnega omrežja ustvarimo navadno časovno omrežje: če obdržimo vse/izbrane relacije, uporabimo
Network/Multiple relations network/Change Relation Number-Label [1-*,1,All together,OK][Yes]
če pa želimo le relacijo k, lahko uporabimo
Network/Multiple relations network/Extract Relation(s) into Separate Network(s) [k,OK][Yes]
Postopek k-sosedov gre v Pajku takole:
Network/Create new network/Transform/Remove/Multiple lines/Sum values [No] Network/Create new network/Transform/Line values/Abs+sqrt File/Network/Change label [Sqrt] Network/Create new network/Transform/Edges -> arcs [yes] File/Network/Change label [Sqrt directed] Network/Create new network/Transform/Remove/all arcs ... except/k with highest ...[k] Network/Create partition/Components/Weak [2]
Ker bomo postopek večkrat uporabili, sem ga shranil kot makro k-neighbors.
read Pajek project file Slo4allShort.paj select relations and create an ordinary temporal network apply macro k-neighbors Draw/Network+First partition Layout/Energy/Kamada-Kawai/Separate components manually improve the picture set Options and Export/Options Export/2D/SVG/General [sosedi.svg]
Postopek PathFinder je drug način, kako pridemo do ogrodja omrežja. Podomrežje, ki ga dobimo ohranja povezanost. V Pajku ga dobimo takole:
Network/Create new network/Transform/Remove/Multiple lines/Sum values [No] Network/Create new network/Transform/Line values/Abs+sqrt File/Network/Change label [Sqrt] Network/Create new network/Transform/Line values/Power [-1, OK] Network/Create new network/Transform/Reduction/Pathfinder* [0, OK] select Sqrt as the Second network Network/Cross-Intersection/Second
Povezavni izrez na pragu t v danem omrežju ohrani le najmočnejše povezave, katerih utež je vsaj t. Odstrani tudi vsa osamljena vozlišča. V Pajku ga dobimo takole:
Network/Create new network/Transform/Remove/Multiple lines/Sum values [No] Network/Create new network/Transform/Remove/Lines with Value/lower than [t, OK] Network/Create Partition/Degree/All Operations/Network+Partition/Extract/Subnetwork ... [1-*, OK]
Če želimo na sliki prikazati tudi kako od razbitij, ga moramo prilagoditi dobljenemu izrezu
select selected partition as the First partition select Degree All partition as the Second partition Partitions/Extract Subpartition
V podatkih o osebah sem izbral tri razbitja, ki opisujejo lastnosti posamezne osebe: party (članstvo v stranki), position (vloga v državi), gender (spol). Njihovo uporabo v Pajku določimo, da jih izberemo kot tekoča razbitja:
Prikaz omrežja zahtevamo z Draw/Network+First Partition. Sprva bo prikazana le pripadnost strankam kot barva vozlišča. Izbral sem naslednje svetle barve
1: Neopredeljeni ; 2: Gibanje Svoboda; 3: Levica; 4: NSi; 5: Ps i+m ns; 6: SD; 7: SDS .
Prikaz drugega razbitja z izbranimi simboli vključimo z Options/Mark vertices using/Cluster symbols of second partition. Izbrane simbole določimo z Options/Symbols for partition clusters/Change. Izbral sem naslednje simbole
Tretje razbitje bo prikazano z barvo simbola. Prikazovanje vključimo z Options/Colors/Use third partition for symbol color . Izbral sem (Options/Colors/Partition colors/for Symbols) običajni barvi - rdeča: ženska, modra: moški.
Pri nekoliko večjih gostih (večja povprečna stopnja) omrežjih je njegov prikaz z grafom zelo nepregleden. Pri neprevelikih omrežjih je ustreznejša rešitev matrični prikaz. Pri matričnem prikazu je pomemben vrstni red vozlišč - dober vrstni red bo v prikazu ustvaril vzorce, ki pripovedujejo o zgradbi omrežja.
Naj bo tekoče omrežje poenostavljeno omrežje (navadno omrežje brez večkratnih povezav). Tedaj lahko ureditev vozlišč določimo z razvrščanjem v skupine. Ker je razpon vrednosti uteži zelo velik, ga z monotono preslikavo (npr. ln(w) ali sqrt(sqrt(w)) ) zmanjšamo. V našem primeru bomo uporabili dvojno korenjenje
Network/Create new network/Transform/Line values/Abs + Sqrt Network/Create new network/Transform/Line values/Abs + Sqrt Cluster/Create complete cluster [160][OK] Operations/Network+Cluster/Dissimilarity*/Network based/d5-Corrected Euclidean [1][OK] select network Sqrt(Sqrt) File/Network/Export as Matrix to/EPS/using permutation
Dobljeni datoteki dendro.eps in matrix.eps odpremo v Acrobat reader-ju in ju shranimo v obliki PDF. Matriko nato odpremo v Inkscape-u in jo shranimo v obliki SVG.
V Pajku lahko posamezne skupine razvrstitve še preuredimo (menjave vrstnega reda posameznih vej v drevesu) in dobimo izboljšan prikaz. Lahko tudi določimo skupine in pridobimo ustrezno razbitje.
Za dano razvrstitev (razbitje) lahko dobimo matriko ustrezne skrčitve skupin
select SUM network as the First network select clustering partition as the First partition Operations/Network+Partition/Shrink network select clustering partition as the First partition Partition/Count
Za april 2022 dobimo (klik na ustrezni register)
1 2 3 4 5 6 7 8 9 Label -------------------------------------------------------------------------------- 1. 51934 23424 72685 14499 36016 45941 13235 9347 9787 #v1 1. 47 - #v1 2. 23424 34047 36714 0 42487 10418 26731 106358 1442 #v2 2. 11 - #v2 3. 72685 36714 334267 5562 522702 34194 58636 192011 5373 #v4 3. 24 - #v4 4. 14499 0 5562 43790 348917 0 5593 458 0 #v6 4. 7 - #v6 5. 36016 42487 522702 348917 927203 6737 22678 121872 7797 #v7 5. 19 - #v7 6. 45941 10418 34194 0 6737 55999 4821 31 8993 #v15 6. 12 - #v15 7. 13235 26731 58636 5593 22678 4821 59184 4508 828 #v19 7. 15 - #v19 8. 9347 106358 192011 458 121872 31 4508 94293 1494 #v24 8. 8 - #v24 9. 9787 1442 5373 0 7797 8993 828 1494 36673 #v36 9. 11 - #v36
Dobljene podatke v znakovnem urejevalniku zložimo v tabelo in jo preberemo v R.
Vrednosti v matriki M moramo še normalizirati. Za i ≠ j je normalizirana utež Q[i,j] = M[i,j]/(n[i].n[j]) in za i = j je Q[i,i] = M[i,j]/(n[i].(n[j]-1)) (za usmerjeno omrežje; ali njen dvokratnik za neusmerjeno omrežje).
S <- read.table("./pics/shrink22.csv",head=TRUE) M <- as.matrix(S[,1:9]) B <- matrix(0,nrow=9,ncol=9) for(i in 1:9) for(j in 1:9) B[i,j] <- M[i,j] / S$n[i] / (S$n[j]-(i==j)) diag(B) <- 2*diag(B) matrix2net(B,Net="BM22.net")
Dobljeno normalizirano matriko izvozimo kot Pajkovo omrežje in ga prikažemo v Pajku.
PS1. Pri normalizaciji bi lahko delili tudi s številom povezav v bloku - dobimo jih tako, da v omrežju najprej vse uteži postavimo na 1 in nato opravimo skrčitev.
PS2. Celotno normalizacijo je mogoče opraviti v Pajku (prosojnice mojega uvoda v analizo omrežij).
Na slikah so uteži povezav, zaradi velikega razpona vrednosti, korenjene.
Iz zadnje slike vidimo (razmestitev vozlišč je ista), da 1-sosedi kar dobro prepoznajo skupke močneje povezanih oseb.
Glede na svojo naravo je ta relacija najbrž skoraj enaka za obe obdobji.
Ker imata obe relaciji vsaka le po 8 povezav, sem ju prikazal skupaj.
Omrežje je v R-ju analiziral Marjan Cugmas
library(blockmodeling) mat <- loadmatrix("Apr22Sum.mat") plotMat(mat) if (FALSE) { resHomSSStr <- optRandomParC(M = mat, k = 9, rep = 1000, approach = "hom", homFun = "ss", blocks = c("nul", "com"), nCores = 0) saveRDS(resHomSSStr, "resHomSSStr.RDS") } resHomSSStr <- readRDS("resHomSSStr.RDS") clu(resHomSSStr)
Dobljeno razbitje izvozimo v Pajka
> mar <- readRDS("./marjan/resHomSSStr.RDS") > str(mar) > mar$best$best1$clu [1] 4 5 4 7 2 8 1 4 2 2 2 4 4 4 4 1 2 8 4 4 4 4 9 5 4 4 4 1 4 4 4 8 4 4 4 4 9 4 5 4 4 4 4 8 4 4 2 2 9 4 9 [52] 2 4 4 4 4 4 4 7 1 2 6 5 4 4 4 9 7 4 4 4 1 7 9 8 4 4 2 4 9 4 4 4 4 4 4 4 2 4 4 4 2 5 2 4 4 2 4 2 7 4 5 [103] 5 4 5 6 6 4 4 4 6 4 4 4 4 4 4 4 6 4 4 6 9 4 4 2 4 4 4 4 4 2 9 4 2 4 2 4 4 2 4 4 4 1 4 4 4 4 4 6 4 3 2 [154] 8 > vector2clu(mar$best$best1$clu,Clu="./pics/marjan.clu")
in ga prikažemo kot matriko.