Advertisement

贝叶斯网络与R语言

阅读量:

贝叶斯网络与R语言

基本语句

1.1网络的创建

#加载扩展包和bnlearn包自带数据集marks

该数据集包含了我们研究的课程成绩记录:其中所包含的数据集包括了包括了88名学生在五门课程中的考试成绩记录:具体来说涉及的具体学科领域包括力学(mechanics)向量(vectors)代数(algebra)分析(analysis)以及统计学(statistics)。

library(bnlearn)

data(marks)

str(marks)

构建一个空网络,并使节点对应于marks变量。随后通过为边分配两个元素的矩阵来构建边结构。

①生成一个无向图:

ug<- empty.graph(names(marks))

arcs(ug,check.cycles = FALSE) = matrix(c("MECH", "VECT","MECH", "ALG", "VECT", "MECH","VECT", "ALG","ALG", "MECH","ALG", "VECT", "ALG", "ANL","ALG", "STAT","ANL", "ALG","ANL","STAT", "STAT", "ALG","STAT", "ANL"),ncol = 2, byrow = TRUE,dimnames = list(c(),c("from", "to")))

#输出网络

复制代码
    plot(ug)

②生成一个有向图:

复制代码
    dg <- empty.graph(names(marks))

Arcs(dg) creates a matrix with specified columns and rows, assigning values based on the provided parameters.

plot(dg)

1.2网络的修改

手动调整现有网络结构,通过加边(set.arc)、去边(drop.arc)、颠倒(rev.arc)这些功能模块来实现目标网络结构。

复制代码
    dg2 <- empty.graph(nodes(dg))
复制代码
    plot(dg2)
复制代码
    dg2 <- set.arc(dg2, "VECT", "MECH")
复制代码
    plot(dg2)
复制代码
复制代码
    dg2 <- set.arc(dg2, "ALG", "MECH")
复制代码
    dg2 <- set.arc(dg2, "ALG", "VECT")
复制代码
    dg2 <- set.arc(dg2, "ANL", "ALG")
复制代码
    dg2 <- set.arc(dg2, "STAT", "ALG")
复制代码
    dg2 <- set.arc(dg2, "STAT", "ANL")
复制代码
    plot(dg2)
复制代码
复制代码

1.3网络的结构

我们全面希望了解网络的结构,可以使用存储在每个节点的信息。

节点的拓扑顺序

复制代码
    > node.ordering(dg)
复制代码
    [1] "STAT" "ANL"  "ALG"  "VECT" "MECH"
复制代码
        (2)节点的邻居(nbr)和the Markov blanket of the node (mb)
复制代码
    Markov blanke是指对一个节点A,它的所有父节点,子节点以及和A 有相同子节点的其它节点 。

nbr(dg, "STAT")

[1] "ALG""ANL"

mb(dg, "STAT")

[1] "ALG""ANL"

"ANL" %in%mb(dg, "STAT")

[1] TRUE

"STAT" %in%mb(dg, "ANL")

[1] TRUE

复制代码
    (3)某个给定节点的子代(child)和父代(parents)和子代的其它父代(o.par)

children(dg, "STAT")

[1] "ALG" "ANL"

parents(dg, "STAT")

character(0)

parents(dg, "MECH")

[1] "VECT" "ALG"

全部评论 (0)

还没有任何评论哟~