BayesianNetwork
Building an example graph:
package main
import (
. "github.com/paddie/BayesianNetwork""fmt"
)
e:=NewRootNode("E", 0.3)
i:=NewRootNode("I", 0.7)
d:=NewRootNode("D", 0.2)
pDist:=map[string]float64{
"TTT": 0.9,
"TFF": 0.2,
"TTF": 0.5,
"TFT": 0.7,
"FTT": 0.8,
"FFF": 0.07,
"FTF": 0.6,
"FFT": 0.7,
}
p:=NewNode("P", []string{"E", "I", "D"}, pDist)
rDist:=map[string]float64{
"TT": 0.9,
"FF": 0.2,
"TF": 0.6,
"FT": 0.9,
}
r:=NewNode("R", []string{"I", "D"}, rDist)
jDist:=map[string]float64{
"T": 0.7,
"F": 0.3,
}
j:=NewNode("J", []string{"P"}, jDist)
uDist:=map[string]float64{
"TT": 0.9,
"FF": 0.3,
"TF": 0.6,
"FT": 0.8,
}
u:=NewNode("U", []string{"P", "R"}, uDist)
bn:=NewBayesianNetwork(e, i, d, p, r, j, u)
stats:=bn.AncestralSampling(10000)
fmt.Println(stats)map[E:[0.3007 0.6993] I:[0.7044 0.2956] D:[0.2054 0.7946] P:[0.5013 0.4987] R:[0.5601 0.4399] J:[0.4988 0.5012] U:[0.6611 0.3389]]