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