关于数据挖掘:R语言中贝叶斯网络BN动态贝叶斯网络线性模型分析错颌畸形数据附代码数据

9次阅读

共计 11585 个字符,预计需要花费 29 分钟才能阅读完成。

全文链接:http://tecdat.cn/?p=22956

最近咱们被客户要求撰写对于贝叶斯网络的钻研报告,包含一些图形和统计输入。

贝叶斯网络(BN)是一种基于有向无环图的概率模型,它形容了一组变量及其相互之间的条件依赖性。它是一个图形模型,咱们能够很容易地查看变量的条件依赖性和它们在图中的方向

在这篇文章中,我将简要地学习如何用 R 来应用贝叶斯网络。

本教程旨在介绍贝叶斯网络学习和推理的基础知识,应用真实世界的数据来摸索图形建模的典型数据分析工作流程。关键点将包含:

  • 预处理数据;
  • 学习贝叶斯网络的构造和参数。
  • 应用网络作为预测模型。
  • 应用网络进行推理。
  • 通过与内部信息的比照来验证网络的有效性。

疾速介绍

贝叶斯网络

定义

贝叶斯网络(BNs)的定义是:

  • 一个网络结构,一个有向无环图 ![图片](), 其中每个节点 ![图片]() 对应于一个随机变量 ![图片]();
  • 一个全局概率分布  (带参数), 它能够依据图中存在的弧被分解成更小的部分概率分布。

网络结构的次要作用是通过图形拆散来表白模型中各变量之间的条件独立性关系,从而指定全局散布的因子化。

每个部分散布都有本人的参数集 ; 而⋃  要比小得多,因为许多参数是固定的,因为它们所属的变量是独立的。

R 实现了以下学习算法。

基于束缚的:PC, GS, IAMB, MMPC, Hilton-PC
基于分数的:爬山算法、Tabu Search
配对的:ARACNE, Chow-Liu
混合:MMHC, RSMAX2

咱们应用基于分数的学习算法,_希尔算法_。首先,咱们将先为本教程生成简略的数据集。

在这个数据集中,’ 状态 ’ 与 ’ 元素 ’ 和 ’ 承受 ’ 列有关系。而 ’ 类型 ’ 与 ’ 色彩 ’ 列有关系。当你创立一个带有分类数据的数据框时,列应该是一个因子类型。否则,该数据框不能用于 BN 构造的创立。

 
接下来,咱们将创立学习构造。

咱们能够在一个图中看到构造。

> plot(hc_simd)

在这个图中,状态、元素、承受、类型和色彩被称为节点。节点之间的方向用弧线形容,弧线是一个蕴含从元素到元素方向数据的矩阵。


点击题目查阅往期内容

R 语言 BUGS/JAGS 贝叶斯剖析: 马尔科夫链蒙特卡洛办法(MCMC)采样

左右滑动查看更多

01

02

03

04

如上弧线显示,在咱们的数据中存在 ’ 类型 ’ 到 ’ 色彩 ’,以及 ’ 状态 ’ 到 ’ 承受 ’ 和 ’ 元素 ’ 的关系。’ 类型 ’ 和 ’ 状态 ’ 是两个独立的组,它们之间不存在相互依赖关系。
接下来,咱们将用数据来拟合模型。

simd_fitted

基于上述训练数据,咱们能够进行条件概率查问。

咱们查看 “Outlier “ 和 “Target “ 的状态概率。

该样本成为 “ 离群 “ 的概率为 51%。

状态成为 “ 指标 “ 的概率是 0%。

错颌畸形数据的贝叶斯网络分析

问题:受第三类错牙合畸形影响的患者(以下牙弓突出为特色),其骨骼不均衡在生命晚期就产生,在青春期和骨骼成熟前会变得更加显著。在单个 III 类患者中晚期预测医治的胜利或失败,使其更容易改正,但仅从大量的状态决定因素中预测是很难做到的。起因是 III 类错颌畸形很少是繁多颅面部件异样的后果,所以单个的临床和放射学测量值可能不如测量值自身的相互作用具备批示性。

工作:

  1. 咱们学习一个 BN,并应用它来确定和可视化在成长和医治过程中各种 III 类错位颌面特色之间的相互作用。
  2. 咱们通过验证一些广泛承受的对于这些骨骼不均衡演变的假说来测验其一致性。
  3. 咱们表明,与承受疾速上颌扩张和面罩医治的正畸患者相比,未经医治的受试者造成了不同的 III 类颅面成长模式。
  4. 在承受医治的患者中,CoA 段(上颌骨长度)和 ANB 角(上颌骨与下颌骨的前后关系)仿佛是承受医治的次要影响的骨骼亚空间。

数据

咱们将应用的数据集蕴含 143 名患者,在 T1 和 T2 年龄段有两组测量数据(以年为单位),用于以下变量。

  • 医治:未经医治(NT),医治后成果不好(TB),医治后成果好(TG)。
  • 成长:一个二元变量,数值为好或坏。
  • ANB:唐氏点 A 和 B 之间的角度(度)。
  • IMPA:门牙 - 下颌平面角(度)。
  • PPPM:腭立体 - 下颌立体的角度(度)。
  • CoA:上颌骨从髁状突到唐氏点 A 的总长度(mm)。
  • GoPg:下颌体从齿龈到齿龈的长度(mm)。
  • CoGo:下颌骨的长度,从髁状突到齿状突(mm)。

所有的测量都是通过 X 射线扫描得出的,应用一套参考点建设的图,如以下。

> str(data)

预处理和探索性数据分析

首先,咱们创立一个数据框架,其中包含所有变量的差别以及增长和医治。

成长和医治变量带有对于病人预后的冗余信息,这一点从 TB 和 TG 之间成长良好的病人比例的差别中能够看出。

为了防止在模型中包含这两个变量所导致的混淆,咱们将医治从新编码为一个二元变量,0 示意 NT,1 示意 TB 或 TG。同样地,咱们对成长进行从新编码,0 示意坏,1 示意好。

因为咱们将应用高斯 BN 进行剖析,查看这些变量是否是正态分布;从上面的图来看,仿佛并非所有的变量都是如此。

+   hist(x, prob = TRUE)
+   lines(density(x), lwd = 2 )

这些变量是通过线性关系分割起来的吗?其中一些是,但不是全副。

> pairs(diff[, setdiff(names(diff)

最初,咱们能够看看这些变量是否以任何形式聚在一起,因为聚在一起的变量更有可能在 BN 中产生分割。

> heatmap(rho)

咱们能够在热图中看到两个集群:第一个集群包含 dCoGo、dGoPg 和 dCoA,第二个集群包含 Treatment、dANB 和 dCoA。第一个聚类在临床上很有意思,因为它包含医治和两个都与唐氏 A 点无关的变量,这为医治的次要成果提供了一些线索。

plot(ug)

模型 #1:作为差别模型的动态贝叶斯网络

在这里,咱们应用保留在 diff 中的差别来为数据建模,而不是原始值;咱们将应用 GBN 解决,因为所有变量都是数字。对差别进行建模会导致部分散布,其模式为回归模型

其中 对于其余回归因子,以此类推。咱们能够将这种回归改写为

这是一组微分方程,对变化率进行建模,其关系被假设为很好地近似于线性关系。然而,这种表述依然意味着原始值随工夫线性变动,因为变化率取决于其余变量的变化率,但不取决于工夫自身。要有一个非线性的趋势,咱们须要

此外,包含增长变量意味着咱们能够有以下模式的回归模型 

从而容许不同的变化率,这取决于病人是否在畸形中体现出踊跃的倒退,以及他是否正在承受医治。

学习贝叶斯网络

学习构造

学习 BN 的第一步是学习其构造,即 DAG . 咱们能够应用数据(来自不同的数据框架)联合先验常识来做这件事;联合后者能够缩小咱们必须摸索的模型空间,并生成更弱小的 BN。一个间接的办法是将那些编码咱们晓得不可能 / 实在的关系的弧列入黑名单; 并将那些编码咱们晓得存在的关系的弧列入白名单。

黑名单只是一个矩阵(或一个数据框),其中有 from 和 to 两列,列出了咱们不心愿在 BN 中呈现的弧。

  • 咱们把任何指向正畸变量中的 dT、医治和成长的弧列入黑名单。
  • 咱们将从 dT 到 Treatment 的弧列入黑名单。这意味着一个病人是否被医治不会随工夫而扭转。
  • 咱们将从成长到 dT 和医治的弧线列入黑名单。这意味着病人是否承受医治不会随工夫变动,而且显然不会因预后而变动。

白名单的构造与黑名单雷同。

  • 咱们将依赖构造 dANB → dIMPA ← dPPPM 列入白名单。
  • 咱们将从 dT 到 Growth 的弧线列入白名单,这使得预后能够随工夫变动。

一个简略的学习  办法是在整个数据上找到具备最佳拟合度的网络结构。例如,应用 hc()与默认分数(BIC)和整个 diff 数据框架。

至于绘图,要害函数是 plot()。

plot(dag, , highlight)

然而,dag 的品质要害取决于变量是否是正态分布,以及连贯它们的关系是否是线性的;从探索性剖析来看,并不分明所有的变量都是如此。咱们也不晓得哪些弧线代表强关系,也就是说,它们能抵制数据的扰动。咱们能够用 boot 来解决这两个问题。

  1. 应用 bootstrap 对数据从新取样。
  2. 从每个 bootstrap 样本中学习一个独自的网络。
  3. 查看每个可能的弧在网络中呈现的频率。
  4. 用呈现频率较高的弧构建一个共识网络。
booth(diff, R = 200)

boot.strength()的返回值包含,对于每一对节点,连贯它们的弧的强度(例如,咱们察看到 dANB → dPPPM 或 dPPPM → dANB 的频率)及其方向的强度(例如,当咱们察看到 dANB 和 dPPPM 之间有弧时,咱们察看到 dANB → dPPPM 的频率)。

attr("threshold")

因而,averaged.network()取所有强度至多为 0.585 的弧,并返回一个均匀的共识网络,除非指定不同的阈值。

> avg.diff = averaged.network(str.diff)

纳入咱们当初领有的对于弧线强度的信息。

> strength.plot(avg.diff, str.diff, shape = "ellipse", highlight = list(arcs = wl))

咱们如何将均匀的网络(avg.diff)与咱们最后从所有数据中学习到的网络(dag)进行比拟?最定性的办法是将两个网络并排绘制,节点地位雷同,并突出显示一个网络中呈现而另一个网络中没有的弧,或者呈现的方向不同的弧。

> par(mfrow = c(1, 2))
> graphviz.compare(avg.diff, dag, shape = "ellipse", main = c("averaged DAG", "single DAG"))

咱们能够看到,Treatment→dIMPa、dANB→dGoPg 和 dCoGo→dPPPM 这些弧线只呈现在均匀网络中,而 dPPPM→dANB 只呈现在咱们从所有数据中学到的网络中。咱们能够假如,前三个弧被数据的噪声加上小样本量和偏离常态的状况所暗藏。编程能够返回真阳性(呈现在两个网络中的弧)和假阳性 / 阴性(只呈现在两个网络中的一个的弧)的数量。

> compare

或弧 =TRUE。

然而,思考到网络是用 BIC 学习的,而 BIC 是等价的,那么所有的弧线方向是否都很确定?看一下 dag 和 avg.diff 的 CPDAGs(并思考到白名单和黑名单),咱们看到没有无方向的弧。所有弧的方向都是惟一的。

最初,咱们能够联合来进行原则性的比拟,如果两个弧被惟一确定为不同,咱们就说它们是不同的。

也能够看一下对于弧长散布的阈值:均匀的网络是相当密集的(9 个节点有 17 个弧),很难浏览。

> plot(str.diff)
> abline(v = 0.75, col = "tomato", lty = 2, lwd = 2)
> abline(v = 0.85, col = "steelblue", lty = 2, lwd = 2)

因而,把阈值进步一点,多剔除几个弧就好了。看一下下面的图,因为弧长散布的差距,较高的阈值的两个自然选择是 0.75(红色虚线)和 0.85(蓝色虚线)。

> nrow(strength >  "threshold" direction > 0.5,])
[1] 18
 trength > 0.75 &  direction > 0.5 
[1] 15
 strength > 0.85 &  direction > 0.5 
[1] 12

咱们通过在 network()中设置阈值 =0.85 失去的更简略的网络如下所示;从定性的角度来看,它当然更容易推理。

> avg.simpler = averaged.network(str.diff, threshold = 0.85)
> strength.plot(avg.simpler, str.diff, shape = "ellipse", highlight = list(arcs = wl))

学习参数

在学习了构造之后,咱们当初能够学习参数。因为咱们正在解决连续变量,咱们抉择用 GBN 来建模。因而,如果咱们应用最大似然预计来拟合网络的参数,咱们就会发现每个部分散布都是一个典型的线性回归。

fit(avg, diff)

咱们能够通过比拟 bn.fit()和 lm()产生的模型,例如 dANB,很容易确认这是事实。

 > summary(lm(dANB ~ Growth + Treatment, data = diff))

咱们会不会有共线性的问题?实践上是可能的,但在实践中,从数据中学习的网络结构大多不是问题。起因是,如果两个变量  和是共线性的,在减少(比如说)Xi←Xj 之后,那么 Xj←Xk 将不再显著进步 BIC,因为 Xj 和 Xk(在某种程度上)提供了对于 Xi 的雷同信息。

> # 逐步减少解释变量之间的关联性。> for (rho 5)) {

+   # 更新相关矩阵并生成数据。+   R  = R = rho
+   data = as.data.frame(mvrnorm(1000))
+   # 比拟线性模型
+   cat( "BIC:",

+ }

比拟线性模型 

如果参数估计因任何起因呈现问题,咱们能够用一组新的、来自不同办法的估计值来取代它们。

 dANB

 dANB = penalized(dANB)
 dANB

模型验证

有两种次要的办法来验证一个 BN。

  • 只看网络结构:如果学习 BN 的次要指标是辨认弧和门路,当 BN 被解释为因果模型时,通常是这种状况,咱们能够进行实质上的路径分析和钻研弧的强度。
  • 将 BN 视为一个整体,包含参数:如果学习 BN 的次要指标是将其作为一个专家模型,那么咱们可能想。
  • 依据其余一些变量的值,预测新个体的一个或多个变量的值;以及
  • 将 CP 查问的后果与专家常识进行比拟,以确认 BN 反映了对于咱们正在建模的景象的最佳常识。

预测准确性

咱们能够用通常的办法来掂量咱们所抉择的学习策略的预测准确性,即穿插验证。实现了:

  • _k-fold 穿插验证_;
  • 指定的 k 进行穿插验证;
  • hold-out 穿插验证

对于:

  • 构造学习算法(构造和参数都是从数据中学习的)。
  • 参数学习算法(构造由用户提供,参数从数据中学习)。

首先,咱们查看 Growth,它编码了错牙合畸形的演变(0 示意坏,1 示意好)。咱们查看它,把它转回离散变量并计算预测误差。

cv(diff)

> for (i in 1:10) {+   err[i] = (sum(tt) - sum(diag(tt))) / sum(tt)

+ }
>

其余变量是间断的,所以咱们能够预计它们的预测相关性来代替。

> for (var in names(predcor)) {+   xval = cv(diff)

+     predcor[var] = mean(sapply(xval, function(x) attr(x, "mean")))

+ }

在这两种状况下,咱们应用损失函数的变体,它应用从所有其余变量计算的后验期望值进行预测。根本的损失函数(cor, mse, pred)仅仅从它们的父代来预测每个节点的值,这在解决很少或没有父代的节点时是没有意义的。

用专家常识进行确认

确认 BN 是否有意义的另一种办法是把它当作的工作模型,看看它是否表白了对于要害事实,这些事实在学习过程中没有作为先验常识应用。否则,咱们将只是拿回咱们放在先验中的信息)。一些例子。

  1. “CoGo 的适度增长应该会引起 PPPM 的缩小 ”。
    咱们通过为存储在 fitted.simpler 中的 BN 生成 dCoGo 和 dPPPM 的样本,并假如没有产生任何解决,来测试这个假如。随着 dCoGo 的减少(这表明增长越来越快),DPPPM 变得越来越负(这表明假如角度最后是正的,则角度会缩小。

    > sim = dist(fitted.simpler)
    > plot(sim)
    > abline(v = 0, col = 2, lty = 2, lwd = 2)
  1. “CoGo 的小幅增长应该会引起 PPPM 的增长。”

    从上图来看,CoGo 的负增长或空增长(dCoGo ⋜ 0)对应于 PPPM 的正增长,概率为≈0.60。对于 CoGo 的小幅增长(dCoGo∈[0, 2]),可怜的是,dPPPM ⋜0,概率≈0.50,所以 BN 不反对这一假如。

    > nrow(sim[( dCoGo <= 0) & (PPPM > 0), ]) / nrow(sim[( dCoGo <= 0), ])
    [1] 0.6112532
    > nrow(sim[( dCoGo > 0) & (dCoGo < 2) & (dPPPM > 0), ]) /
    +   nrow(sim[( CoGo) > 0 & (dCoGo < 2),  ])
    [1] 0.4781784

<!—->

  1. “ 如果 ANB 缩小,IMPA 就会缩小以进行弥补。”

    像以前一样通过模仿测试,咱们正在寻找与 IMPA(雷同)的负值相干的 dANB 的负值(这表明假如角度最后是正的,就会缩小)。从下图中能够看出,dANB 与 dIMPA 成正比,所以其中一个的缩小表明另一个的缩小;两者的均匀趋势(黑线)同时为负。

    > plot(sim)
    
    > abline(coef(lm(dIMPA ~ dANB))
  1. “ 如果 GoPg 强烈减少,那么 ANB 和 IMPA 都会缩小。” 如果咱们从 BN 中模仿 dGoPg、dANB 和 dIMPA,假如 dGoPg>5(即 GoPg 在减少),咱们预计 dANB>0(即 ANB 在减少)的概率为≈0.70,dIMPA<0 的概率仅为≈0.58。

    > nrow(sim[(dGoPg > 5) & (dANB < 0), ]) / nrow(sim[(dGoPg > 5), ])
    [1] 0.695416
    > nrow(sim[(dGoPg > 5) & (dIMPA < 0), ]) / nrow(sim[(dGoPg > 5), ])
    [1] 0.5756936

<!—->

  1. _” 医治试图阻止 ANB 的缩小。如果咱们固定 ANB,医治过的病人和未医治过的病人是否有区别?”

    首先,咱们能够查看在没有任何干涉的状况下,dANB≈0 的病人的医治和增长之间的关系(即应用咱们从数据中得悉的 BN)。_
    
    ```
    dist(fitted)
    table(TREATMENT = Treatment < 0.5, GOOD.GROWTH =  Growth > 0.5)
    ```
  1. 预计的 P(GOOD.GROWTH ∣ TREATMENT)对于承受医治和未承受医治的病人是不同的(≈0.65 对≈0.52)。

    如果咱们模仿一个正式的干涉措施(如 Judea Pearl),并从内部设置 dANB=0(从而使其独立于其父母,并删除相应的弧),咱们就会发现 GOOD.GROWTH 对于承受医治和未承受医治的病人来说实际上具备雷同的散布,从而变得与 TREATMENT 无关。这表明,无利的预后的确是由避免 ANB 的变动决定的,而医治的其余成分(如果有的话)就变得不重要了。```
    table(TREATMENT =  Treatment < 0.5, GOOD.GROWTH =  Growth > 0.5)
    ```
  1. _” 医治试图阻止 ANB 的缩小。如果咱们固定 ANB,医治和未医治的病人之间是否有区别?”

    评估的办法之一是查看在放弃 GoPg 固定的状况下,A 点和 B 点之间的角度(ANB)是否在医治和未医治的病人之间发生变化。_

假如 GoPg 不发生变化,对于承受医治的病人来说,A 点和 B 点之间的角度会减少(强烈的负值示意程度不均衡,所以正的变化率示意不均衡的缩小),而对于未承受医治的病人来说则会缩小(不均衡会随着工夫缓缓好转)。

Treatment = c("UNTREATED", "TREATED")[(Treatment > 0.5) + 1L]
boxplot(dANB ~ Treatment)

模型 #2:动静贝叶斯网络

动静贝叶斯网络在预测方面的成果不如 1 号模型好,同时更加简单。这是动静贝叶斯网络所固有的,即模仿随机过程的贝叶斯网络:每个变量都与被模仿的每个工夫点的不同节点相干。(通常状况下,咱们假如过程是一阶马尔可夫,所以咱们在 BN 中有两个工夫点:t 和 t -1。)然而,咱们摸索它的目标是为了阐明这样一个 BN 能够被学习并用于 bnlearn。

咱们用于这个模型的数据是咱们在剖析开始时存储到正交的原始数据。然而,咱们抉择应用医治变量而不是成长变量作为变量来表白受试者可能正在承受医疗的事实。起因是成长变量是一个掂量第二次测量时的预后的变量,它的值在第一次测量时是未知的;而医治变量在两次测量时都是雷同的。

学习构造

首先,咱们将变量分为三组:工夫为 t2 的变量,工夫为 t1=t2- 1 的变量,以及与工夫无关的变量,因为它们在 t1 和 t1 取值雷同。

> t2.variables

而后咱们引入一个黑名单,其中。

  1. 咱们将所有从临床变量到 T1、T2 和医治的弧线列入黑名单,因为咱们晓得,年龄和医治不是由临床测量决定的。
  2. 咱们将所有进入 Treatment 和 t1 时间段的所有变量的弧列入黑名单,因为咱们假如 t1 时间段的变量之间的弧与 t2 时间段的相应变量是一样的,两次学习它们是没有意义的。
  3. 咱们将所有从 t2 到 t1 的弧列入黑名单。
grid(from = setdiff(names(ortho), c("T1", "T2")),
 to = c("T1", "T2"))

相比之下,咱们只对 T1→T2 的弧线进行白名单,因为第二次测量的年龄显然取决于第一次测量的年龄。

>  data.frame(from = c("T1"), to = c("T2"))

最初咱们能够用 bl 和 wl 来学习 BN 的构造。

> dyn.dag

很显著,这个 BN 比前一个更简单:它有更多的节点(16 对 9),更多的弧(27 对 19),因而有更多的参数(218 对 37)。

绘制这个新模型的最好办法是用 plot()开始。

plot(dyn, render = FALSE)

而后,咱们对变量进行分组,以不便辨别 const、t1.variables 和 t2.variables;咱们抉择从左到右而不是从上到下绘制网络。

+        attrs = list(graph = list(rankdir = "LR")))

> Graph(gR)

与前一个模型一样,医治作用于 ANB:从医治进来的惟一弧是医治→ANB2 和医治→CoA2。同样,这两个子节点都与 Down 的 A 点无关。

构造学习中的模型平均化

咱们想评估这个动静 BN 构造的稳定性,就像咱们之前对动态 BN 所做的那样,咱们能够再次做到这一点。

> boot (ortho)
> plot(dyn)

avernet(dyn.str)

均匀下来的 avg 和 dag 简直是一样的:它们只相差两道弧。这表明构造学习产生了一个稳固的输入。

compare(dag, avg)
tp fp fn
26  1  1

学习参数

因为 Treatment 是一个离散变量,BN 是一个 CLGBN。这意味着以 Treatment 为父节点的间断节点的参数化与其余节点不同。

fit(dynavg)

咱们能够看到,ANB2 取决于 ANB(所以,在前一个工夫点的同一变量)和医治。ANB 是间断的,所以它被用作 ANB2 的回归因子。医治变量是离散的,决定了线性回归的成分。

模型验证和推理

咱们能够对这个新模型提出另一组问题

  1. “ 在不同的医治下,ANB 从第一次测量到第二次测量的转变水平如何?”
    咱们能够用 cpdist()生成一对(ANB, ANB2),条件是医治办法等于 NT、TB 和 TG,并察看其散布。

    data.frame(diff = c(nt[, 2] - nt[, 1], tb[, 2] - tb[, 1], tg[, 2] - tg[, 1]),
    
    > by(effect$diff, effect$treatment, FUN = mean)

```
density(~ diff, groups = treatment)
```
咱们晓得,医治试图阻止 ANB 的降落;这与 NT 的散布是在 TB 的右边,而 TB 是在 TG 的右边这一事实相一致。未经医治的病人病情持续好转;医治有效的病人没有真正改善,但他们的病情也没有好转;而医治无效的病人则有改善。

相比之下,这是一个未经医治的病人在雷同初始条件下的模仿轨迹。

对 CoA 的模仿轨迹是比拟事实的:它随着年龄的增长而减慢。这与 ANB 不同,它的产生是因为 CoA2 同时取决于 T1 和 T2。(ANB2 则两者都不依赖)。

> for (i in seq(nrow(interv)) {+   # 进行联结预测,目前用 predict()无奈实现。+   dist(dyn.fitted, nodes = c(),
+   intervals[i,] = weighted.mean(ANB2, weights)
+   intervals[i,] = weighted.mean(CoA2, weights)


本文摘选 R 语言中贝叶斯网络(BN)、动静贝叶斯网络、线性模型剖析错颌畸形数据 ,点击“ 浏览原文”获取全文残缺材料。

点击题目查阅往期内容

应用贝叶斯层次模型进行空间数据分析 MCMC 的 rstan 贝叶斯回归模型和规范线性回归模型比拟
python 贝叶斯随机过程:马尔可夫链 Markov-Chain,MC 和 Metropolis-Hastings,MH 采样算法可视化
Python 贝叶斯推断 Metropolis-Hastings(M-H)MCMC 采样算法的实现
matlab 贝叶斯隐马尔可夫 hmm 模型实现
贝叶斯线性回归和多元线性回归构建工资预测模型
Metropolis Hastings 采样和贝叶斯泊松回归 Poisson 模型
贝叶斯分位数回归、lasso 和自适应 lasso 贝叶斯分位数回归剖析免疫球蛋白、前列腺癌数据
R 语言 RSTAN MCMC:NUTS 采样算法用 LASSO 构建贝叶斯线性回归模型剖析职业声望数据
R 语言 STAN 贝叶斯线性回归模型剖析气候变化影响北半球海冰范畴和可视化查看模型收敛性
PYTHON 用户散失数据挖掘:建设逻辑回归、XGBOOST、随机森林、决策树、反对向量机、奢侈贝叶斯和 KMEANS 聚类用户画像
贝叶斯分位数回归、lasso 和自适应 lasso 贝叶斯分位数回归剖析免疫球蛋白、前列腺癌数据 R 语言 JAGS 贝叶斯回归模型剖析博士生延期毕业实现论文工夫
R 语言 Metropolis Hastings 采样和贝叶斯泊松回归 Poisson 模型
Python 决策树、随机森林、奢侈贝叶斯、KNN(K- 最近街坊)分类剖析银行拉新流动开掘潜在贷款客户
R 语言贝叶斯 MCMC:用 rstan 建设线性回归模型剖析汽车数据和可视化诊断
R 语言贝叶斯 MCMC:GLM 逻辑回归、Rstan 线性回归、Metropolis Hastings 与 Gibbs 采样算法实例
R 语言贝叶斯 Poisson 泊松 - 正态分布模型剖析职业足球比赛进球数
随机森林优化贝叶斯预测剖析汽车燃油经济性
R 语言逻辑回归、Naive Bayes 贝叶斯、决策树、随机森林算法预测心脏病
R 语言用 Rcpp 减速 Metropolis-Hastings 抽样预计贝叶斯逻辑回归模型的参数
R 语言中的 block Gibbs 吉布斯采样贝叶斯多元线性回归
Python 贝叶斯回归剖析住房累赘能力数据集
R 语言实现贝叶斯分位数回归、lasso 和自适应 lasso 贝叶斯分位数回归剖析
Python 用 PyMC3 实现贝叶斯线性回归模型
R 语言用 WinBUGS 软件对学术能力测验建设档次(分层)贝叶斯模型
R 语言 Gibbs 抽样的贝叶斯简略线性回归仿真剖析
R 语言和 STAN,JAGS:用 RSTAN,RJAG 建设贝叶斯多元线性回归预测选举数据
R 语言基于 copula 的贝叶斯分层混合模型的诊断准确性钻研
R 语言贝叶斯线性回归和多元线性回归构建工资预测模型
R 语言贝叶斯推断与 MCMC:实现 Metropolis-Hastings 采样算法示例
R 语言 stan 进行基于贝叶斯推断的回归模型
R 语言中 RStan 贝叶斯层次模型剖析示例
R 语言应用 Metropolis-Hastings 采样算法自适应贝叶斯预计与可视化
R 语言随机搜寻变量抉择 SSVS 预计贝叶斯向量自回归(BVAR)模型
WinBUGS 对多元随机稳定率模型:贝叶斯预计与模型比拟
R 语言实现 MCMC 中的 Metropolis–Hastings 算法与吉布斯采样
R 语言贝叶斯推断与 MCMC:实现 Metropolis-Hastings 采样算法示例
R 语言应用 Metropolis-Hastings 采样算法自适应贝叶斯预计与可视化
视频:R 语言中的 Stan 概率编程 MCMC 采样的贝叶斯模型
R 语言 MCMC:Metropolis-Hastings 采样用于回归的贝叶斯预计

正文完
 0