====== Bibliometric matrices ======
April 27, 2018
{{notes:zip:bimtest.zip}}
===== Example 1 =====
WW {{notes:net:pics:ww.jpg}}
WA {{notes:net:pics:wa.jpg}} WJ {{notes:net:pics:wj.jpg}}
==== Matrices in R ====
> nw <- c("p","q","r","s","t","u","v","z")
> na <- c("A","B","C","D","E")
> nj <- c("I","J","K","L")
> wa <- c(
+ 1, 0, 1, 0, 0,
+ 0, 0, 0, 1, 0,
+ 0, 0, 0, 0, 1,
+ 1, 0, 1, 1, 0,
+ 0, 0, 0, 0, 0,
+ 0, 1, 0, 0, 0,
+ 0, 0, 0, 1, 1,
+ 0, 0, 1, 0, 1 )
>
> wj <- c(
+ 0, 0, 0, 1,
+ 1, 0, 0, 0,
+ 1, 0, 0, 0,
+ 0, 1, 0, 0,
+ 0, 0, 0, 0,
+ 0, 0, 0, 1,
+ 0, 1, 0, 0,
+ 0, 0, 0, 1 )
>
> ww <- c(
+ 0, 1, 1, 0, 0, 1, 0, 0,
+ 0, 0, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1, 0, 1, 0, 0, 1,
+ 0, 0, 0, 0, 0, 1, 1, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0 )
> WA <- matrix(wa,nrow=8,ncol=5,byrow=TRUE,dimnames=list(nw,na))
> WA
A B C D E
p 1 0 1 0 0
q 0 0 0 1 0
r 0 0 0 0 1
s 1 0 1 1 0
t 0 0 0 0 0
u 0 1 0 0 0
v 0 0 0 1 1
z 0 0 1 0 1
> WW <- matrix(ww,nrow=8,ncol=8,byrow=TRUE,dimnames=list(nw,nw))
> WW
p q r s t u v z
p 0 1 1 0 0 1 0 0
q 0 0 1 0 0 0 0 0
r 0 0 0 0 0 0 0 0
s 0 0 1 0 1 0 0 1
t 0 0 0 0 0 1 1 0
u 0 0 0 0 0 0 0 0
v 0 0 0 0 0 0 0 0
z 0 0 0 0 0 0 0 0
> WJ <- matrix(wj,nrow=8,ncol=4,byrow=TRUE,dimnames=list(nw,nj))
> WJ
I J K L
p 0 0 0 1
q 1 0 0 0
r 1 0 0 0
s 0 1 0 0
t 0 0 0 0
u 0 0 0 1
v 0 1 0 0
z 0 0 0 1
>
> sum(WW)
[1] 9
> sum(WA)
[1] 12
> sum(WJ)
[1] 7
==== Normalizations ====
> nWW <- diag(1/pmax(1,rowSums(WW))) %*% WW
> rownames(nWW) <- nw
> nWW
p q r s t u v z
p 0 0.3333333 0.3333333 0 0.0000000 0.3333333 0.0 0.0000000
q 0 0.0000000 1.0000000 0 0.0000000 0.0000000 0.0 0.0000000
r 0 0.0000000 0.0000000 0 0.0000000 0.0000000 0.0 0.0000000
s 0 0.0000000 0.3333333 0 0.3333333 0.0000000 0.0 0.3333333
t 0 0.0000000 0.0000000 0 0.0000000 0.5000000 0.5 0.0000000
u 0 0.0000000 0.0000000 0 0.0000000 0.0000000 0.0 0.0000000
v 0 0.0000000 0.0000000 0 0.0000000 0.0000000 0.0 0.0000000
z 0 0.0000000 0.0000000 0 0.0000000 0.0000000 0.0 0.0000000
> nWA <- diag(1/pmax(1,rowSums(WA))) %*% WA
> rownames(nWA) <- nw
> nWA
A B C D E
p 0.5000000 0 0.5000000 0.0000000 0.0
q 0.0000000 0 0.0000000 1.0000000 0.0
r 0.0000000 0 0.0000000 0.0000000 1.0
s 0.3333333 0 0.3333333 0.3333333 0.0
t 0.0000000 0 0.0000000 0.0000000 0.0
u 0.0000000 1 0.0000000 0.0000000 0.0
v 0.0000000 0 0.0000000 0.5000000 0.5
z 0.0000000 0 0.5000000 0.0000000 0.5
> nWJ <- diag(1/pmax(1,rowSums(WJ))) %*% WJ
> rownames(nWJ) <- nw
> nWJ
I J K L
p 0 0 0 1
q 1 0 0 0
r 1 0 0 0
s 0 1 0 0
t 0 0 0 0
u 0 0 0 1
v 0 1 0 0
z 0 0 0 1
> setwd("C:/Users/batagelj/work/Python/WoS/BM/test2")
> save("na","nj","nw","nWA","nWJ","nWW","WA","WJ","WW",file="test.Rdata",ascii=TRUE)
==== AWWA ====
> M <- matrix(0,nrow=26,ncol=26)
> M[1:5,6:13] <- t(WA)
> M[6:13,14:21] <- WW
> M[14:21,22:26] <- WA
> nam <- c(paste(na,"1",sep=""),paste(nw,"1",sep=""),paste(nw,"2",sep=""),paste(na,"2",sep=""))
> rownames(M) <- nam; colnames(M) <- nam
> M
A1 B1 C1 D1 E1 p1 q1 r1 s1 t1 u1 v1 z1 p2 q2 r2 s2 t2 u2 v2 z2 A2 B2 C2 D2 E2
A1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
B1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
C1 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0
D1 0 0 0 0 0 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
E1 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0
p1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 0 0 0 0
q1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0
r1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
s1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 0 0 0 0 0
t1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0
u1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
v1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
z1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
p2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0
q2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0
r2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
s2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0
t2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
u2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0
v2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1
z2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1
A2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
B2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
C2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
D2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
E2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
AWWA {{notes:net:pics:awwa.jpg}}
==== Variants ====
=== AW*WW*WA ===
> AA1 <- t(WA) %*% WW %*% WA
> AA1
A B C D E
A 0 1 1 1 3
B 0 0 0 0 0
C 0 1 1 1 3
D 0 0 1 0 3
E 0 0 0 0 0
> rowSums(AA1)
A B C D E
6 0 6 4 0
> colSums(AA1)
A B C D E
0 2 3 2 9
> sum(AA1)
[1] 16
=== nAW*WW*nWA ===
> AAn <- t(nWA) %*% WW %*% nWA
> AAn
A B C D E
A 0 0.5 0.1666667 0.5 1.0
B 0 0.0 0.0000000 0.0 0.0
C 0 0.5 0.1666667 0.5 1.0
D 0 0.0 0.1666667 0.0 1.5
E 0 0.0 0.0000000 0.0 0.0
> rowSums(AAn)
A B C D E
2.166667 0.000000 2.166667 1.666667 0.000000
> sum(AAn)
[1] 6
> sWA <- rowSums(WA)
> sWA
p q r s t u v z
2 1 1 3 0 1 2 2
> colSums(AAn)
A B C D E
0.0 1.0 0.5 1.0 3.5
> wai <- which(sWA > 0)
> wai
p q r s u v z
1 2 3 4 6 7 8
> sum(WW[wai,wai])
[1] 6
=== nAW*nWW*nWA ===
> AAN <- t(nWA) %*% nWW %*% nWA
> AAN
A B C D E
A 0 0.1666667 0.05555556 0.1666667 0.3333333
B 0 0.0000000 0.00000000 0.0000000 0.0000000
C 0 0.1666667 0.05555556 0.1666667 0.3333333
D 0 0.0000000 0.05555556 0.0000000 1.1666667
E 0 0.0000000 0.00000000 0.0000000 0.0000000
> rowSums(AAN)
A B C D E
0.7222222 0.0000000 0.7222222 1.2222222 0.0000000
> colSums(AAN)
A B C D E
0.0000000 0.3333333 0.1666667 0.3333333 1.8333333
> sum(AAN)
[1] 2.666667
> sum(nWW[wai,wai])
[1] 2.666667
=== AW*nWW*WA ===
> AA2 <- t(WA) %*% nWW %*% WA
> AA2
A B C D E
A 0 0.3333333 0.3333333 0.3333333 1.000000
B 0 0.0000000 0.0000000 0.0000000 0.000000
C 0 0.3333333 0.3333333 0.3333333 1.000000
D 0 0.0000000 0.3333333 0.0000000 1.666667
E 0 0.0000000 0.0000000 0.0000000 0.000000
> rowSums(AA2)
A B C D E
2 0 2 2 0
> sum(AA2)
[1] 6
=== nAW*nWW*WA ===
> AA3 <- t(nWA) %*% nWW %*% WA
> AA3
A B C D E
A 0 0.1666667 0.1111111 0.1666667 0.3888889
B 0 0.0000000 0.0000000 0.0000000 0.0000000
C 0 0.1666667 0.1111111 0.1666667 0.3888889
D 0 0.0000000 0.1111111 0.0000000 1.2222222
E 0 0.0000000 0.0000000 0.0000000 0.0000000
> rowSums(AA3)
A B C D E
0.8333333 0.0000000 0.8333333 1.3333333 0.0000000
> colSums(AA3)
A B C D E
0.0000000 0.3333333 0.3333333 0.3333333 2.0000000
> sum(AA3)
[1] 3
=== AW*nWW*nWA ===
> AA4 <- t(WA) %*% nWW %*% nWA
> AA4
A B C D E
A 0 0.3333333 0.1666667 0.3333333 0.8333333
B 0 0.0000000 0.0000000 0.0000000 0.0000000
C 0 0.3333333 0.1666667 0.3333333 0.8333333
D 0 0.0000000 0.1666667 0.0000000 1.5000000
E 0 0.0000000 0.0000000 0.0000000 0.0000000
> rowSums(AA4)
A B C D E
1.666667 0.000000 1.666667 1.666667 0.000000
> colSums(AA4)
A B C D E
0.0000000 0.6666667 0.5000000 0.6666667 3.1666667
> sum(AA4)
[1] 5
===== Example 2 =====
We add the arc (t,C) to WA.
WA2 {{notes:net:pics:wa2.jpg}}
AWWA2 {{notes:net:pics:awwa2.jpg}}
> WA2 <- WA
> WA2[5,3] <- 1
> WA2
A B C D E
p 1 0 1 0 0
q 0 0 0 1 0
r 0 0 0 0 1
s 1 0 1 1 0
t 0 0 1 0 0
u 0 1 0 0 0
v 0 0 0 1 1
z 0 0 1 0 1
> nWA2 <- diag(1/pmax(1,rowSums(WA2))) %*% WA2
> nWA2
A B C D E
[1,] 0.5000000 0 0.5000000 0.0000000 0.0
[2,] 0.0000000 0 0.0000000 1.0000000 0.0
[3,] 0.0000000 0 0.0000000 0.0000000 1.0
[4,] 0.3333333 0 0.3333333 0.3333333 0.0
[5,] 0.0000000 0 1.0000000 0.0000000 0.0
[6,] 0.0000000 1 0.0000000 0.0000000 0.0
[7,] 0.0000000 0 0.0000000 0.5000000 0.5
[8,] 0.0000000 0 0.5000000 0.0000000 0.5
> save("na","nj","nw","nWA","nWJ","nWW","WA","WJ","WW","WA2","nWA2",file="test.Rdata",ascii=TRUE)
=== AW2*WW*WA2 ===
> AA1b <- t(WA2) %*% WW %*% WA2
> AA1b
A B C D E
A 0 1 2 1 3
B 0 0 0 0 0
C 0 2 2 2 4
D 0 0 2 0 3
E 0 0 0 0 0
> rowSums(AA1b)
A B C D E
7 0 10 5 0
> colSums(AA1b)
A B C D E
0 3 6 3 10
> sum(AA1b)
[1] 22
=== nAW2*WW*nWA2 ===
> AAnb <- t(nWA2) %*% WW %*% nWA2
> AAnb
A B C D E
A 0 0.5 0.5 0.5 1.0
B 0 0.0 0.0 0.0 0.0
C 0 1.5 0.5 1.0 1.5
D 0 0.0 0.5 0.0 1.5
E 0 0.0 0.0 0.0 0.0
> rowSums(AAnb)
A B C D E
2.5 0.0 4.5 2.0 0.0
> sum(AAnb)
[1] 9
> sWAb <- rowSums(WA2)
> sWAb
p q r s t u v z
2 1 1 3 1 1 2 2
> colSums(AAnb)
A B C D E
0.0 2.0 1.5 1.5 4.0
=== nAW2*nWW*nWA2 ===
> AANb <- t(nWA2) %*% nWW %*% nWA2
> AANb
A B C D E
A 0 0.1666667 0.1666667 0.1666667 0.3333333
B 0 0.0000000 0.0000000 0.0000000 0.0000000
C 0 0.6666667 0.1666667 0.4166667 0.5833333
D 0 0.0000000 0.1666667 0.0000000 1.1666667
E 0 0.0000000 0.0000000 0.0000000 0.0000000
> rowSums(AANb)
A B C D E
0.8333333 0.0000000 1.8333333 1.3333333 0.0000000
> colSums(AANb)
A B C D E
0.0000000 0.8333333 0.5000000 0.5833333 2.0833333
> sum(AANb)
[1] 4