Learn R Programming

gRain (version 1.4.5)

components_extract: Extract conditional probabilities and clique potentials from data.

Description

Extract list of conditional probability tables and list of clique potentials from data.

Usage

extract_cpt(data_, graph, smooth = 0)

extract_pot(data_, graph, smooth = 0)

extract_marg(data_, graph, smooth = 0)

marg2pot(marg_rep)

pot2marg(pot_rep)

Value

  • extract_cpt: A list of conditional probability tables.

  • extract_pot: A list of clique potentials.

  • extract_marg: A list of clique marginals.

Arguments

data_

A named array or a dataframe.

graph

An igraph object or a list or formula which can be turned into a igraph object by calling ug or dag. For extract_cpt, graph must be/define a DAG while for extract_pot, graph must be/define undirected triangulated graph.

smooth

See 'details' below.

marg_rep

An object of class marg_rep

pot_rep

An object of class pot_representation

Author

Søren Højsgaard, sorenh@math.aau.dk

Details

If smooth is non-zero then smooth is added to all cell counts before normalization takes place.

References

Søren Højsgaard (2012). Graphical Independence Networks with the gRain Package for R. Journal of Statistical Software, 46(10), 1-26. https://www.jstatsoft.org/v46/i10/.

See Also

compileCPT, compilePOT, grain

Examples

Run this code

## Extract cpts / clique potentials from data and graph
# specification and create network. There are different ways:

data(lizard, package="gRbase")

# DAG: height <- species -> diam
daG <- dag(~species + height:species + diam:species, result="igraph")

# UG : [height:species][diam:species]
uG  <- ug(~height:species + diam:species, result="igraph")

pt <- extract_pot(lizard, ~height:species + diam:species) 
cp <- extract_cpt(lizard, ~species + height:species + diam:species)

pt
cp

# Both specify the same probability distribution
tabListMult(pt) |> as.data.frame.table()
tabListMult(cp) |> as.data.frame.table()

if (FALSE) {
# Bayesian networks can be created as
bn.uG   <- grain(pt)
bn.daG  <- grain(cp)

# The steps above are wrapped into a convenience method which
# builds a network from at graph and data.
bn.uG   <- grain(uG, data=lizard)
bn.daG  <- grain(daG, data=lizard)
}

Run the code above in your browser using DataLab