如何解决使用bnstruct计算动态贝叶斯网络
我正在尝试使用R中的 bnstruct 库来计算动态贝叶斯网络(DBN)。此处用于说明的数据是两个时间点上的七个变量。
Rep_1 <- c(0,13343.36,0.00,5.36,0.4,4.56)
Rep_2 <- c(0,10579.92,5.76,33.60,0.0,0.24)
Rep_3 <- c(0,11256.40,68.04,0.04,0.00)
expression <- rbind(Rep1,Rep2,Rep3)
colnames(expression) <- c("var1_t1","var2_t1","var3_t1","var4_t1","var5_t1","var6_t1","var7_t1","var1_t2","var2_t2","var3_t2","var4_t2","var5_t2","var6_t2","var7_t2")
然后我从中创建了BNDataset
dataset <- BNDataset(data = expression,discreteness = rep(F,ncol(expression)),variables = colnames(expression),node.sizes = rep(3,ncol(expression)))
最后使用来自bnstruct
的 learn.dynamic.network 计算DBNdbn <- learn.dynamic.network(dataset,num.time.steps = 2)
这给出了错误
h(simpleError(msg,call))中的错误: 选择函数'as.matrix'的方法时评估参数'x'的错误:无效的间隔数
我尝试在应用BNDataset之前将表达式更改为数据框和矩阵,但无济于事。
谢谢!
解决方法
此处是打包开发人员。我无法重现该错误,而且我也从未见过。显然simpleError
是一个S3对象,而bnstruct使用S4。也许您加载了另一个包含名称冲突的方法的软件包?
但是,在MWE中,对于观察到单个值的变量,bnstruct学习将失败,例如var1_t1
或var2_t1
。如果您的数据集更大且值更多,则可能会没事,否则最简单的方法就是删除这些变量。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。