首页 > 解决方案 > 如何用 bnlearn 表示领域知识信息

问题描述

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

1   Gender, age at ALS onset    
2   Onset site, onset delta (start of the trial - onset)    
3   Riluzole intake, placebo/treatment  
4   Variables at time t-1   
5   Variables at time t, TSO    
6   Survival    

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

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

标签: rdirected-acyclic-graphsbayesian-networkscausalitybnlearn

解决方案


您可以通过多种方式将领域知识或约束添加到结构学习中。

  • 如果要使用领域知识指定网络结构和参数,可以使用custom.fit.

  • 如果您想从数据中估计 BN 的结构,那么您可以使用结构学习算法中的whitelist和参数对边缘方向和边缘存在施加约束。blacklist

  • 在结构学习中,可以将先验放置在边缘上(例如prior="cs",其中“如果先验是 cs,beta 是一个数据框,其列 from、to 和 prob 指定一组弧的先验概率。假设为剩余的弧线。 ”)。还有其他可以使用的先验。


推荐阅读