0

我对使用 R 还是很陌生(只有几个月),我正在尝试为我的研究(生物学)建立一个贝叶斯网络(BN)。我已经用离散变量完成了所有这些,但是,我现在也在尝试整合连续变量,我知道这可能是一个问题。现在我只是在构建一个 BN 以在MoTBFs包中使用来构建一个混合网络,使用bnlearn包。这是我的数据:

head(training)
Sample rs12913832 rs16891982 rs12203592 rs1800407 rs3829241 rs1805007 rs1408799  rs683 rs3737576
1   1078         CT         GG         GG        CT        GG        CC        GG     TT        TT
2   1254         TT         CC         GG        CC        GG        CC        AG     GG        TT
3   1285         CT         GG         GG        CC        GG        CC        GG     TT        TT
4   1308         CT         GG         GG        CC        AG        CT        AG     GT        TT
5   1382         CC         GG         GG        CC        AA        CT        AG     GT        TT

我在下面得到了这个字符串,因为我只针对上述数据中的几个 SNP:

bn.bayes.Leye<-mmhc(trainingmotbf2[,c(2:6,8,18,26)])

但是,它没有创建正确的弧,因此我尝试创建一个白名单,如下所示(L 是上面子集中未显示的列):

  from         to
1    L rs12913832
2    L  rs1800407
3    L rs16891982
4    L  rs1408799
5    L  rs3829241
6    L rs12203952
7    L rs12896399

当我尝试添加此白名单时,调用whitebn 函数:

bn.bayes.Leye<-mmhc(trainingmotbf2[,c(2:6,8,18,26)],whitelist=white)
Error in build.whitelist(whitelist, nodes = names(x), data = x, algo =     method,  : 
  unknown node label present in the whitelist.

现在错误并不神秘,但白名单中的所有名称都在数据框中。它们出现在白名单中成功创建的 bn 中。我已经尝试将数据作为因素和字符认为必须是某种格式,但同样的错误。我错过了什么?

有没有人有经验或建议的包来构建具有连续父节点和离散子节点的 BN?也许这个MoTBFs包不是我应该使用的。

4

1 回答 1

0

对于任何感兴趣的人,我都可以通过重新编码创建白名单的方式来使其工作。也许是因为我在每种情况下都单独使用 L 而不是单独使用可能是问题所在。

arcs<-data.frame(from="L",to=c("rs12913832","rs16891982","rs12203592","rs1800407","rs12896399","rs3829241","rs1408799"))
于 2017-03-08T13:00:43.637 回答