标签: bnlearn

R 中 bn.fit() 的数据类型错误:bnlearn 不支持变量(类型:整数)

基于给定的网络结构,我为六个二进制变量(x1 到 x6)创建了一个包含 100 个实例的数据框。因此,它是存储在变量“input_params”中的 0/1 值的 100 x 6 数据帧。使用语句创建一个空图:

library(bnlearn) bn_graph = empty.graph(names(input_params))

但是当我尝试使用以上参数('input_params')在网络中拟合时

bn_nw <- bn.fit(bn_graph, input_params)

我收到一条错误消息
Error in data.type(x) : variable x1 is not supported in bnlearn (type: integer).

我应该进行什么数据类型转换才能避免此错误?现在它的值是 0 或 1。

r bayesian bnlearn

6
推荐指数
1
解决办法
5149
查看次数

BNlearn R 错误“变量 Variable1 必须至少有两个级别。”

尝试使用 BNlearn 创建 BN,但我一直收到错误消息;

Error in check.data(data, allowed.types = discrete.data.types) : variable Variable1 must have at least two levels.
Run Code Online (Sandbox Code Playgroud)

它给了我每个变量的错误,即使它们都是因素并且有超过 1 个级别,正如您所看到的 - 在这种情况下,我的变量“模型”有 4 个级别

由于我无法共享变量和数据集,因此我创建了一个小集并属于数据集的代码。我遇到同样的问题。我知道我只共享了 2 个变量,但是所有变量都出现了相同的错误。

library(tidyverse)
library (bnlearn)
library(openxlsx)

DataFull <- read.xlsx("(.....)/test.xlsx", sheet = 1, startRow = 1, colNames = TRUE)
set.seed(600)
DataFull <- as_tibble(DataFull)

DataFull$Variable1 <- as.factor(DataFull$Variable1)
DataFull$TargetVar <- as.factor(DataFull$TargetVar)

DataFull <- na.omit(DataFull)
DataFull <- droplevels(DataFull)

DataFull <- DataFull[sample(nrow(DataFull)),]
Data <- DataFull[1:as.integer(nrow(DataFull)*0.70)-1,]
Datatest <- DataFull[as.integer(nrow(DataFull)*0.70):nrow(DataFull),]
nrow(Data)+nrow(Datatest)==nrow(DataFull)

FocusVar <- as.character("TargetVar")
BN.naive <- naive.bayes(Data, FocusVar) 
Run Code Online (Sandbox Code Playgroud)

使用str(data) …

r bnlearn

5
推荐指数
1
解决办法
1161
查看次数

如何在R中使用bnlearn增加贝叶斯网络图中的文本大小

我正在尝试使用bnlearn在R中绘制一个Bsyesian网络。这是我的R代码

library(bnlearn)
library(Rgraphviz)

first_variable <- rnorm(100)
second_variable <- rnorm(100)
third_variable <- rnorm(100)
v <- data.frame(first_variable,second_variable,third_variable)

b <- hc(v)
hlight <- list(nodes = nodes(b), arcs = arcs(b),col = "grey", textCol = "red")
pp <- graphviz.plot(b, highlight = hlight)
Run Code Online (Sandbox Code Playgroud)

上面的代码可以工作,但是情节中文本的大小比我预期的要小得多。这里是:

在此处输入图片说明

我认为这是因为我的变量名很长。在我的真实数据中,变量名称甚至更长。这是我的真实数据集的BN图:

在此处输入图片说明

有什么办法可以增加图中文字的大小吗?

size text r bayesian-networks bnlearn

4
推荐指数
1
解决办法
990
查看次数

R bnlearn eval 内部函数

我正在使用 R 中的 bnlearn 包来训练贝叶斯网络。我在使用以下代码时遇到了麻烦(稍微修改了 bnlearn 示例代码):

library(bnlearn)
data(learning.test)
fitted = bn.fit(hc(learning.test), learning.test)

myfuncBN=function(){

  var = names(learning.test)
  obs = 2
  str = paste("(", names(learning.test)[-3], "=='",
          sapply(learning.test[obs,-3], as.character), "')",
          sep = "", collapse = " & ")
  str2 = paste("(", names(learning.test)[3], "=='",
           as.character(learning.test[obs, 3]), "')", sep = "")
  cpquery(fitted, eval(parse(text = str2)), eval(parse(text = str)))
}

myfuncBN()
Run Code Online (Sandbox Code Playgroud)

此代码引发错误:

结束时出错:无法将类型“闭包”强制转换为“字符”类型的向量

但是,如果 str 和 str2 是在函数 myfuncBN() 之外定义的,则它有效。有谁知道这是什么原因?

r bayesian bnlearn

4
推荐指数
1
解决办法
228
查看次数

bnlearn::bn.fit 方法“mle”和“bayes”的差异和计算

我试图了解这两种方法之间的差异bayes以及包mlebn.fit功能bnlearn

我知道频率论者和贝叶斯方法之间关于理解概率的争论。在理论上,我认为最大似然估计mle是一种简单的频率论方法,将相对频率设置为概率。但是进行了哪些计算才能得到bayes估计值?我已经查看了bnlearn 文档bn.fit 函数描述和一些应用示例,但没有任何地方对正在发生的事情进行真正的描述。

我还尝试通过首先检出bnlearn::bn.fit、导致bnlearn:::bn.fit.backend、导致来理解 R 中的函数,bnlearn:::smartSapply但后来我被卡住了。

当我将软件包用于学术工作时,我会非常感谢您的帮助,因此我应该能够解释会发生什么。

r bayesian bayesian-networks mle bnlearn

3
推荐指数
1
解决办法
601
查看次数

bnlearn + Rgraphviz:自定义绘图时,双箭头而不是无向边

我正在尝试自定义bnlearn使用图表学习的图表RGraphviz.当我有无向边时,RGraphviz当我尝试自定义图形的外观时,将它们转向两个方向的有向边.

一个可重复的例子可能是:

set.seed(1)
x1 = rnorm(50, 0, 1)
x2 = rnorm(50, 0, 1)
x3 = x2 + rnorm(50, 0, 1)
x4 = -2*x1 + x3 + rnorm(50, 0, 1)
graph = data.frame(x1, x2, x3, x4)

library(bnlearn)
library(Rgraphviz)

res = gs(graph)
options(repr.plot.width=3, repr.plot.height=3)
g1 <- graphviz.plot(res)
Run Code Online (Sandbox Code Playgroud)

图未定制:

在此输入图像描述

到现在为止还挺好.但是,如果我尝试自定义它:

plot(g1, attrs = list(node = list(fontsize=4, fillcolor = "lightgreen")))
Run Code Online (Sandbox Code Playgroud)

自定义图表

在此输入图像描述

无向边缘被转换.

即使我只使用情节(g1),我也会遇到这个问题.问题是这(保存g1然后使用绘图)似乎改变了图形的外观.

r bayesian-networks bnlearn r-graphviz

2
推荐指数
1
解决办法
625
查看次数

标签 统计

bnlearn ×6

r ×6

bayesian ×3

bayesian-networks ×3

mle ×1

r-graphviz ×1

size ×1

text ×1