====== 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]].