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

news2024/12/26 22:55:39

全文链接: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 <- yy
  x\[!is.na(x)\] <- 1
  
  d <- 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.coloradmin.cn/o/2241492.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python酷库之旅-第三方库Pandas(218)

目录 一、用法精讲 1021、pandas.DatetimeIndex.inferred_freq属性 1021-1、语法 1021-2、参数 1021-3、功能 1021-4、返回值 1021-5、说明 1021-6、用法 1021-6-1、数据准备 1021-6-2、代码示例 1021-6-3、结果输出 1022、pandas.DatetimeIndex.indexer_at_time方…

从基础到进阶,Dockerfile 如何使用环境变量

文章目录 📖 介绍 📖🏡 演示环境 🏡📒 文章内容 📒📝 什么是 Dockerfile 环境变量?🔖1. `ENV` 指令🔖2. `ARG` 指令🔖语法:🔖使用 `ARG` 的例子:📝 如何使用环境变量提高 Dockerfile 的灵活性🔖1. 动态配置环境🔖2. 配置不同的运行环境🔖3. 多…

2002.6 Partitioning the UMLS semantic network.划分 UMLS 语义网络

Partitioning the UMLS semantic network | IEEE Journals & Magazine | IEEE Xplore 问题 统一医学语言系统&#xff08;UMLS&#xff09;语义网络中的语义类型&#xff08;ST&#xff09;在知识表示和应用中存在不足&#xff0c;例如 ST 的组织方式缺乏直观性和可解释性…

帽子矩阵--记录

帽子矩阵&#xff08;Hat Matrix&#xff09;并不是由某一位具体的科学家单独发明的&#xff0c;而是逐渐在统计学和线性代数的发展过程中形成的。帽子矩阵的概念最早出现在20世纪初的统计学文献中&#xff0c;尤其是在回归分析的研究中得到了广泛应用。然而&#xff0c;具体是…

vue面试题8|[2024-11-14]

问题1&#xff1a;什么是渐进式框架? vue.js router vuex element ...插件 vue.js 渐0 router 渐1 vuex 渐2 vue.js只是一个核心库&#xff0c;比如我再添加一个router或者vuex&#xff0c;不断让项目壮大&#xff0c;就是渐进式框…

web与网络编程

使用HTTP协议访问Web 通过发送请求获取服务器资源的Web浏览器等&#xff0c;被成为客户端(client)。 Web使用一种名为HTTP(超文本传输协议)的协议作为规范&#xff0c;完成从客户端到服务器端等一系列运作流程。 可以说&#xff0c;Web时建立在HTTP协议上通信的。 网络基础T…

docker 部署freeswitch(非编译方式)

一&#xff1a;安装部署 1.拉取镜像 参考&#xff1a;https://hub.docker.com/r/safarov/freeswitch docker pull safarov/freeswitch 2.启动镜像 docker run --nethost --name freeswitch \-e SOUND_RATES8000:16000 \-e SOUND_TYPESmusic:en-us-callie \-v /home/xx/f…

opencv kdtree pcl kdtree 效率对比

由于项目中以一个环节需要使用kdtree ,对性能要求比较严苛&#xff0c;所以看看那个kdtree效率高一些。对比了opencv和pcl。 #include <array> #include <deque> #include <fstream> #include <opencv2/highgui.hpp> #include <opencv2/imgproc.hpp…

ab (Apache Bench)的使用

Apache Bench&#xff08;ab&#xff09;是一个用于基准测试HTTP Web服务器的命令行工具&#xff0c;广泛用于评估和优化Web服务器的性能。以下是关于Apache Bench的详细介绍&#xff0c;包括其功能、使用方法、常用参数和输出结果解析。 功能 性能测试&#xff1a;通过模拟多…

【数据分享】全国农产品成本收益资料汇编(1953-2024)

数据介绍 一、《全国农产品成本收益资料汇编 2024》收录了我国2023年主要农产品生产成本和收益资料及 2018年以来六年的成本收益简明数据。其中全国性数据均未包括香港、澳门特别行政区和台湾省数据。 二、本汇编共分七个部分,即:第一部分,综合;第二部分,各地区粮食、油料;第…

基于OpenCV的图片人脸检测研究

目录 摘要 第一章 引言 第二章 基于 OpenCV 的图片人脸检测 2.1 实现原理 2.2 代码实现与分析 2.3 代码详细分析 第三章 实验结果与分析 第四章 OpenCV 人脸检测的优势与局限性 4.1 优势 4.2 局限性 第五章 结论 第六章 未来展望 参考文献 摘要 人脸检测是计算机视…

BI(Bilinear interpolation)双线性插值实现上采样

在深度学习中 上采样是将图像放大 如上图所示 要求放大后的图像坐标(2,1)处的像素值 要找到目标图像中对应的原图像素 需要与扩大前和扩大后的边长比相乘得到一个坐标(1.5,0.75) 对应原图中没有一个像素点是重合的 蓝色框框的像素值与红色框框的四个点的像素值有关 相关的计算方…

多模态大模型简介

多模态大模型是机器学习领域的一个新兴趋势&#xff0c;它结合了文本、图像、音频等多种数据模态&#xff0c;以实现更全面和深入的信息理解和处理。这种模型能够处理跨模态任务&#xff0c;如图像标注、视觉问答、文本到图像的生成等&#xff0c;是人工智能领域的重要进展。 技…

Python 正则表达式的一些介绍和使用方法说明(数字、字母和数字、电子邮件地址、网址、电话号码(简单)、IPv4 )

## 正则表达式的概念和用途 正则表达式&#xff08;Regular Expression&#xff0c;简称Regex&#xff09;是对字符串操作的一种逻辑公式&#xff0c;由一些事先定义好的特定字符以及这些特定字符的组合所构成。这些特定字符及其组合被用来描述在搜索文本时要匹配的一个或多个…

java排序算法汇总

一、排序算法我介绍 1.1、介绍 排序也称排序算法(Sort Algorithm)&#xff0c;排序是将一组数据&#xff0c;依指定的顺序进行排列的过程。 1.2、排序的分类&#xff1a; 1) 内部排序&#xff1a;指将需要处理的所有数据都加载到内部存储器中进行排序。 2) 外部排序法&…

Ubuntu22.04.2 k8s部署

k8s介绍 简单介绍 通俗易懂的解释&#xff1a; Kubernetes&#xff08;也被称为 K8s&#xff09;就像是一个大管家&#xff0c;帮你管理你的云计算服务。想象一下&#xff0c;你有很多个小程序&#xff08;我们称之为“容器”&#xff09;&#xff0c;每个都在做不同的事情&…

FastGPT部署通义千问Qwen和智谱glm模型|OneAPI配置免费的第三方API

继这篇博客之后 从零开始FastGPT本地部署|Windows 有同学问&#xff0c;不想在多个平台申请API-Key&#xff0c;不好管理且要付费&#xff0c;有木有白嫖方案呀&#xff1f; 答&#xff1a;有啊。用硅基流动。 注册方法看这篇 【1024送福利】硅基流动送2000万token啦&#xff0…

每日OJ题_牛客_DP36 abb_C++_Java

目录 牛客_DP36 abb 题目解析 C代码1暴力 C代码2DP Java代码 牛客_DP36 abb abb_牛客题霸_牛客网 描述&#xff1a; leafee 最近爱上了 abb 型语句&#xff0c;比如“叠词词”、“恶心心” leafee 拿到了一个只含有小写字母的字符串&#xff0c;她想知道有多少个 &quo…

Redis五大基本类型——String字符串命令详解(命令用法详解+思维导图详解)

目录 一、String字符串类型介绍 二、常见命令 1、SET 2、GET 3、MGET 4、MSET 使用MGET 和 使用多次GET的区别 5、DEL 6、SETNX SET、SET NX和SET XX执行流程 7、INCR 8、INCRBY 9、DECR 10、DECYBY 11、INCRBYFLOAT 12、APPEND 13、GETRANGE 14、SETRANGE …

Dubbo 3.x源码(25)—Dubbo服务引用源码(8)notify订阅服务通知更新

基于Dubbo 3.1&#xff0c;详细介绍了Dubbo服务的发布与引用的源码。 此前我们学习了接口级的服务引入订阅的refreshInterfaceInvoker方法&#xff0c;当时还有最为关键的notify服务通知更新的部分源码没有学习&#xff0c;本次我们来学习notify通知本地服务更新的源码。 Dubb…