Code
branches <- matrix(c(.30, .15, .05, .18, .09, .03, .12, .06, .02),
nrow = 3, byrow = TRUE)
towers <- matrix(c(.40, .08, .02, .08, .14, .08, .02, .08, .10),
nrow = 3, byrow = TRUE)
# ratio p(y1, y2) / (p1(y1) p2(y2)): every entry is 1 exactly when independent
ratio <- function(p) p / outer(rowSums(p), colSums(p))
round(ratio(branches), 3) [,1] [,2] [,3]
[1,] 1 1 1
[2,] 1 1 1
[3,] 1 1 1
[,1] [,2] [,3]
[1,] 1.600 0.533 0.200
[2,] 0.533 1.556 1.333
[3,] 0.200 1.333 2.500

