The way to go

Reference

Join Distribution

Student Example

Present a student in a course through 3 varaibles:

I <- c('i0', 'i0', 'i0', 'i0',  'i0', 'i0', 'i1', 'i1', 'i1', 'i1', 'i1', 'i1')
D <- c('d0', 'd0', 'd0', 'd1', 'd1', 'd1', 'd0', 'd0', 'd0', 'd1', 'd1', 'd1')
G <- c('g1', 'g2', 'g3', 'g1', 'g2', 'g3', 'g1', 'g2', 'g3', 'g1', 'g2', 'g3')
P <- c(0.126, 0.168, 0.126, 0.009, 0.045, 0.126, 0.252, 0.0224, 0.0056, 0.06, 0.036, 0.024)
data.student <- data.frame(I=I, D=D, G=G, P=P)
data.student
##     I  D  G      P
## 1  i0 d0 g1 0.1260
## 2  i0 d0 g2 0.1680
## 3  i0 d0 g3 0.1260
## 4  i0 d1 g1 0.0090
## 5  i0 d1 g2 0.0450
## 6  i0 d1 g3 0.1260
## 7  i1 d0 g1 0.2520
## 8  i1 d0 g2 0.0224
## 9  i1 d0 g3 0.0056
## 10 i1 d1 g1 0.0600
## 11 i1 d1 g2 0.0360
## 12 i1 d1 g3 0.0240

Conditioning

Condition on \(g^1\)

data.g1 <- subset(data.student, G=='g1')

Condition ~ Reduction

data.g1
##     I  D  G     P
## 1  i0 d0 g1 0.126
## 4  i0 d1 g1 0.009
## 7  i1 d0 g1 0.252
## 10 i1 d1 g1 0.060

Conditioning: Renormalization

data.frame(I=data.g1[["I"]], D=data.g1[["D"]], P=data.g1[["P"]])
##    I  D     P
## 1 i0 d0 0.126
## 2 i0 d1 0.009
## 3 i1 d0 0.252
## 4 i1 d1 0.060