使用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 计算DBN
dbn <- learn.dynamic.network(dataset,num.time.steps = 2)

这给出了错误

h(simpleError(msg,call))中的错误: 选择函数'as.matrix'的方法时评估参数'x'的错误:无效的间隔数

我尝试在应用BNDataset之前将表达式更改为数据框和矩阵,但无济于事。

谢谢!

解决方法

此处是打包开发人员。我无法重现该错误,而且我也从未见过。显然simpleError是一个S3对象,而bnstruct使用S4。也许您加载了另一个包含名称冲突的方法的软件包?

但是,在MWE中,对于观察到单个值的变量,bnstruct学习将失败,例如var1_t1var2_t1。如果您的数据集更大且值更多,则可能会没事,否则最简单的方法就是删除这些变量。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...