G square Test for (Conditional) Independence of Binary Variables
G^2 test for (conditional) independence of binary variables X and Y given the (possibly empty) set of binary variables S.
gSquareBin(x, y, S, dm, adaptDF = FALSE, n.min = 10*df, verbose = FALSE) binCItest (x, y, S, suffStat)
x,y |
(integer) position of variable X and Y, respectively, in the adjacency matrix. |
S |
(integer) positions of zero or more conditioning variables in the adjacency matrix. |
dm |
data matrix (with \{0,1\} entries). |
adaptDF |
logical specifying if the degrees of freedom should be lowered by one for each zero count. The value for the degrees of freedom cannot go below 1. |
n.min |
the smallest n (number of observations,
|
verbose |
logical or integer indicating that increased diagnostic output is to be provided. |
suffStat |
a |
The G^2 statistic is used to test for (conditional)
independence of X and Y given a set S (can be NULL). This
function is a specialized version of gSquareDis which is
for discrete variables with more than two levels.
The p-value of the test.
Nicoletta Andri and Markus Kalisch (kalisch@stat.math.ethz.ch)
R.E. Neapolitan (2004). Learning Bayesian Networks. Prentice Hall Series in Artificial Intelligence. Chapter 10.3.1
gSquareDis for a (conditional) independence test
for discrete variables with more than two levels.
dsepTest, gaussCItest and
disCItest for similar functions for a d-separation
oracle, a conditional independence test for Gaussian variables and
a conditional independence test for discrete variables, respectively.
n <- 100
set.seed(123)
## Simulate *independent data of {0,1}-variables:
x <- rbinom(n, 1, pr=1/2)
y <- rbinom(n, 1, pr=1/2)
z <- rbinom(n, 1, pr=1/2)
dat <- cbind(x,y,z)
binCItest(1,3,2, list(dm = dat, adaptDF = FALSE)) # 0.36, not signif.
binCItest(1,3,2, list(dm = dat, adaptDF = TRUE )) # the same, here
## Simulate data from a chain of 3 variables: x1 -> x2 -> x3
set.seed(12)
b0 <- 0
b1 <- 1
b2 <- 1
n <- 10000
x1 <- rbinom(n, size=1, prob=1/2) ## = sample(c(0,1), n, replace=TRUE)
## NB: plogis(u) := "expit(u)" := exp(u) / (1 + exp(u))
p2 <- plogis(b0 + b1*x1) ; x2 <- rbinom(n, 1, prob = p2) # {0,1}
p3 <- plogis(b0 + b2*x2) ; x3 <- rbinom(n, 1, prob = p2) # {0,1}
ftable(xtabs(~ x1+x2+x3))
dat <- cbind(x1,x2,x3)
## Test marginal and conditional independencies
gSquareBin(3,1,NULL,dat, verbose=TRUE)
gSquareBin(3,1, 2, dat)
gSquareBin(1,3, 2, dat) # the same
gSquareBin(1,3, 2, dat, adaptDF=TRUE, verbose = 2)Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.