我仍然是使用R(仅几个月)的新手,我正在尝试建立一个贝叶斯网络(BN)进行研究(生物学)。我已经使用离散变量完成了所有这些工作,但是,我现在也试图集成连续的变量,我知道这可能是一个问题。现在,我只是在MoTBFs
软件包中构建一个BN,以使用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
软件包不是我应该使用的。
对于任何有兴趣的人来说,我能够通过重新编码我创建白名单来使它起作用。也许是因为我在每种情况下单独使用L,而不是单身可能是问题。
arcs<-data.frame(from="L",to=c("rs12913832","rs16891982","rs12203592","rs1800407","rs12896399","rs3829241","rs1408799"))