Slovenija 2024 - Četrti poskus / Analize

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:

  1. Partition: party
  2. Partition: position
  3. 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

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

  1. ♜ : minister
  2. ♟ : poslanec
  3. ♛ : predsednik vlade
  4. ♞ : 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

Iz zadnje slike vidimo (razmestitev vozlišč je ista), da 1-sosedi kar dobro prepoznajo skupke močneje povezanih oseb.

Relacija 1: Delovne povezave

Relacija 2: Izobraževanje

Glede na svojo naravo je ta relacija najbrž skoraj enaka za obe obdobji.

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.

Vse relacije združene v eno

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 matriko.



vlado/work/tra/ostro/ana4.txt · Last modified: 2024/02/13 16:37 by vlado
 
Except where otherwise noted, content on this wiki is licensed under the following license: CC Attribution-Noncommercial-Share Alike 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki