====== Slovenija 2024 - Četrti poskus / Analize ====== * [[..:ostro|Oštro]]; [[vlado:work:tra:ostro:slo1|Prvi poskus]]; [[vlado:work:tra:ostro:slo2|Drugi poskus]]; [[vlado:work:tra:ostro:slo3|Tretji poskus]]; [[vlado:work:tra:ostro:slo4|Četrti poskus]]; [[https://github.com/bavla/TQ/blob/master/trajectories/Feb24/README.md|GitHub/Slike]] ===== Priprava ===== 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. ┚--------------------------------------------------------------- ===== Omrežje k-sosedov ===== 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] ===== Ogrodje PathFinder ===== 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 ===== Izrez na danem pragu ===== 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 ===== Prikaz razbitij na sliki omrežja ===== 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: - Partition: party - Partition: position - Partition: gender Prikaz omrežja zahtevamo z Draw/Network+First Partition. Sprva bo prikazana le pripadnost strankam kot barva vozlišča. Izbral sem naslednje svetle barve {{.:pics:nodecolors.png?200}} 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 - ♜ : minister - ♟ : poslanec - ♛ : predsednik vlade - ♞ : sekretar 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. ===== Matrični prikaz omrežja ===== 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. ===== Bločni model ===== 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). ===== Prikazi izbranih relacij ===== Na slikah so uteži povezav, zaradi velikega razpona vrednosti, korenjene. ==== Relacija 4: Strankarske povezave ==== * [[https://raw.githubusercontent.com/bavla/TQ/master/trajectories/Feb24/1-neigbApr22Party.svg|1-sosedi do aprila 2022]] * [[https://raw.githubusercontent.com/bavla/TQ/master/trajectories/Feb24/1-neigbFeb24Party.svg|1-sosedi do februarja 2024]] * [[https://raw.githubusercontent.com/bavla/TQ/master/trajectories/Feb24/Feb24Party.svg|Celotno omrežje do februarja 2024]] Iz zadnje slike vidimo (razmestitev vozlišč je ista), da 1-sosedi kar dobro prepoznajo skupke močneje povezanih oseb. ==== Relacija 1: Delovne povezave ==== * [[https://raw.githubusercontent.com/bavla/TQ/master/trajectories/Feb24/cut3000Apr22Work.svg|Izrez na pragu 3000 do aprila 2022]] * [[https://raw.githubusercontent.com/bavla/TQ/master/trajectories/Feb24/1-neigbApr22Work.svg|1-sosedi do aprila 2022]] ==== Relacija 2: Izobraževanje ==== Glede na svojo naravo je ta relacija najbrž skoraj enaka za obe obdobji. * [[https://raw.githubusercontent.com/bavla/TQ/master/trajectories/Feb24/Feb24Edu.svg|Celotno omrežje do februarja 2024]] ==== Relaciji 3: Prostočasne aktivnosti (zelena) in 5: Svetovanje in nadzor (rdeča) ==== Ker imata obe relaciji vsaka le po 8 povezav, sem ju prikazal skupaj. * [[https://raw.githubusercontent.com/bavla/TQ/master/trajectories/Feb24/Feb24Other.svg|Celotno omrežje do februarja 2024]] ==== Vse relacije združene v eno ==== * [[https://raw.githubusercontent.com/bavla/TQ/master/trajectories/Feb24/1-neigbApr22all.svg|1-sosedi do april 2022]] * [[https://raw.githubusercontent.com/bavla/TQ/master/trajectories/Feb24/matrix22b.svg|Matrični prikaz do april 2022]] * [[https://github.com/bavla/TQ/blob/master/trajectories/Feb24/dendro22.pdf|Drevo začetne razvrstitve 2022]] (PDF) * [[https://github.com/bavla/TQ/blob/master/trajectories/Feb24/matrix22b.pdf|Matrika razvrstitve 2022]] (PDF) * [[https://raw.githubusercontent.com/bavla/TQ/master/trajectories/Feb24/BM22y2.svg|Bločni model 2022]] * [[https://raw.githubusercontent.com/bavla/TQ/master/trajectories/Feb24/Feb24All-1.svg|1-sosedi do februarja 2024]] * [[https://raw.githubusercontent.com/bavla/TQ/master/trajectories/Feb24/Feb24cut5M.svg|Izrez na pragu 5000 do februarja 2024]] * [[https://raw.githubusercontent.com/bavla/TQ/master/trajectories/Feb24/matrix24c.svg|Matrični prikaz do februarja 2024]] * [[https://github.com/bavla/TQ/blob/master/trajectories/Feb24/dendro24.pdf|Drevo začetne razvrstitve]] (PDF) * [[https://github.com/bavla/TQ/blob/master/trajectories/Feb24/matrix24.pdf|Matrika začetne razvrstitve]] (PDF) * [[https://github.com/bavla/TQ/blob/master/trajectories/Feb24/matrix24col.pdf|Matrika razvrstitve/barva Stranke]] (PDF) ===== Bločno modeliranje / Žiberna ===== 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 [[https://github.com/bavla/TQ/blob/master/trajectories/Feb24/marjan.pdf|matriko]].