❝本节来介绍一款可用于贝叶斯网络建模和预测流程的R包「BayesianNetworks」。该包内容丰富作者配有详细的案例文档,使用过程也非常的简单明了,更多详细内容请参考作者的官方文档。
https://pakillo.github.io/BayesianNetworks/
library(tidyverse)
install.packages("cmdstanr", repos = c('https://stan-dev.r-universe.dev', getOption("repos")))
remotes::install_github("Pakillo/BayesianNetworks")
library(BayesianNetworks)
library(cmdstanr)
cmdstanr::install_cmdstan() #此程序包49M安装容易失败
# 安装完后会出现cmdstan的路径写入下方代码,以实际为准
set_cmdstan_path("/Users/xxx/.cmdstan/cmdstan-2.35.0")
data(web)
plot_counts_obs(web, sort = FALSE) # 可视化原始数据集 web 中的计数,不进行排序。
# 准备数据以供模型使用。mat 参数是输入的矩阵(此处为 web 数据集),sampl.eff 参数指定采样效率,这里为每行设置了20。
dt <- prepare_data(mat = web, sampl.eff = rep(20, nrow(web)))
set.seed(1)
options(mc.cores = 4) #设置并行计算使用的核心数,这里使用4个核心
fit <- fit_model(dt, refresh = 0)
check_model(fit, data = dt)
post <- get_posterior(fit, data = dt)
plot_interaction_prob(post) # 可视化交互概率
pred.df <- predict_counts(fit, data = dt) # 使用拟合模型 fit 和数据 dt 进行预测,生成预测计数
plot_counts_pred(pred.df, sort = FALSE) # 可视化预测的计数,不进行排序
plot_counts_pred_obs(pred.df, data = dt) # 将预测的计数和观察到的计数进行对比并可视化
plot_residuals(pred.df, data = dt, sort = FALSE)