Holmes_Burglary

Now we move on to section P13, 1.3 of Mathematical Theory of Hints. There are three SSMs that can be read from the model SSMa1: {a1 y, a1 n}, SSMa2: {a2 y, a2 n}, SSMR1: {burglary y, burglary n} x {a1 y, a1 n} x {alarm y, alarm n}, SSMR2: {a2 y, a2 n} x {alarm y, alarm n}, SSMR3: {burglary y, burglary n} x {a2 y, a2 n} x {alarm y, alarm n}. On top of which four DSMs DSMa1: P(SSMa1) -> [0,1], DSMa2: P(SSMa2) -> [0,1], DSM1: P(SSM1) -> [0,1], DSM2: P(SSM2) -> [0,1], DSM3: P(SSM3) -> [0,1] where P denotes “power set of …”. In dst in addition to SSMa1, SSMa2 we also need placeholder DSMalarm: P(SSMalarm) -> [0,1] on SSMalarm: {alarm y, alarm n} and DSMburglary: P(SSMburglary) -> [0,1] on SSMburglary: {burglary y, burglary n} for input and output and we don’t need to define SSM1, SSM2, so overall three bcas and three bcaRels need to be defined. Hopefully we will remake dst so the new syntax allows only DSM, SSM.

tt_SSMa1 <- matrix(c(1,0,0,1,1,1), nrow = 2 + 1, ncol = 2, byrow = TRUE)
m_DSMa1 <- matrix(c(0.95,0.05,0), nrow = 2 + 1, ncol = 1)
cnames_SSMa1 <- c("a1 is y", "a1 is n")
varnames_SSMa1 <- "a1"
idvar_SSMa1 <- 1
DSMa1 <- bca(tt_SSMa1, m_DSMa1, cnames = cnames_SSMa1, idvar = idvar_SSMa1, varnames = varnames_SSMa1)
bcaPrint(DSMa1)
##     DSMa1 specnb mass
## 1 a1 is y      1 0.95
## 2 a1 is n      2 0.05
tt_SSMa2 <- matrix(c(1,0,0,1,1,1), nrow = 2 + 1, ncol = 2, byrow = TRUE)
m_DSMa2 <- matrix(c(0.01,0.99,0), nrow = 2 + 1, ncol = 1)
cnames_SSMa2 <- c("a2 is y", "a2 is n") 
varnames_SSMa2 <- "a2"
idvar_SSMa2 <- 2
DSMa2 <- bca(tt_SSMa2, m_DSMa2, cnames = cnames_SSMa2, idvar = idvar_SSMa2, varnames = varnames_SSMa2)
bcaPrint(DSMa2)
##     DSMa2 specnb mass
## 1 a2 is y      1 0.01
## 2 a2 is n      2 0.99
tt_SSMalarm <- matrix(c(1,0,1,1), nrow = 1 + 1, ncol = 2, byrow = TRUE)
m_DSMalarm <- matrix(c(1,0), nrow = 1 + 1, ncol = 1)
cnames_SSMalarm <- c("alarm is y", "alarm is n") 
varnames_SSMalarm <- "alarm"
idvar_SSMalarm <- 3
DSMalarm <- bca(tt_SSMalarm, m_DSMalarm, cnames = cnames_SSMalarm, idvar = idvar_SSMalarm, varnames = varnames_SSMalarm)
bcaPrint(DSMalarm)
##     DSMalarm specnb mass
## 1 alarm is y      1    1
tt_SSMburglary <- matrix(c(1,1), nrow = 1, ncol = 2, byrow = TRUE)
m_DSMburglary <- matrix(c(1), nrow = 1, ncol = 1)
cnames_SSMburglary <- c("burglary is y", "burglary is n") 
varnames_SSMburglary <- "burglary"
idvar_SSMburglary <- 4
DSMburglary <- bca(tt_SSMburglary, m_DSMburglary, cnames_SSMburglary, idvar = idvar_SSMburglary, varnames = varnames_SSMburglary)
bcaPrint(DSMburglary)
##   DSMburglary specnb mass
## 1       frame      1    1
tt_SSMR1 <- matrix(c(0,1,0,1,0,1,
                     1,0,0,1,0,1,
                     0,1,0,1,1,0,
                     1,0,0,1,1,0,
                     0,1,1,0,0,1,
                     0,1,1,0,1,0,
                     1,0,1,0,1,0,
                     1,1,1,1,1,1), nrow = 7 + 1, ncol = 6, byrow = TRUE, dimnames = list(NULL, c("burglary is y", "burglary is n", "a1 is y", "a1 is n", "alarm is y", "alarm is n")))
spec_DSMR1 <- matrix(c(1,1,1,1,1,1,1,2,
                       1,1,1,1,1,1,1,0), nrow = 7 + 1, ncol = 2)
infovar_SSMR1 <- matrix(c(4,1,3,2,2,2), nrow = 3, ncol = 2)
varnames_SSMR1 <- c("burglary", "a1", "alarm")
relnb_SSMR1 <- 1
DSMR1 <- bcaRel(tt_SSMR1, spec_DSMR1, infovar_SSMR1, varnames_SSMR1, relnb_SSMR1)
bcaPrint(DSMR1)
##                                                                                                                                                                                                                                                DSMR1
## 1 burglary is y a1 is y alarm is y + burglary is y a1 is n alarm is y + burglary is y a1 is n alarm is n + burglary is n a1 is y alarm is y + burglary is n a1 is y alarm is n + burglary is n a1 is n alarm is y + burglary is n a1 is n alarm is n
##   specnb mass
## 1      1    1
tt_SSMR2 <- matrix(c(0,1,0,1,
                     0,1,1,0,
                     1,0,1,0,
                     1,1,1,1), nrow = 3 + 1, ncol = 4, byrow = TRUE, dimnames = list(NULL, c("a2 is y", "a2 is n", "alarm is y", "alarm is n")))
spec_DSMR2 <- matrix(c(1,1,1,2,1,1,1,0), nrow = 3 + 1, ncol = 2)
infovar_SSMR2 <- matrix(c(2,3,2,2), nrow = 2, ncol = 2)
varnames_SSMR2 <- c("a2", "alarm")
relnb_SSMR2 <- 2
DSMR2 <- bcaRel(tt_SSMR2, spec_DSMR2, infovar_SSMR2, varnames_SSMR2, relnb_SSMR2)
bcaPrint(DSMR2)
##                                                          DSMR2 specnb mass
## 1 a2 is y alarm is y + a2 is n alarm is y + a2 is n alarm is n      1    1
tt_SSMR3 <- matrix(c(0,1,0,1,0,1,
                     1,0,0,1,0,1,
                     0,1,0,1,1,0,
                     1,0,0,1,1,0,
                     0,1,1,0,0,1,
                     0,1,1,0,1,0,
                     1,0,1,0,1,0,
                     1,1,1,1,1,1), nrow = 7 + 1, ncol = 6, byrow = TRUE, dimnames = list(NULL, c("burglary is y", "burglary is n", "a2 is y", "a2 is n", "alarm is y", "alarm is n")))
spec_DSMR3 <- matrix(c(1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,0), nrow = 7 + 1, ncol = 2)
infovar_SSMR3 <- matrix(c(4,2,3,2,2,2), nrow = 3, ncol = 2)
varnames_SSMR3 <- c("burglary", "a2", "alarm")
relnb_SSMR3 <- 3
DSMR3 <- bcaRel(tt_SSMR3, spec_DSMR3, infovar_SSMR3, varnames_SSMR3, relnb_SSMR3)
bcaPrint(DSMR3)
##                                                                                                                                                                                                                                                DSMR3
## 1 burglary is y a2 is y alarm is y + burglary is y a2 is n alarm is y + burglary is y a2 is n alarm is n + burglary is n a2 is y alarm is y + burglary is n a2 is y alarm is n + burglary is n a2 is n alarm is y + burglary is n a2 is n alarm is n
##   specnb mass
## 1      1    1

Next we traverse the graph in syntax of DS-ECP. If we project up DSMa1, DSMalarm from their own SSMs to SSMR1 we can combine resulting DSM with DSMR1 and project down onto DSM1 on SSM1: burgalry x alarm by eliminating a1. If we project up DSMa2, DSMalarm from their own SSMs to SSMR2 we can combine the resulting DSM with DSMR2, which can then be extended to combine with DSMR3 and then eliminate a2. Having gotten that one can combine the two DSMs between burglary x alarm and eliminate alarm.

# combine DSMa1, DSMalarm with DSMR1 to eliminate a1 and get DSM1
DSMa1_uproj <- extmin(DSMa1, DSMR1)
DSMalarm_uproj <- extmin(DSMalarm, DSMR1)
DSM1 <- dsrwon(DSMa1_uproj, DSMR1)
DSM1 <- dsrwon(DSMalarm_uproj, DSM1)
DSM1_dproj <- elim(DSM1, 1)
bcaPrint(DSM1_dproj)
##                                            DSM1_dproj specnb mass
## 1 burglary is y alarm is y + burglary is n alarm is y      1    1
# combine DSMa2, DSMalarm with DSMR2 to get DSM2
DSMa2_uproj <- extmin(DSMa2, DSMR2)
DSMalarm_uproj <- extmin(DSMalarm, DSMR2)
DSM2 <- dsrwon(DSMa2_uproj, DSMR2)
bcaPrint(DSM2)
##                                      DSM2 specnb mass
## 1                      a2 is y alarm is y      1 0.01
## 2 a2 is n alarm is y + a2 is n alarm is n      2 0.99
# combine DSM2 and DSMR3 to eliminate to eliminate a2 and get DSM4
DSM2_uproj <- extmin(DSM2, DSMR3)
DSM4 <- dsrwon(DSM2_uproj, DSMR3)
DSM4_dproj <- elim(DSM4, 2)
bcaPrint(DSM4_dproj)
##                                            DSM4_dproj specnb mass
## 1 burglary is y alarm is y + burglary is n alarm is y      1 0.01
## 2                                               frame      3 0.99
# combine DSM4 and DSM1 to eliminate alarm and get DSM5
DSM5 <- dsrwon(DSM4_dproj, DSM1_dproj)
bcaPrint(DSM4_dproj)
##                                            DSM4_dproj specnb mass
## 1 burglary is y alarm is y + burglary is n alarm is y      1 0.01
## 2                                               frame      3 0.99
bcaPrint(DSM1_dproj)
##                                            DSM1_dproj specnb mass
## 1 burglary is y alarm is y + burglary is n alarm is y      1    1
bcaPrint(DSM5)
##                                                  DSM5 specnb mass
## 1 burglary is y alarm is y + burglary is n alarm is y      1    1
DSM5_dproj <- elim(DSM5, 3)
DSA <- belplau(DSM5_dproj)
DSA
##       bel disbel unc plau rplau
## frame   1      0   0    1   Inf