楼主: bkjg
456 0

[有偿编程] 用R里的bnlearn做bayesian network inference结果不对,求解答 [推广有奖]

已卖:4份资源

学术权威

25%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
42.1782
学术水平
7 点
热心指数
6 点
信用等级
7 点
经验
13748 点
帖子
634
精华
0
在线时间
11418 小时
注册时间
2012-5-2
最后登录
2026-2-3

楼主
bkjg 发表于 2023-10-4 14:25:51 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
用R里的bnlearn做bayesian network inference结果不对,求解答。
模型是有两个node的network,parent node是v~N(0,0.1),child node是v_hat~N(v,2)。我的input是v_hat在-20到20的grid,每一个v_hat都取200个随机值。最后算的是posterior expectation。

代码在这里:
library(bnlearn)
library(rbmn)

vtilde = 0; sigmav2tilde = 0.1; sigmav2 = 2

dag.bnlearn <- model2network("[v][v_hat|v]")
v.dist <- list(coef = c("(Intercept)" = vtilde), sd = sqrt(sigmav2tilde))
v_hat.dist <- list(coef = c("(Intercept)" = 0, v = 1), sd = sqrt(sigmav2))
dist.list = list(v = v.dist, v_hat = v_hat.dist)
gbn.bnlearn <- custom.fit(dag.bnlearn, dist = dist.list)

v_hat_grid = seq(-20, 20, length = 50)

v_post_approx <- c()
for (v_hat_input in v_hat_grid) {
  sims <- cpdist(gbn.bnlearn,
                 nodes = "v",
                 evidence = list(v_hat = v_hat_input),
                 method = "lw",
                 n = 200)
  weights <- attributes(sims)$weights
  vals <- sims * weights
  cols <- colnames(vals)
  posts <- vals %>% summarise(across(all_of(cols), ~ mean(.x, na.rm = TRUE), .names = "post_{.col}"))
  v_post_approx <- c(v_post_approx, posts[1,1])
}

plot(y = v_post_approx, x = v_hat_grid)
            
        
        
   

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:Inference Bayesian bnlearn network erence bnlearn 贝叶斯 Bayesian Bayesian Network

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-2-4 06:03