paddie / BayesianNetwork

A DAG (Directed Acyclic Graph) implementation of a Bayesian Network enabling Ancestral Sampling and Gibbs Sampling on Binary Discrete Variables

Home Page:http://godoc.org/github.com/paddie/BayesianNetwork

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

GoBayesianNetwork

BayesianNetwork

Example

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)

Output:

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]]

About

A DAG (Directed Acyclic Graph) implementation of a Bayesian Network enabling Ancestral Sampling and Gibbs Sampling on Binary Discrete Variables

http://godoc.org/github.com/paddie/BayesianNetwork


Languages

Language:Go 100.0%