> land.t <- read.table(('/home/michel/Www/INF6304/Lab/RI/landauer.rtable')) > land.t c1 c2 c3 c4 c5 m1 m2 m3 m4 human 1 0 0 1 0 0 0 0 0 interface 1 0 1 0 0 0 0 0 0 computer 1 1 0 0 0 0 0 0 0 user 0 1 1 0 1 0 0 0 0 system 0 1 1 2 0 0 0 0 0 response 0 1 0 0 1 0 0 0 0 time 0 1 0 0 1 0 0 0 0 EPS 0 0 1 1 0 0 0 0 0 survey 0 1 0 0 0 0 0 0 1 trees 0 0 0 0 0 1 1 1 0 graph 0 0 0 0 0 0 1 1 1 minors 0 0 0 0 0 0 0 1 1 > land <- as.matrix(land.t) > land.svd <- svd(land) > land.svd $d [1] 3.3408838 2.5417010 2.3539435 1.6445323 1.5048316 1.3063820 0.8459031 [8] 0.5601344 0.3636768 $u [,1] [,2] [,3] [,4] [,5] [,6] [1,] -0.22135078 -0.11317962 0.2889582 -0.4147507404 -0.10627512 -0.34098332 [2,] -0.19764540 -0.07208778 0.1350396 -0.5522395837 0.28176894 0.49587801 [3,] -0.24047023 0.04315195 -0.1644291 -0.5949618181 -0.10675529 -0.25495513 [4,] -0.40359886 0.05707026 -0.3378035 0.0991137295 0.33173372 0.38483192 [5,] -0.64448115 -0.16730121 0.3611482 0.3334616013 -0.15895498 -0.20652259 [6,] -0.26503747 0.10715957 -0.4259985 0.0738121922 0.08031938 -0.16967639 [7,] -0.26503747 0.10715957 -0.4259985 0.0738121922 0.08031938 -0.16967639 [8,] -0.30082816 -0.14127047 0.3303084 0.1880919179 0.11478462 0.27215528 [9,] -0.20591786 0.27364743 -0.1775970 -0.0323519366 -0.53715000 0.08094398 [10,] -0.01274618 0.49016179 0.2311202 0.0248019985 0.59416952 -0.39212506 [11,] -0.03613585 0.62278523 0.2230864 0.0007000721 -0.06825294 0.11490895 [12,] -0.03175633 0.45050892 0.1411152 -0.0087294706 -0.30049511 0.27734340 [,7] [,8] [,9] [1,] -0.522657771 0.0604501376 0.40667751 [2,] 0.070423441 0.0099400372 0.10893027 [3,] 0.302240236 -0.0623280150 -0.49244436 [4,] -0.002872175 0.0003905042 -0.01232935 [5,] 0.165828575 -0.0342720233 -0.27069629 [6,] -0.282915727 0.0161465472 0.05387469 [7,] -0.282915727 0.0161465472 0.05387469 [8,] -0.032994110 0.0189980144 0.16533917 [9,] 0.466897525 0.0362988295 0.57942611 [10,] 0.288317461 -0.2545679452 0.22542407 [11,] -0.159575477 0.6811254380 -0.23196123 [12,] -0.339495286 -0.6784178789 -0.18253498 $v [,1] [,2] [,3] [,4] [,5] [1,] -0.197392802 -0.05591352 0.11026973 -0.94978502 0.04567856 [2,] -0.605990269 0.16559288 -0.49732649 -0.02864890 -0.20632728 [3,] -0.462917508 -0.12731206 0.20760595 0.04160920 0.37833623 [4,] -0.542114417 -0.23175523 0.56992145 0.26771404 -0.20560471 [5,] -0.279469108 0.10677472 -0.50544991 0.15003543 0.32719441 [6,] -0.003815213 0.19284794 0.09818424 0.01508149 0.39484121 [7,] -0.014631468 0.43787488 0.19295557 0.01550719 0.34948535 [8,] -0.024136835 0.61512190 0.25290398 0.01019901 0.14979847 [9,] -0.081957368 0.52993707 0.07927315 -0.02455491 -0.60199299 [,6] [,7] [,8] [,9] [1,] -7.659356e-02 -0.17731830 0.014393259 0.06369229 [2,] -2.564752e-01 0.43298424 -0.049305326 -0.24278290 [3,] 7.243996e-01 0.23688970 -0.008825502 -0.02407687 [4,] -3.688609e-01 -0.26479952 0.019466944 0.08420690 [5,] 3.481305e-02 -0.67230353 0.058349563 0.26237588 [6,] -3.001611e-01 0.34083983 -0.454476523 0.61984719 [7,] -2.122014e-01 0.15219472 0.761527011 -0.01797518 [8,] 9.743417e-05 -0.24914592 -0.449642757 -0.51989050 [9,] 3.622190e-01 -0.03803419 0.069637550 0.45350675 > round(land.svd$u %*% diag(land.svd$d) %*% t(land.svd$v),2) [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [1,] 1 0 0 1 0 0 0 0 0 [2,] 1 0 1 0 0 0 0 0 0 [3,] 1 1 0 0 0 0 0 0 0 [4,] 0 1 1 0 1 0 0 0 0 [5,] 0 1 1 2 0 0 0 0 0 [6,] 0 1 0 0 1 0 0 0 0 [7,] 0 1 0 0 1 0 0 0 0 [8,] 0 0 1 1 0 0 0 0 0 [9,] 0 1 0 0 0 0 0 0 1 [10,] 0 0 0 0 0 1 1 1 0 [11,] 0 0 0 0 0 0 1 1 1 [12,] 0 0 0 0 0 0 0 1 1 > round(land.svd$u %*% (diag({temp=land.svd$d;temp[3:9]=0;temp}))%*% t(land.svd$v),2) [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [1,] 0.16 0.40 0.38 0.47 0.18 -0.05 -0.12 -0.16 -0.09 [2,] 0.14 0.37 0.33 0.40 0.16 -0.03 -0.07 -0.10 -0.04 [3,] 0.15 0.51 0.36 0.41 0.24 0.02 0.06 0.09 0.12 [4,] 0.26 0.84 0.61 0.70 0.39 0.03 0.08 0.12 0.19 [5,] 0.45 1.23 1.05 1.27 0.56 -0.07 -0.15 -0.21 -0.05 [6,] 0.16 0.58 0.38 0.42 0.28 0.06 0.13 0.19 0.22 [7,] 0.16 0.58 0.38 0.42 0.28 0.06 0.13 0.19 0.22 [8,] 0.22 0.55 0.51 0.63 0.24 -0.07 -0.14 -0.20 -0.11 [9,] 0.10 0.53 0.23 0.21 0.27 0.14 0.31 0.44 0.42 [10,] -0.06 0.23 -0.14 -0.27 0.14 0.24 0.55 0.77 0.66 [11,] -0.06 0.34 -0.15 -0.30 0.20 0.31 0.69 0.98 0.85 [12,] -0.04 0.25 -0.10 -0.21 0.15 0.22 0.50 0.71 0.62 > temp [1] 3.340884 2.541701 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 [9] 0.000000 > land.svd2 <- round(land.svd$u %*% (diag({temp=land.svd$d;temp[3:9]=0;temp}))%*% t(land.svd$v),2) > round(lower.tri(cor(land), diag=T) * cor(land),2) c1 c2 c3 c4 c5 m1 m2 m3 m4 c1 1.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0 c2 -0.19 1.00 0.00 0.00 0.00 0.00 0.00 0.00 0 c3 0.00 0.00 1.00 0.00 0.00 0.00 0.00 0.00 0 c4 0.00 0.00 0.47 1.00 0.00 0.00 0.00 0.00 0 c5 -0.33 0.58 0.00 -0.31 1.00 0.00 0.00 0.00 0 m1 -0.17 -0.30 -0.21 -0.16 -0.17 1.00 0.00 0.00 0 m2 -0.26 -0.45 -0.32 -0.24 -0.26 0.67 1.00 0.00 0 m3 -0.33 -0.58 -0.41 -0.31 -0.33 0.52 0.77 1.00 0 m4 -0.33 -0.19 -0.41 -0.31 -0.33 -0.17 0.26 0.56 1 > round(lower.tri(cor(land), diag=T) * cor(land.svd2),2) [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [1,] 1.00 0.00 0.00 0.00 0.00 0 0 0 0 [2,] 0.91 1.00 0.00 0.00 0.00 0 0 0 0 [3,] 1.00 0.91 1.00 0.00 0.00 0 0 0 0 [4,] 1.00 0.88 1.00 1.00 0.00 0 0 0 0 [5,] 0.85 0.99 0.85 0.81 1.00 0 0 0 0 [6,] -0.85 -0.56 -0.85 -0.88 -0.45 1 0 0 0 [7,] -0.85 -0.56 -0.85 -0.88 -0.44 1 1 0 0 [8,] -0.85 -0.56 -0.85 -0.88 -0.44 1 1 1 0 [9,] -0.81 -0.50 -0.81 -0.84 -0.37 1 1 1 1 Exemple de Grossman et Frieder > m D1 D2 D3 a 1 1 1 arrived 0 1 1 damaged 1 0 0 delivery 0 1 0 fire 1 0 0 gold 1 0 1 in 1 1 1 of 1 1 1 shipment 1 0 1 sliver 0 2 0 truck 0 1 1 > m.svd <- svd(m) > dim(m) [1] 11 3 > q=rep(0,11) > q[c(6,10,11)]=1 > q [1] 0 0 0 0 0 1 0 0 0 1 1 > t(q) %*% m.svd$u[,1:2] %*% solve(diag(m.svd$d[1:2])) [,1] [,2] [1,] -0.2140026 0.1820571 > t(m) %*% m.svd$u[,1:2] %*% solve(diag(m.svd$d[1:2])) [,1] [,2] D1 -0.4944666 -0.6491758 D2 -0.6458224 0.7194469 D3 -0.5817355 -0.2469149 > rbind(t(m) %*% m.svd$u[,1:2] %*% solve(diag(m.svd$d[1:2])),t(q) %*% m.svd$u[,1:2] %*% solve(diag(m.svd$d[1:2]))) [,1] [,2] D1 -0.4944666 -0.6491758 D2 -0.6458224 0.7194469 D3 -0.5817355 -0.2469149 -0.2140026 0.1820571 > matrix.cos((rbind(t(m) %*% m.svd$u[,1:2] %*% solve(diag(m.svd$d[1:2])),t(q) %*% m.svd$u[,1:2] %*% solve(diag(m.svd$d[1:2]))))) D1 D2 D3 D1 1.00000000 -0.1872244 0.8685840 -0.05395084 D2 -0.18722443 1.0000000 0.3241593 0.99098743 D3 0.86858397 0.3241593 1.0000000 0.44795947 -0.05395084 0.9909874 0.4479595 1.00000000 >