- bnlearnパッケージはデータから、適切な因果ネットワークをアルゴリズムに基づいて推定するパッケージ(こちら)
- ベイジアンネットワークを与えて(Directed Acyclic Graphを作り、その各ノードに確率表を与えたもの)、さらにそこにエビデンスを設定し、エビデンスという条件のもとでの各ノード等の(条件付き)確率を再計算する
- パッケージはgRainをインストール
- gRainパッケージが要求するパッケージのうちgraphパッケージとRBGLパッケージはBioconductorから入手する必要があるので、ダウンロード先を指定してgraphパッケージをダウンロードしたうえで、gRainパッケージをCRAN(のミラー)からダウンロードする
- Short-Vignettesの例
yn <- c("yes","no")
a <- cptable(~asia, values=c(1,99),levels=yn)
t.a <- cptable(~tub|asia, values=c(5,95,1,99),levels=yn)
s <- cptable(~smoke, values=c(5,5), levels=yn)
l.s <- cptable(~lung|smoke, values=c(1,9,1,99), levels=yn)
b.s <- cptable(~bronc|smoke, values=c(6,4,3,7), levels=yn)
e.lt <- cptable(~either|lung:tub,values=c(1,0,1,0,1,0,0,1),levels=yn)
x.e <- cptable(~xray|either, values=c(98,2,5,95), levels=yn)
d.be <- cptable(~dysp|bronc:either, values=c(9,1,7,3,8,2,1,9), levels=yn)
plist <- compileCPT(list(a, t.a, s, l.s, b.s, e.lt, x.e, d.be))
plist
plist$tub
plist$either
net1 <- grain(plist)
net1
querygrain(net1, nodes=c("lung","bronc"), type="marginal")
querygrain(net1,nodes=c("lung","bronc"), type="joint")
net12 <- setEvidence(net1, nodes=c("asia", "dysp"), states=c("yes", "yes"))
querygrain( net12, nodes=c("lung","bronc") )
querygrain( net12, nodes=c("lung","bronc"), type="joint" )
net13 <- setEvidence(net1,nodes=c("either", "tub"), states=c("no","yes"))
pEvidence( net13 )
querygrain( net13, nodes=c("lung","bronc"), type="joint" )