Inference (discrete & continuous) with a Bayesian network from R
source("bayesserver.R")
networkPath <- "C:/ProgramData/Bayes Server 7.7/Sample Networks/Waste.bayes"
network <- new(Network)
network$load(networkPath)
variables <- network$getVariables()
print(variables$size())
filterState <- variables$get("Filter state", TRUE)
filterStateIntact <- filterState$getStates()$get("Intact", TRUE)
dustEmission <- variables$get("Dust emission", TRUE)
wasteType <- variables$get("Waste type", TRUE)
wasteTypeIndustrial <- wasteType$getStates()$get("Industrial", TRUE)
wasteTypeHousehold <- wasteType$getStates()$get("Household", TRUE)
metalsInWaste <- variables$get("Metals in waste", TRUE)
factory <- new(RelevanceTreeInferenceFactory)
inference <- factory$createInferenceEngine(network)
queryOptions <- factory$createQueryOptions()
queryOutput <- factory$createQueryOutput()
queryWasteType <- new(Table, wasteType)
queryMetalsInWaste <- new(CLGaussian, metalsInWaste)
queryDistributions <- inference$getQueryDistributions()
queryDistributions$add(queryWasteType)
queryDistributions$add(queryMetalsInWaste)
evidence <- inference$getEvidence()
evidence$setState(filterStateIntact)
evidence$set(dustEmission, new( Double, "3.0"))
inference$query(queryOptions, queryOutput)
print(queryWasteType$get(toStateArray(wasteTypeIndustrial)))
print(queryWasteType$get(toStateArray(wasteTypeHousehold)))
print(queryMetalsInWaste$getMean(metalsInWaste))
print(queryMetalsInWaste$getVariance(metalsInWaste))