CondIndependentTest.R 1.35 KB
#This file is to test the conditional independence of two variable giving 2 parent set. Please read README file before first executing this code.

CondIndTwoVar = 
  function (filename = "/home/zgong001/Documents/SprinklerDataset/sprinkler1001.txt", alphalevel = 0.05, methodu="x2", exfilename = "/home/zgong001/Documents/SprinklerDataset/pvalueSorted(sprinkler).xlsx"){
    library(bnlearn)
    result = data.frame()
    sprinkler <- read.table(filename, header = TRUE)
    columname = colnames(sprinkler)
    m=length(columname)
    x=seq(0,m-1,by=1)
    colnames(sprinkler)=x
    columname = colnames(sprinkler)
    TwoVComb = combn(columname,2)
    for(jt in 1:ncol(TwoVComb)){
      twoV = c(TwoVComb[1,jt], TwoVComb[2,jt])
      columnameT = columname[! columname %in% twoV]
      colComb = combn(columnameT,2)
      for (j in 1:ncol(colComb)){
        citest = ci.test(colComb[1,j], colComb[2,j], twoV, test = methodu, data = sprinkler)
        lable = paste(paste(colComb[1,j], colComb[2,j],sep=", "), "|", paste(twoV[1], twoV[2], sep=", "), sep=" ")
        pvalue = citest$p.value
        CIlist= data.frame("Index" = lable, "pvalue" = pvalue)
        result = rbind(result, CIlist)
      }
    }
    result2 = result[order(-result[,2]), ]
    write.xlsx(result2, exfilename, sheetName = "Sheet1", col.names = TRUE, row.names = TRUE, append = FALSE)
    return(result2)
  }