我还是新手使用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
当我尝试将名为white
的白名单添加到bn函数时:
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
包不是我应该使用的。
答案 0 :(得分:0)
对于任何有兴趣的人,我都可以通过重新编码我创建白名单的方式来实现它。也许是因为我在每种情况下都单独使用L而不是单独使用L可能是问题。
arcs<-data.frame(from="L",to=c("rs12913832","rs16891982","rs12203592","rs1800407","rs12896399","rs3829241","rs1408799"))