问题标签 [bnlearn]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
83 浏览

r - 如何用 bnlearn 表示领域知识信息

我正在学习使用 R 包的动态贝叶斯网络模型bnlearn。为此,我正在关注这篇论文,他们以 6 层的形式施加了某些约束(论文中的表 1):

在此示例中,由于genderage位于顶层,它们不能受Riluzole intake但影响(或具有因果关系)Riluzole intake并最终受到影响survival。这保证了网络的非周期性,也就是说,我们在变量之间没有无休止的反馈循环。

我的问题是,我们如何使用 R 包对这些先验知识进行建模bnlearn

0 投票
0 回答
72 浏览

r - 使用 bnlearn 从条件贝叶斯网络中抽取样本

我想从条件贝叶斯网络中抽取样本(即一些没有父节点的输入节点没有附加分布),给定输入节点值,使用 bnlearn。我尝试过的解决方案效率低下,我希望它与rbn我们可以在这种情况下执行前向采样一样有效。

例如,如果我有离散网络:A -> B,我想在给定 A 的数据向量的情况下为 B 绘制随机值。我可以使用impute(非常低效)或生成随机数据rbn,使用我的输入条件和过滤选择一个随机行(这也是低效的,因为很多样本都被丢弃了)。

例如,这是一个基本的 A -> B 网络:

这是一个“估算”的尝试:

相比:

我错过了什么还是应该手动实现?

编辑:在 user20650 发表评论后,我尝试使用 predict 的性能比 impute 好得多,但不确定如何,因为文档说“'impute()' 是基于 'predict()'”。

更合理的时间,但仍然比 a 慢 15 倍rbn(1M 行慢 150 倍)。我仍然有点害怕它如何随网络规模扩展。我会调查一下。

0 投票
1 回答
137 浏览

r - 如何使用 bnlearn 和 graphviz 绘制具有实例化节点的贝叶斯网络?

我正在尝试使用库bnlearnRgraphviz. 我的工作流程如下:

在使用随机数据(我实际使用的数据显然不是随机的)创建数据框后,我将数据离散化,结构学习有向无环图(DAG),将数据拟合到 DAG,然后绘制 DAG。我还绘制了一个 DAG,它显示了每个节点的后验概率。

接下来我要做的是手动更改bn.fit对象中的分布,分配给fitted,然后绘制一个 DAG,显示实例化节点和响应变量的更新后验概率e

这是我得到的结果,但我的实际 BN 更大,弧线更多,手动更改bn.fit对象是不切实际的。

在此处输入图像描述

我想知道是否有一种方法可以在不bn.fit手动更改对象的情况下通过实例化绘制 DAG?是否有我缺少的解决方法或功能?

我想/希望我已经彻底阅读了 bnlearn 的文档。我感谢任何反馈,如果我没有足够清楚地表达我的想法,我很乐意改变问题中的任何内容。

谢谢你。

0 投票
0 回答
37 浏览

r - 如何在不减少 bnlearn R 库中的父节点的情况下解决超过 INT_MAX 级别的问题?

我一直在尝试使用 R 中的 bnlearn 库基于数据集构建贝叶斯网络,但我一直收到如下所示的错误。

输入的代码:

收到错误:

.table(data[, c(node, parents), drop = FALSE], with.missing = !all(data.info$complete.nodes[c(node, : 试图创建超过 INT_MAX 个单元格的表) .

我想保留现有的父节点。我想知道这个错误是否有解决方法?

0 投票
1 回答
59 浏览

r - 使用自己的规范在 R 中使用贝叶斯网络模拟数据

假设我有一个简单的 DAG,表示混杂变量 X = 吸烟、治疗 T 和结果 Y = 死亡,这样:

T ~ X
Y ~ T + X

是否可以生成一个包含 1m 个观察值的合成数据集,该数据集遵循一些指定的条件概率:

我可以在这里手动执行此操作,因为它是一个非常基本的 DAG,但我想知道它是否可以以另一种更具可扩展性的方式完成,例如使用bnlearn.

当前解决方案:

0 投票
1 回答
93 浏览

r - bnlearn 错误:条件概率分布的数量错误

我正在学习使用,bnlearn并且在下面代码的最后一行中不断遇到以下错误:

custom.fit(dag, cpt) 中的错误:条件概率分布的数量错误

我究竟做错了什么?

参考:https ://rpubs.com/sarataheri/bnlearnCGM

0 投票
0 回答
51 浏览

r - bnlearn 抛出变量 A 在 bnlearn 中不受支持(类型:字符)

我正在尝试精益 bnlearn 并遵循有关survey.txt 数据的示例。但是我收到以下错误,不知道如何解决。我是 R 和 bnlearn 的新手。任何意见,将不胜感激。

0 投票
0 回答
52 浏览

r - Do()-在贝叶斯网络中使用 R

我正在尝试使用 R 中的 DAG 来估计因果效应。虽然现在我可以拟合贝叶斯网络,绘制 DAG,并且可以验证我的模型的独立条件,但我仍然不知道如何将 do()-Operator 实现为由 Pearl(2008) 在贝叶斯网络中定义。由于回归等所需的假设,我想避免将 DAG 单独用作回归的变量选择方法,因为它经常这样做。我宁愿尝试找到一种直接在贝叶斯网络中估计效果的方法。

例如,如果我试图估计吸烟 (S) 对血压 (B) 的影响,这两者都受到一些社会经济变量 (SV) 的影响。所以 DAG 将属于 S <- SV -> B 和 S -> B 的类型。我如何估计吸烟对血压的治疗效果,即 E[血压|do(吸烟 = True)]?R中有实现吗?我没有找到使用非常强大的 bnlearn 包的正确方法,现在我没有想法。

0 投票
0 回答
28 浏览

r - 在 R 中寻找 R 包或其他可能性以进行一般贝叶斯网络分类

你好 stackoverflow 社区,

我正在做一个单一项目,我们尝试从 R 中的数据创建贝叶斯网络分类器。理想情况下,分类器应该基于通用贝叶斯网络 (GNB) 或 BN 增强朴素贝叶斯 (BAN)。不幸的是,我还没有找到一个合适的包来在 R 中创建这些网络中的任何一个。我的研究使我找到了以下两个包:

  1. bnclassify,最突出的 BN 分类包,根本不包括 GNB 或 BAN。
  2. bnlearn 提供了学习 GNB 的可能性,但根据创建者的说法,学习的重点是返回正确的依赖结构,而不是最大限度地提高分类的预测准确性。尽管如此,我还是尝试将它们用于我的分类问题,但结果并不令人印象深刻。

所以我的问题是,是否有人知道使用 GNB 或 BAN 进行分类的 R 包,或者如何使用 bnlearn 的 GNB 来提高他们对分类问题的预测准确性。

提前感谢您的帮助。

此致

0 投票
0 回答
28 浏览

r - 在 R 中构建具有离散和连续父变量的贝叶斯网络

这是使用自己的规范在 R 中使用贝叶斯网络模拟数据的后续问题

假设现在我想包括离散父母和连续父母,以便我的 DAG 包含治疗和死亡(结果),并且都取决于年龄(连续)和性别:

在此处输入图像描述

在这种情况下,我将如何定义条件概率表?

同样,如果结果是连续变量而不是离散变量,我该如何定义结果?