R语言贝叶斯分析:INLA 、MCMC混合模型、生存分析肿瘤临床试验、间歇泉喷发时间数据应用|附数据代码...

全文链接:https://tecdat.cn/?p=38273

多模态数据在统计学中并不罕见,常出现在观测数据来自两个或多个潜在群体或总体的情况。混合模型常用于分析这类数据,它利用不同的组件来对数据中的不同群体或总体进行建模。本质上,混合模型是几个代表不同潜在总体的统计分布的凸组合。关于此主题的近期综述可参考例如 Frühwirth-Schnatter、Celeux 和 Robert(2018)的相关著作点击文末“阅读原文”获取完整代码数据)。

混合模型并不遵循高斯马尔可夫随机场的范式,因为由混合模型生成的数据通常是多模态的。不过,Gómez-Rubio 和 HRue(2018)提供了一种通过结合 INLA 和 MCMC 来用 INLA 拟合混合模型的方法,Gómez-Rubio(2017)也探索了使用其他算法用 INLA 拟合混合模型。总体而言,混合模型的分析较为复杂,本文旨在建立 INLA 与这些模型之间的简短联系,并展示如何用 INLA 拟合这些模型。

(一)混合模型的表示形式

混合模型通常可表示如下:

bbe59b79661052c1ba64addfe159d4fc.png

这里,{fk(⋅∣θk}Kk=1(这里注意不要翻译代码中的变量等符号)是一组(参数化)分布,w=(w1,…,wK)是相关权重,它们的定义使得其总和为一,即∑Kk=1wk=1,可将其视为数据中来自每个组的观测值的比例。

一种常见的拟合混合模型的方法是考虑 “扩充” 数据(Dempster、Laird 和 Rubin,1977),即引入一个辅助变量z=(z1,…,zn)来将每个观测值分配到一个组。因此,变量zi,i=1,…,n在集合{1,…,K}中取值。于是,混合模型也可如下表示:

876d07e7130e1ce7a9d33992bf94139b.png

辅助变量z的分布可表述为:

4fee904032b7109d3dd1e10eea634574.png

考虑完整数据(y,z),模型似然变为:

93407317cfaec36e0c5028abc1b76ef6.png

这里,nk,k=1,…,K是组k中的观测值数量。

需要注意的是,如果使用可交换先验,给定z,不同的组是相互独立的。这意味着,在给定z的条件下,可以使用具有多个似然的模型用 INLA 拟合混合模型。如下文所述,可通过多种方式利用这一点来用 INLA 拟合混合模型。

混合模型是不可识别的,因为不同组的标记方式有些随意,不同的标记可能会导致完全相同的模型。例如,在一个有两组的混合模型中,给定z的值,如果标签互换(即 1 设为 2,反之亦然),就会得到完全相同的模型。这就是众所周知的 “标签切换” 问题(Celeux、Merrilee 和 Robert,2000;Stephens,2000)。因此,通常会对θ的先验施加额外约束,且不应使用不恰当的先验。处理此问题的一种简单方法是分配有信息的先验(Carlin 和 Chib,1995)或对不同组的均值施加排序约束(Diebolt 和 Robert,1994;Richardson 和 Green,1997)。

(二)数据集的喷发时间分析

“geyser” 数据集(Azzalini 和 Bowman,1990)描述了黄石国家公园老忠实间歇泉的喷发持续时间以及两次喷发之间的间隔时间,具体变量描述见表。

86c184457777159a8fa2ba24c0ccb6da.png

以下代码展示了如何加载数据并对数据集中的变量进行汇总:

其输出结果如下:

a4bf0b39083b7104d9d2a9d359153551.png

此外,图  展示了这两个变量的散点图以及喷发持续时间的直方图和核密度估计。喷发时间的分布明显是多模态的,拟合典型的线性回归可能不太合适。

880b534a92156277b0d2584ca6aa0906.png

双变量图还显示了喷发前时间与其持续时间之间的高度相关性。实际上,国家公园管理员能够根据前一次喷发的持续时间预测下一次喷发的时间。


点击标题查阅往期内容

9860ca635389ee1d33a3f26743908777.jpeg

R语言贝叶斯分层、层次(Hierarchical Bayesian)模型房价数据空间分析

outside_default.png

左右滑动查看更多

outside_default.png

01

6669fac503e9590b2a579b3473482acf.png

02

e67f5bd56f527c9c6c03dc9f7c686200.png

03

b02f76cf85b048dbd9a6e4ab496f5565.png

04

e64335b80ef3cfca3fe258ed83d00d54.png

现在感兴趣的问题是量化数据集中有多少个组,同时能够刻画每个喷发持续时间组的特征。对图 右侧图的直观检查表明,数据中(至少)有两个不同的组,其均值大致在 2 和 4 左右,且两组之间的标准差相似。注意,有几位作者曾建议该数据集中可能有更多的成分(Zucchini、MacDonald 和 Langrock,2016),但为了简单起见,我们这里只考虑两组的分析。

一种简单的方法是将数据简单地分成两组,并拟合一个具有两个似然的模型。例如,我们可以将所有喷发持续时间小于或等于 3 的喷发时间分配到组 1,其他观测值分配到组 2。或者,也可以使用 K-means 算法对数据进行初步的粗略分类。在这种特定情况下,这两种方法将创建相同的初始数据分类。注意,由于将使用两个不同的似然,响应需要放入一个 2 列矩阵中。

此索引稍后将用于创建数据集,现在也可用于显示分配到每个组的观测值数量:

table(idx1)

其输出结果如下:

3016a3d623b40a08dbe22651971825da.png

注意到大多数观测值在第二组中,如图 所示。

因为我们希望每个组有不同的均值,所以必须使用与观测数据类似的结构将截距分成两部分。在这种情况下,将使用一个 2 列矩阵,其元素为 1 和NA

#Create two different intercepts
II <- yy
II\\\[II > 0\\\] <- 1

接下来,可以通过在数据中使用值yyI(在调用inla()时分别命名为durationIntercept)以及两个似然来拟合模型:

6af5dd3595d0530671d1e17d00240fb2.png

模型的汇总结果显示,两组的均值估计值分别为 1.9994 和 4.2753。此外,第一组的估计精度为 10.712,而第二组的估计精度为 7.2257,这使得第二组的喷发时间略具更大的可变性。

虽然这种方法能对两组之间的喷发时间得出合理的估计,但存在两个问题。第一个问题是我们已经使用了一次数据来确定有两组以及这两组是如何定义的。其次,这种方法忽略了每个观测值来自哪个组的内在不确定性。在将观测值分类到组中时,这是一个重要问题,简单的截断点很少是个好主意。

从建模的角度来看,我们刚才所做的是在给定辅助变量z的条件下拟合模型,即我们已经将z设置为给定的分类。虽然这在实践中可能有用(有关使用 INLA 拟合条件模型的一些示例,请参见 Gómez-Rubio 和 Palmí-Perales,2019),但在完整的贝叶斯分析中,我们也应该对z的后验分布感兴趣。

用 INLA 拟合混合模型

一般而言,混合模型很难拟合(Celeux、Merrilee 和 Robert,2000),并且由于它们不能表示为潜在的高斯马尔可夫随机场(GMRF),所以不属于 INLA 能够拟合的模型类别。然而,正如 Gómez - Rubio 和 HRue(2018)以及 Gómez - Rubio(2017)所指出的,在给定变量(z)的条件下,混合模型就变成了可以用 INLA 拟合的模型。

Gómez - Rubio(2017)指出,混合模型的模型参数的后验边缘可以写成

bdabaf1bacbab955531f5053a559728e.png

需要注意的是,这需要(z)的后验分布,而通常这是未知的。不过,如 Gómez - Rubio 和 HRue(2018)所示,可以在马尔可夫链蒙特卡罗(MCMC)方法中使用 INLA 轻松估计它。

在这个例子中,将使用 Metropolis - Hastings 算法来估计(z)的后验分布。因此,需要一个建议分布来提出(z)的新值,并且所有的赋值将作为一个整体被接受或拒绝(即,对于每个(z_{i},i = 1,\cdots,n)不是单独接受或拒绝)。

建议分布(q(z^{\prime}\mid z))定义了在给定当前值(z)的情况下新值(z^{\prime})的概率。对于每个单独的(z_{i})为(1)的概率为(Marin、Mengersen 和 Robert,2005)

86b3b1496e700d30eb9e24259160cb25.png

这里,(f_{1}(\cdot\mid\mu_{1},\tau_{1}))是均值为(\mu_{1})、精度为(\tau_{2})的正态分布(这是在给定(z)条件下拟合模型得到的第一组的参数),(f_{2}(\cdot\mid\mu_{2},\tau_{2}))的定义与之类似。注意这里均值和精度的值取决于(z)。

这里的示例取自 Gómez - Rubio 和 HRue(2018),它依赖于 INLABMA 包中的 INLAMH()函数。

下面将描述在 MCMC 中使用 INLA 拟合混合模型所需的不同函数。为了对整体情况有一个概述,实现此算法所需的不同函数如下:

  • get.probs():给定潜在变量(z)的观测值,计算不同组件的权重。

  • dq.z():建议分布的密度概率函数。

  • rq.z():建议分布的随机数生成器函数。

  • fit.inla.internal():给定(z)的值拟合所需的 INLA 模型。这用于计算接受概率所需的条件边缘似然(\pi(y\mid z))。

  • prior.z():计算(z)的先验。

此外,需要注意的是,在以下函数中存储观测值分类的变量不是一个简单的表示观测值所属组的向量,而是一个更复杂的数据结构。特别是,它是一个包含以下元素的列表:

  • z:指示观测值所属的向量。

  • m:在(z)值条件下用 INLA 拟合的模型。它是一个包含两个组件的列表:拟合的 INLA 模型和模型拟合的边缘似然。

注意,例如,函数(rq.z())返回这种类型的对象。这是用于表示变量(z)的数据结构,并传递给几个函数用于计算。包含模型拟合的原因是为了避免在 Metropolis - Hastings 算法的实现中多次拟合模型。

在描述所需函数之前,要使用的组数为(2),在变量(n.grp)中设置,供下面定义的一些函数使用。此外,变量(grp)定义为一个向量,用于存储观测值最初所属的组:

# 组数
n.grp <- 2# 初始分类
grp <- rep(1, length(geyser$duration))
grp\[!idx1\] <- 2

函数fit.inla.internal()用于在给定(z)的情况下实际拟合所需的模型,在下面的rq.z()函数中使用。需要注意的是,下面还定义了另一个类似的函数inla.fit()用于类似目的。这两个函数的主要区别在于fit.inla.internal()调用inla()在(z)条件下拟合条件模型,而fit.inla()只是从表示(z)值和模型拟合的复杂数据结构中获取拟合模型。

# y:响应值向量
# grp:分配变量的整数向量
fit.inla.internal <- function(y, grp) {# 两列格式的数据yy <- matrix(NA, ncol = n.grp, nrow = length(y))for(i in 1:n.grp) {idx <- which(grp == i)yy\[idx, i\] <- y\[idx\]}# X存储模型中的截距x <- yyx\[!is.na(x)\] <- 1d <- list(y = yy, x = x)# 模型拟合(在z条件下)m1 <- inla(y ~ -1 + x, data = d,family = rep("gaussian", n.grp),# control.fixed = list(mean = list(x1 = 2, x2 = 4.5), prec = 1)control.fixed = list(mean = prior.means, prec = 1))res<- list(model = m1, mlik = m1$mlik\[1, 1\])return(res)
}

表示分组分配和相关模型拟合的初始数据结构(如上所述)接下来在变量grp.init中定义。需要注意的是,由于这包括模型拟合,所以通过变量prior.means定义了组均值上高斯先验分布的先验均值。此外,设置变量scale.sigma用于建议分布。

下面展示了实现 Metropolis - Hastings 算法所需的函数。作为 R 语言的注释,给出了它们各自参数的一些信息。

函数get.probs()将根据(z)的当前值(作为从(1)到(K)的整数向量传递)计算每个组件的权重。

# 属于每个组的概率
# z:值从1到组数的整数向量
get.probs <- function(z) {probs <- rep(0, n.grp)tab <- table(z)probs\[as.integer(names(tab))\] <- tab / sum(tab)return(probs)
}

接下来,定义函数dq.z()来计算给定当前值(z.old)时(z)的新值(z.new)的密度。需要注意的是,这些值是如上所述的数据结构,而不仅仅是整数向量。

使用给定(z)当前值的建议分布对(z)进行随机观测采样的函数是rq.z()。需要注意的是,(z)是一个复杂的数据结构,包括指示向量和模型拟合,如上所述。

# FIXME:这里我们不考虑可能的标签切换
# z:z的当前值
rq.z <- function(z) {m.aux <- z$m$model means <- m.aux$summary.fixed\[, "mean"\]precs <- m.aux$summary.hyperpar\[, "mean"\]ws <- get.probs(z$z)z.sim <- sapply(1:length(z$z), function (X) {aux <- ws * dnorm(y\[X\], means, scale.sigma * sqrt(1 / precs))sample(1:n.grp, 1, prob = aux / sum(aux))})# 拟合模型z.model <- fit.inla.internal(y, z.sim)# 新值z.new <- list(z = z.sim, m = z.model)return(z.new)
}

(z)上的先验分布简单地是概率为(0.5)的伯努利分布的乘积,以提供一个模糊先验:

函数fit.inla()是 INLAMH()函数用于在给定(z)值的情况下拟合模型的函数。在这个特定的实现中,实际的模型拟合是在函数rq.z()中使用fit.inla.internal()函数完成的,因此fit.inla()只是从数据结构中检索元素(m)。

fit.inla <- function(y, grp) {return(grp$m)
}

接下来,需要调用INLAMH()函数来拟合模型。由于起始点接近数据的最优划分(但需要注意这并不常见),所以不需要大量的预烧迭代。此外,迭代次数保持在较低的(100)次(每隔(5)次取一次),因为在这个特定的例子中,只有少数观测值的后验概率可能不接近(0)或(1)。在更复杂的例子中,可能需要更高的模拟次数。

一旦模型拟合完成,它将返回一个包含拟合模型和(z)值(其中包括许多实际上不需要的辅助变量)的列表。(z)的采样值可以通过以下方式获得:

zz <- do.call(rbind, lapply(inlamh.res$b.sim, function(X){X$z}))

从后验分布(\pi(z\mid y))的这个样本中,我们可以计算属于每个组的后验概率:

zz.probs <- apply(zz, 2, get.probs)

需要注意的是,大多数观测值的概率为(0)和(1),即分类非常清晰,只有少数观测值在分类中会显示出一些不确定性。图展示了观测值与属于喷发持续时间较短组(即(z_{i}=1))的后验概率的关系。

6f18563fd6639ae282485ca9fa2f50a3.png

还可以获得与(z)采样值相关的所有模型的条件边缘似然,以深入了解模拟过程:

这些也显示在图(右图)中,它们展示了初始模型拟合(其边缘似然为 - 140.16)相比,采样算法如何使条件边缘似然增加。这也意味着较短的预烧期就足够了。

此外,链显示只探索了少数几种分类。可以通过增加用于抽样的迭代次数或选择不同的建议分布(例如,选择标准差更大的值,如两倍的值)来轻松改变这种行为。然而,在这个特定的情况下,大多数观测值属于两个组之一的后验概率很高,这意味着它们总是被分到同一组。因此,后验概率集中在少数几种分类中,只有喷发持续时间约为(3)分钟的观测值会被分到两组中的任何一组。

混合模型的模型选择

混合模型组件数量确定的挑战与方法

在混合模型中,确定模型的组件数量往往颇具难度,迄今为止已有诸多相关提议。在此,我们将通过已知组数来探讨混合模型边际似然的估计方法。需注意,可按如下方式(Gómez - Rubio,2017)计算边际似然:

7fa9451639d9cafeb4092a0ee5bfaa14.png

要注意的是,在给定(z)的情况下,通过用INLA拟合模型所返回的边际似然能够较为准确地近似(\pi(y\mid z = z))。此外,(\pi(z))是先验分布,其始终是已知的。

另外,还可通过如下方式(Chib,1995)计算混合模型的边际似然:

2ef26b5e8d896667de9f517542f62a13.png

需注意,为使上述计算稳定,(z^{*})的后验概率必须远离零。一个不错的选择是(z)的后验众数。

例如,我们可以选取具有最高边际似然值的(z)值(注意所有(z)值的先验值相同),这里选取在第60次迭代时得到的值:

z.idx <- 60

然后,由INLA提供的条件边际似然(\pi(y\mid z = z^{*}))的估计值为:

# 边际似然(对数尺度)
mliks\[z.idx\]

输出结果如下:

## \[1\] -131.8

接下来,计算(z^{_})处的先验(\pi(z = z^{_}))(对数尺度):

# 先验(对数尺度)
prior.z(inlamh.res$b.sim\[\[z.idx\]\])

输出结果如下:

## \[1\] -207.3

最后,从通过MCMC算法获得的(z)的后验分布样本中获取(z{})的后验概率。具体做法是简单检查(z{})在(z)的后验分布样本中出现的比例:

# 后验概率
z.post <- table(apply(zz, 1, function(x) {paste(x, collapse = "")})) / 100# 获取z^*的对数尺度后验概率
log.pprob <- unname( log(z.post\[names(z.post) ==paste(inlamh.res$b.sim\[\[z.idx\]\]$z, collapse = "")\])
)
log.pprob

输出结果如下:

## \[1\] -1.561

需要注意的是,上述使用了paste()函数,目的是通过将(z)的所有值拼接在一起为每个(z)值创建一个唯一的标签。生成的标签长度与观测值数量相同,可能会很长。无论如何,这是一种用标签标识潜在变量每个值的简单方法,不过在实际应用中应优先选择更简短的方式(如哈希表)。为(z)的每个值提供一个唯一标签,能让我们直接对样本值使用table()函数,以计算潜在变量每个值在MCMC样本中出现的次数。

因此,边际似然(对数尺度)的估计值为:

mlik.mix <- mliks\[z.idx\] + prior.z(inlamh.res$b.sim\[\[z.idx\]\]) - log.pprob
mlik.mix

输出结果如下:

## \[1\] -337.5

需要注意的是,这种边际似然的估计依赖于对(\pi(y\mid z = z^{_}))(由INLA提供)和(\pi(z = z^{_}\mid y))(从MCMC样本中获得)的近似。因此,为获得可靠估计,可能需要运行MCMC算法更多的迭代次数。

可将获得的这个边际似然值与对整个数据集拟合单一似然的高斯模型时INLA所报告的值进行比较:

inla(duration ~ 1, data = geyser)$mlik\[1,1\]

输出结果如下:

## log marginal-likelihood (integration) 
##                                 -478.6

不同组件数量混合模型的应用与分析

最后,可使用相同方法对数据拟合一个具有三个组件的模型。这需要将组数设置为三,并生成一个合适的起始点(在此例中,是将数据等分为三组):

# 组数
n.grp <- 3# 初始分类
grp3 <- as.numeric(cut(geyser$duration, 3))
grp.init3 <- list(z = grp3, m = fit.inla.internal(y, grp3))

接下来,设置先验均值以及建议分布的标准差尺度:

# 均值的先验
prior.means <- list(x1 = 2, x2 = 3.5, x3 = 5)
# 建议分布的标准差尺度
scale.sigma <- 1

一旦定义了所有用于拟合具有三个组件的混合模型的参数,就可使用INLAMH()函数进行模型拟合:

然后,可按照之前类似的方法计算这个具有三个组件的混合模型的边际似然。首先,获取具有最大条件边际似然((z^{*}))的(z)值:

## 条件(在z上)边际似然
mliks3 <- do.call(rbind, lapply(inlamh.res3$model.sim, function(X){X$mlik}))
# 具有最大条件边际似然的z^*
z.idx3 <- which.max(mliks3)

接下来,从MCMC样本中估计(z^{*})的对数后验概率:

最后,通过将这两个值与(z^{*})的先验概率相结合来估计边际似然:

# 边际似然
mlik.mix3 := mliks3\[z.idx3\] + prior.z(inlamh.res3$b.sim\[\[z.idx3\]\]$z) -log.pprob3
mlik.mix3

输出结果如下:

## \[1\] -291.4

需要注意的是,现在获得的边际似然估计值比具有1个和2个组件的模型的估计值要大。这意味着数据中可能(至少)有三个组,而非如Zucchini、MacDonald和Langrock(2016)所讨论的只有两个组。

为了汇总使用具有2个和3个组件的模型的拟合情况,图展示了利用模型参数的后验均值得到的混合情况。将使用函数inla.merge()来合并在Metropolis - Hastings算法中获得的所有模型。这将提供模型中均值和精度的后验均值。权重(w)的后验均值将从每个组中观测值比例的后验均值中获得(假设先验是非常模糊的均匀先验)。

类似地,对于具有3个组件的模型:

6af097b07eebd6533dfa09de19403680.png

生存模型治愈模型在INLA中的应用及相关分析

生存模型假设所有个体最终都会经历感兴趣的事件。然而,在某些情况下,个体可能被治愈,因此不会再经历该事件。典型的情况是患者在接受适当治疗后从疾病中康复。

这种情况可以方便地用一个包含两组的混合模型来表示:一组是治愈的个体,另一组是未治愈且已经经历或最终会经历事件的个体。这是一种特殊的只有两类的混合模型。此外,由于一些个体已经经历了事件,所以会自动被分配到第二组。这使得治愈模型更容易识别,因为这些个体有助于识别第二组,进而有助于识别第一组。

模型描述

该模型可以描述如下:

e84f524b1aaaf2f7cdeeeee541bda9c0.png

这里,f(⋅∣θ)f(⋅∣θ)表示威布尔分布,在INLA中其参数化如下:

32286f8ffc4bbc651197aac1afa99ddf.png

注意,威布尔分布的这种参数化类似于似然函数weibullvariant = 0的威布尔族。

在上述方程中,yiyi表示生存时间,它是一个非负变量,αα是正形状参数,λλ是与线性预测因子相关的参数。这种关联如下:

086d7434f6648c8833fcd4b60c63ca06.png

该模型的先验是在参数αα和ww的内部表示上定义的。特别地,内部参数化如下:

40fa529a4ed6556857d1cae5cba9013d.png

这种参数化确保了θ1θ1和θ2θ2不在有界区间内,这简化了优化和模型拟合。θ1θ1的默认先验是参数为25和25的对数伽马分布,θ2θ2的先验是均值为 - 1、精度为0.2的高斯分布。

(Cai等人)提供了来自东部肿瘤协作组(ECOG)III期临床试验e1684的数据集(详见Kirkwood等人)。该临床试验是为了测试干扰素α - 2b(IFNα - 2b)在转移性黑色素瘤中是否具有抗肿瘤活性。

原始数据集可以按如下方式加载:

21d3936976de5cd01162260d667c7f9d.png

为了使总结结果更具信息量,将为数据集中的因子分配这些标签:

# 为因子分配标签
e1684$TRT <- as.factor(e1684$TRT)
levels(e1684$TRT) <- c("Control", "IFN")e1684$SEX <- as.factor(e1684$SEX)
levels(e1684$SEX) <- c("Female", "Male")

最后,由于存在缺失观测值,将删除第37个观测值:

# 删除第37个观测值,因为它有缺失值
d <- na.omit(e1684)

现在,可以对数据进行如下总结:

1eb6ffa6e69babaf09abd2fe9f6bf2c9.png

接下来,使用survival包中的survfit()函数获得生存时间的Kaplan - Meier估计:

# 加载survival库
library("survival")
# 使用survfit函数计算Kaplan - Meier估计
km <- survfit(Surv(d$FAILTIME, d$FAILCENS) ~ 1)

3546b75f9e29634206c885757dbff644.png

接下来拟合模型。

# 创建用于INLA分析的数据列表
d.inla <- list(y = inla.surv(d$FAILTIME, d$FAILCENS),Treatment = d$TRT, Age = d$AGE, Female = d$SEX)# 使用INLA拟合治愈模型
cure.inla <- inla(y ~ Treatment + Age + Female, family = "weibullcure",data = d.inla)
summary(cure.inla)

0ba69f59c131ccc2b30a88a41e44719a.png

这些估计值与Lázaro、Armero和Gómez - Rubio报告的相似,他们比较了MCMC和一种与INLA中的吉布斯采样类似的不同模型拟合方法。

注意,治愈模型估计治愈患者比例的后验均值为0.2968。使用典型的威布尔生存模型(即忽略被治愈的可能性)将得到以下结果:

# 使用INLA拟合威布尔生存模型
weibull.inla <- inla(y ~ Treatment + Age + Female, family = "weibullsurv",data = d.inla, control.family = list(list(variant = 0)))
summary(weibull.inla)

faf32792a2e586da16896295850d580d.png

注意现在治疗的效果是显著的。因此,假设患者可以被治愈对模型中主要效应的估计有重要影响。此外,治愈模型的边缘似然大于威布尔模型的边缘似然,这表明治愈模型拟合得更好。然而,请记住,边缘似然不会对模型的复杂性进行惩罚。过度拟合的模型往往有更高的边缘似然值。

参考文献

Azzalini, A., and A. W. Bowman. 1990. “A Look at Some Data on the Old Faithful Geyser.” Applied Statistics 39: 357–65.

Cai, Chao, Yubo Zou, Yingwei Peng, and Jiajia Zhang. 2012a. “Smcure: An R-Package for Estimating Semiparametric Mixture Cure Models.” Computer Methods and Programs in Biomedicine 108 (3): 1255–60.

c7df37e1bff15f45c016ee6b7da131dd.jpeg

本文中分析的数据、代码分享到会员群,扫描下面二维码即可加群! 

7e49d97dbf42fc70289cc8e22f4e0089.png


资料获取

在公众号后台回复“领资料”,可免费获取数据分析、机器学习、深度学习等学习资料。

53df55fb42c48a7ab31e9d339da9f162.jpeg

点击文末“阅读原文”

获取全文完整代码数据资料。

本文选自《R语言贝叶斯分析:INLA 、MCMC混合模型、生存分析肿瘤临床试验、间歇泉喷发时间数据应用|附数据代码》。

点击标题查阅往期内容

课程视频|R语言bnlearn包:贝叶斯网络的构造及参数学习的原理和实例

R语言贝叶斯分层、层次(Hierarchical Bayesian)模型房价数据空间分析

R语言Gibbs抽样的贝叶斯简单线性回归仿真分析

python贝叶斯随机过程:马尔可夫链Markov-Chain,MC和Metropolis-Hastings,MH采样算法可视化

Python贝叶斯推断Metropolis-Hastings(M-H)MCMC采样算法的实现

Metropolis Hastings采样和贝叶斯泊松回归Poisson模型

Matlab用BUGS马尔可夫区制转换Markov switching随机波动率模型、序列蒙特卡罗SMC、M H采样分析时间序列

R语言RSTAN MCMC:NUTS采样算法用LASSO 构建贝叶斯线性回归模型分析职业声望数据

R语言BUGS序列蒙特卡罗SMC、马尔可夫转换随机波动率SV模型、粒子滤波、Metropolis Hasting采样时间序列分析

R语言Metropolis Hastings采样和贝叶斯泊松回归Poisson模型

R语言贝叶斯MCMC:用rstan建立线性回归模型分析汽车数据和可视化诊断

R语言贝叶斯MCMC:GLM逻辑回归、Rstan线性回归、Metropolis Hastings与Gibbs采样算法实例

R语言贝叶斯Poisson泊松-正态分布模型分析职业足球比赛进球数

R语言用Rcpp加速Metropolis-Hastings抽样估计贝叶斯逻辑回归模型的参数

R语言逻辑回归、Naive Bayes贝叶斯、决策树、随机森林算法预测心脏病

R语言中贝叶斯网络(BN)、动态贝叶斯网络、线性模型分析错颌畸形数据

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采样用于回归的贝叶斯估计

f0f3e4b100cf18f106339dbae784fc96.jpeg

e851f0cb9a9944c0482b3bca35e40477.png

1f04b075e70faa3736011fa8cb9d26b1.png

67d4dec5ccbcb2ea83e7e89a3416f6cb.jpeg

a5c8dd51ebe89cbb25c496746ff9bbce.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/472176.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AI开发-计算机视觉库-OpenCV

1 需求 官网&#xff1a;OpenCV - Open Computer Vision Library 2 接口 3 示例 import cv2image cv2.imread("./data/train/1_1.jpg") print(type(image)) 4 参考资料

RK3588 C++ 多线程运行

RK3588 C 多线程 实际运行解决OpenCV问题&#xff1a; 1. OpenCV 安装 sudo apt-get update sudo apt-get install libopencv-dev2. 检查 OpenCV 安装路径 find / -name OpenCVConfig.cmake3. 设置 OpenCV_DIR 环境变量 export OpenCV_DIR/usr/lib/aarch64-linux-gnu/cmake/op…

从0开始学习机器学习--Day26--聚类算法

无监督学习(Unsupervised learning and introduction) 监督学习问题的样本 无监督学习样本 如图&#xff0c;可以看到两者的区别在于无监督学习的样本是没有标签的&#xff0c;换言之就是无监督学习不会赋予主观上的判断&#xff0c;需要算法自己去探寻区别&#xff0c;第二张…

git使用及上线流程(仅为我工作中常用)

推荐软件或者直接终端 ⚠️注意&#xff1a;在确保远程和本地分支都可使用的情况下 git常见使用命令 ls---查看所有目录 pwd---本机密码 cd 目录名---进入目录 Touch ---创建文本文件 git status---查看状态 git branch---查看分支 git pull---拉取远程最新代码 git checkou…

shell编程之变量与引用

目录 深入认识变量什么是变量变量的名称变量数据类型变量的定义自定义变量环境变量位置变量 变量赋值和作用域赋值&#xff1a;变量名变量值read从键盘读入变量值变量和引号变量的作用域变量的运算 深入认识变量 什么是变量 变量是在程序中保存用户数据的一段内存存储空间&am…

精华帖分享|浅谈金融时间序列分析与股价随机游走

本文来源于量化小论坛公共讨论区板块精华帖&#xff0c;作者为正扬&#xff0c;发布于2024年6月3日。 以下为精华帖正文&#xff1a; 01 引 时间序列分析是个很唬人的术语&#xff0c;实际上它也不是一个很容易接近的话题。我本科曾经短暂地学过一点点&#xff0c;又看到互联…

计算机网络 (4)计算机网络体系结构

前言 计算机网络体系结构是指计算机网络层次结构模型&#xff0c;它是各层的协议以及层次之间的端口的集合。这一体系结构为计算机网络及其部件应完成的功能提供了精确定义&#xff0c;并规定了这些功能应由何种硬件或软件来实现。 一、主流模型 计算机网络体系结构存在多种模型…

时钟之CSS+JS版

写在前面 此版本绘制的时钟基于CSSJS模式。 优点操作简单&#xff0c;缺点当然是不够灵活。下一篇会基于HTML5的canvas标签&#xff0c;使用JS绘制。会更灵活&#xff0c;元素更加丰富。 HTML代码 <div class"box"><article class"clock"><…

Elastic Agent:可灵活地在任何地方发送和处理任何数据

作者&#xff1a;来自 Elastic Nima Rezainia Elastic Agent 是一款功能强大且用途广泛的工具&#xff0c;可用于从各种数据源&#xff08;包括自定义用户应用程序&#xff09;收集日志和指标。现在&#xff0c;Elastic Agent 提供了无与伦比的灵活性&#xff0c;可以将数据准确…

Android CCodec Codec2 (二一)InputBuffers

CCodec使用CCodecBuffers来对输入/输出端口上的buffer进行管理&#xff0c;这一篇文章我们将一起了解InputBuffers&#xff0c;也就是输入端口的buffer管理方法。 1、CCodecBuffers CCodecBuffers是端口管理的基类&#xff0c;它抽象了输入端口管理和输出端口管理的通用方法&a…

JDBC-Mysql 时区问题详解

目录 一、前置准备 1.1 版本号列表 1.2 Sql脚本 1.3 application.yaml配置 1.4 数据库时区设置 二、java Date类型与&#xff08;jdbcType&#xff09;TIMESTAMP类型的转换 2.1 jdbc对serverTimeZone的处理 2.2 java Date转&#xff08;jdbcType&#xff09;TIMESTAMP …

LC12:双指针

文章目录 125. 验证回文串 本专栏记录以后刷题碰到的有关双指针的题目。 125. 验证回文串 题目链接&#xff1a;125. 验证回文串 这是一个简单题目&#xff0c;但条件判断自己写的时候写的过于繁杂。后面参考别人写的代码&#xff0c;首先先将字符串s利用s.toLowerCase()将其…

H5页面多个视频如何只同时播放一个?

目录 背景1. 首先介绍下 muted 属性2. 监听播放和暂停操作3. 视频播放完毕后返回桌面&#xff0c;再进入H5页面发现视频封面丢失置灰解决思路&#xff1a; 背景 页面模块同时有个四个视频模块&#xff0c;发现可以同时播放四个视频&#xff0c;但是理想的是每次只播放一个。 …

【环境配置】macOS配置jdk与maven

配置jdk与maven 配置jdk与切换java版本命令 maven安装与配置国内镜像源 用到的命令 # 进入 JDK 安装目录 cd /Library/Java/JavaVirtualMachines# 查看文件 ls ➜ jdk-1.8.jdk jdk-11.jdk# 查看路径 pwd ➜ /Library/Java/JavaVirtualMachines# 打开环境变量配置文件 vi &…

基于汇编语言的贪吃蛇程序

摘要 在我们空闲的时候&#xff0c;我们可以用一些我们学过的知识编一些东西&#xff0c;通过这些东西我们可以学习到汇编语言综合应用程序设计方法&#xff0c;还可以提高汇编语言实际应用能力&#xff0c;充分了解计算机硬件和软件&#xff0c;完成理论到实践的推进过程。这…

Qt文件目录操作

文件目录操作相关类 Qt 为文件和目录操作提供了一些类&#xff0c;利用这些类可以方便地实现一些操作。Qt 提供的与文件和目录操作相关的类包括以下几个&#xff1a; QCoreApplication&#xff1a;用于提取应用程序路径&#xff0c;程序名等文件信息&#xff1b;QFile&#x…

2024 CCF中国开源大会“开源科学计算与系统建模openSCS”分论坛成功举办

11月9日&#xff0c;2024 中国计算机学会&#xff08;CCF&#xff09;中国开源大会“开源科学计算与系统建模openSCS”分论坛在深圳落下帷幕。本次论坛由开源科学计算与系统建模工作委员会、苏州同元软控信息技术有限公司&#xff08;简称“同元软控”&#xff09;、深圳景元数…

基于 PyTorch 从零手搓一个GPT Transformer 对话大模型

一、从零手实现 GPT Transformer 模型架构 近年来&#xff0c;大模型的发展势头迅猛&#xff0c;成为了人工智能领域的研究热点。大模型以其强大的语言理解和生成能力&#xff0c;在自然语言处理、机器翻译、文本生成等多个领域取得了显著的成果。但这些都离不开其背后的核心架…

C++(Day35)

一、学习内容 C绪论 C是C语言的拓充&#xff0c;C包含C的所有属性&#xff0c;换一句话说&#xff0c;C语言的语法在C中都合法。 C语言是面向过程的编程思想。 C语言是面向对象的编程思想。&#xff08;半面向对象&#xff0c;半面向过程&#xff09; 可以说在C中一切皆对象。 …

World of Warcraft [WeakAuras]Barney Raid Kit - Collapsing Star Indicator

https://wago.io/BarneyCS 黄色数字表示需要修的血量。 绿色数字表示停止修血。 红色数字表示修血过量&#xff0c;以及该坍缩星将在大爆炸读条结束前多少秒爆炸。 Numbers in yellow means damage required. Numbers in green means HP is good, dont damage anymore. Numbers…