广义线性模型beta二项分布的淋巴结疾病风险预测可视化R语言2实例合集|附数据代码

简介: 广义线性模型beta二项分布的淋巴结疾病风险预测可视化R语言2实例合集|附数据代码

淋巴结疾病作为一类复杂的健康问题,其风险预测一直是临床和公共卫生领域的研究热点。随着统计学的进步和计算能力的提升,广义线性模型(GLM)成为了分析这类数据的有力工具。特别是当数据呈现比例特性时,beta二项分布作为广义线性模型的一个特例,为我们提供了一种灵活且强大的方法来建模和预测淋巴结疾病的风险点击文末“阅读原文”获取完整代码数据


在统计分析中,beta二项分布模型因其能够处理比例数据且能够同时考虑数据的均值和变异程度而备受关注。特别地,在医疗领域,当数据表现为成功次数与总次数的比例时,beta二项分布模型能够为我们提供一个强大的工具来分析这些比例数据的内在规律。

本文旨在帮助客户探讨beta二项分布模型在淋巴结疾病风险预测中的应用,并通过R语言实现数据的可视化分析。通过这一研究,我们期望能够为淋巴结疾病的风险预测提供新的视角和方法,并为临床医生和患者提供更有价值的决策支持。

数据集

本项研究使用的数据集包含17,659个观测值,涉及六个变量。展示了数据集的前六行,以便对数据的结构和内容有一个初步的了解。

head(data)

数据集前六行概览

e0d2309452310eb4d18868340bdcacc7.png

CS.lymph.nodes表示淋巴结计数,Regional.nodes.examinedRegional.nodes.positive分别表示被检查的淋巴结数量和阳性淋巴结数量。此外,数据集还包括种族(Race.recode)、年龄(Age.recode.with.<1.year.olds)和性别(Sex)等分类变量。

数据结构描述

使用str()函数对数据结构进行进一步分析

b326fa86f9682801cbd1579e34013cac.png


数据结构描述

  • CS.lymph.nodes:数值型变量,表示淋巴结计数,共有17,659个观测值。
  • Regional.nodes.examined:数值型变量,表示被检查的淋巴结数量,共有17,659个观测值。
  • Regional.nodes.positive:数值型变量,表示阳性淋巴结数量,共有17,659个观测值。
  • Race.recode:字符型变量,表示种族信息,共有17,659个观测值。
  • Age.recode.with.<1.year.olds:字符型变量,表示年龄信息,共有17,659个观测值。
  • Sex:字符型变量,表示性别信息,共有17,659个观测值。

模型拟合



为了探究淋巴结数量及其阳性比例与可能的影响因素之间的关系,我们使用了beta二项分布模型进行拟合。beta二项分布模型是一种广义线性模型,特别适用于比例数据的建模。

Qing Li

拓端分析师


具体地,我们使用vglm()函数进行模型拟合,将Regional.nodes.examinedRegional.nodes.positive作为响应变量,betabinomial作为分布函数,data作为数据集,并设置trace = TRUE以显示迭代过程。

相关视频

image.png


模型拟合的代码如下:

egional.nodes.positive) ~ 1, betabinomial,

在模型拟合完成后,我们将对模型结果进行详细的分析和解释。

2e5814a2108b7d091b21bf51f1996831.png

这表明模型在第五次迭代时收敛,并且对应的对数似然值为-33041.2181。这一数值将作为后续模型评估的重要依据。

模型结果分析

为了获取模型参数的估计值,我们使用了coef()函数,并设置了matrix = TRUE以矩阵形式展示结果:

e0d5b4d1235838a6bd976976528f674b.png

这里的logit(mu)logit(rho)分别表示beta二项分布中均值(mu)和分散参数(rho)的logit变换后的估计值。为了更容易地解释这些值,我们进一步将这些logit变换后的系数转换回原始尺度:

转换后的系数值如下:

ee09608ed31820f6a008610b46e3537f.png 其中,mu的估计值表示在给定条件下,阳性淋巴结数量的期望比例,而rho的估计值则描述了这一比例的变异程度。在本例中,mu的估计值约为0.67,表明在平均情况下,大约67%的被检查淋巴结会被诊断为阳性。同时,rho的估计值约为0.79,说明在数据集中,阳性淋巴结比例的变化相对较小,这可能与数据集的特性或潜在的影响因素有关。

在模型拟合完成后,为了进一步理解模型中的数据和权重,我们结合了模型的响应变量(fit@y)和先验权重(weights(fit, type = "prior"))进行了初步的数据查看。以下是合并后数据的头部展示:

c1d3c1a7286325062c0a0d0fcd4aac79.png

其中,第一列([,1])表示模型响应变量的观测值(例如,阳性淋巴结的比例),而第二列([,2])则代表与这些观测值相对应的先验权重。这些权重在模型拟合过程中用于调整不同观测值对模型参数估计的影响。

模型结果汇总

接下来,我们对模型的整体拟合结果进行了汇总。以下是使用summary(fit)函数得到的输出:

模型系数估计

summary(fit)

b2df6f0c96f22dc204aa672a7535b058.png

模型估计了两个参数:logit(mu)logit(rho)的截距项。mu代表阳性淋巴结的期望比例,而rho则描述了这一比例的变异程度。从上述结果可以看出,两个截距项的估计值分别为0.71364和1.29980,且均具有较高的统计显著性(p值远小于0.05)。

模型包含两个线性预测器,分别对应于logit(mu)logit(rho)。模型的对数似然值为-33041.22,在32764个自由度下计算得出。此外,模型在5次迭代后收敛。

数据可视化

为了更直观地展示模型结果,我们使用ggplot2包绘制了散点图,并通过geom_pointgeom_smooth函数添加了数据点和拟合曲线。在散点图中,我们以Regional.nodes.positive为x轴,以模型响应变量fit@y(即模型预测的阳性淋巴结比例)为y轴。通过这一可视化手段,我们可以清晰地看到数据点的分布情况以及模型拟合的效果。

geom_point(aes(text = paste("fit@y:", fit@y)))

75d925929b0f7a7fc6785f941a755109.png

淋巴结疾病数据

在本研究中,我们来拟合一个beta二项分布模型,以分析淋巴结疾病数据。首先,我们构建了一个仅包含截距项的模型,用于估计阳性淋巴结(R)与阴性淋巴结(N-R)之间的比例关系。模型构建如下:

在模型迭代过程中,我们观察到了对数似然值(log-likelihood)的变化,最终模型在第3次迭代时收敛,并给出了稳定的对数似然值-122.69531。这表示模型已找到了最优的参数估计值。


88aa6f1afef2f468ef1e9276f45a6d14.png

模型的参数估计结果如下:

765295b4035b33c9773f9d062b56eaa5.png

这里,logit(mu)logit(rho)分别表示阳性淋巴结比例的期望(mu)和变异程度(rho)的对数几率。通过反变换,我们可以得到这些参数的原始值:

Coef(fit)

14a4a442e359fca20fccc0c4772a9b3c.png

接下来,为了进一步提高模型的预测能力,我们引入了额外的解释变量。具体地,我们将患者分组(grp)和血红蛋白水平(hb)作为预测因子加入到模型中,并设置beta二项分布的零参数为2,以适应数据的特定特征。新的模型构建如下:

fgrp + hb

97cdadc1f7b86a691bba4923fae8f233.png

迭代过程中,我们观察到了对数似然值的稳定下降,最终模型在第8次迭代时收敛,并给出了稳定的对数似然值-92.907851。这表明,通过引入额外的解释变量,我们得到了一个更加拟合数据的模型。

模型参数估计的解读

经过在beta二项分布模型中引入患者分组(fgrp)和血红蛋白水平(hb)作为预测因子,我们得到了新的模型fit2。通过执行coef(fit2, matrix = TRUE),我们得到了模型参数的估计值,具体如下:


1bd45e0932cf5837d1ccedb9c8731898.png

从上述结果中,我们可以看到不同患者分组(fgrp2fgrp3fgrp4)相对于基准组(fgrp1)对阳性淋巴结比例(mu)的对数几率的影响。特别地,fgrp2fgrp3、和fgrp4的系数均为负数,表明这些组的患者相较于基准组具有较低的阳性淋巴结比例。此外,血红蛋白水平(hb)的系数为负,说明随着血红蛋白水平的降低,阳性淋巴结的比例也随之降低。

对于变异程度(rho),我们注意到除了截距项外,其他预测因子的系数均为0。这可能是由于在模型构建过程中,我们没有为rho引入额外的预测因子,或者这些因子对rho的影响不显著。

数据可视化分析

为了更直观地理解模型结果,我们对数据进行了可视化分析。首先,我们使用plot函数绘制了血红蛋白水平(hb)与死亡比例(R / N)之间的散点图,其中不同的患者分组用不同的颜色和符号表示。图表的标题为“拟合值(线条)”。

smalldf = with(lirat, lirat[N > 1, ])

接下来,为了在每个患者分组中绘制模型的拟合线,我们首先筛选出N > 1的数据子集smalldf。然后,我们遍历每个患者分组,提取出该组的血红蛋白水平(hb)和模型拟合值(fitted(fit2)),并使用lines函数在散点图上绘制出拟合线。

9f803d07285cede95143d2a6dcc923b4.png

通过这一步骤,我们可以清楚地看到在每个患者分组中,模型如何根据血红蛋白水平的变化来预测阳性淋巴结的比例。

这些拟合线不仅有助于验证模型的准确性,还能为我们提供关于患者分组和血红蛋白水平对疾病严重程度影响的深入理解。


相关文章
|
2月前
|
数据采集 机器学习/深度学习 数据可视化
R语言从数据到决策:R语言在商业分析中的实践
【9月更文挑战第1天】R语言在商业分析中的应用广泛而深入,从数据收集、预处理、分析到预测模型构建和决策支持,R语言都提供了强大的工具和功能。通过学习和掌握R语言在商业分析中的实践应用,我们可以更好地利用数据驱动企业决策,提升企业的竞争力和盈利能力。未来,随着大数据和人工智能技术的不断发展,R语言在商业分析领域的应用将更加广泛和深入,为企业带来更多的机遇和挑战。
|
3月前
|
数据可视化 数据挖掘 数据处理
R语言高级可视化技巧:使用Plotly与Shiny制作互动图表
【8月更文挑战第30天】通过使用`plotly`和`shiny`,我们可以轻松地创建高度互动的数据可视化图表。这不仅增强了图表的表现力,还提高了用户与数据的交互性,使得数据探索变得更加直观和高效。本文仅介绍了基本的使用方法,`plotly`和`shiny`还提供了更多高级功能和自定义选项,等待你去探索和发现。希望这篇文章能帮助你掌握使用`plotly`和`shiny`制作互动图表的技巧,并在你的数据分析和可视化工作中发挥更大的作用。
|
2月前
R语言基于表格文件的数据绘制具有多个系列的柱状图与直方图
【9月更文挑战第9天】在R语言中,利用`ggplot2`包可绘制多系列柱状图与直方图。首先读取数据文件`data.csv`,加载`ggplot2`包后,使用`ggplot`函数指定轴与填充颜色,并通过`geom_bar`或`geom_histogram`绘图。参数如`stat`, `position`, `alpha`等可根据需要调整,实现不同系列的图表展示。
|
2月前
|
数据采集 数据可视化 数据挖掘
R语言在金融数据分析中的深度应用:探索数据背后的市场智慧
【9月更文挑战第1天】R语言在金融数据分析中展现出了强大的功能和广泛的应用前景。通过丰富的数据处理函数、强大的统计分析功能和优秀的可视化效果,R语言能够帮助金融机构深入挖掘数据价值,洞察市场动态。未来,随着金融数据的不断积累和技术的不断进步,R语言在金融数据分析中的应用将更加广泛和深入。
|
3月前
|
数据采集 机器学习/深度学习 数据挖掘
R语言数据清洗:高效处理缺失值与重复数据的策略
【8月更文挑战第29天】处理缺失值和重复数据是数据清洗中的基础而重要的步骤。在R语言中,我们拥有多种工具和方法来有效地应对这些问题。通过识别、删除或插补缺失值,以及删除重复数据,我们可以提高数据集的质量和可靠性,为后续的数据分析和建模工作打下坚实的基础。 需要注意的是,处理缺失值和重复数据时,我们应根据实际情况和数据特性选择合适的方法,并在处理过程中保持谨慎,以避免引入新的偏差或错误。
|
3月前
|
数据可视化
R语言可视化设计原则:打造吸引力十足的数据可视化
【8月更文挑战第30天】R语言可视化设计是一个综合性的过程,需要综合运用多个设计原则来创作出吸引力十足的作品。通过明确目标、选择合适的图表类型、合理运用色彩与视觉层次、明确标注与引导视线以及引入互动性与动态效果等原则的应用,你可以显著提升你的数据可视化作品的吸引力和实用性。希望本文能为你提供一些有益的启示和帮助。
|
3月前
|
数据采集 存储 数据可视化
R语言时间序列分析:处理与建模时间序列数据的深度探索
【8月更文挑战第31天】R语言作为一款功能强大的数据分析工具,为处理时间序列数据提供了丰富的函数和包。从数据读取、预处理、建模到可视化,R语言都提供了灵活且强大的解决方案。然而,时间序列数据的处理和分析是一个复杂的过程,需要结合具体的应用场景和需求来选择合适的方法和模型。希望本文能为读者在R语言中进行时间序列分析提供一些有益的参考和启示。
|
19天前
|
数据挖掘 C语言 C++
R语言是一种强大的统计分析工具,提供了丰富的函数和包用于时间序列分析。
【10月更文挑战第21天】时间序列分析是一种重要的数据分析方法,广泛应用于经济学、金融学、气象学、生态学等领域。R语言是一种强大的统计分析工具,提供了丰富的函数和包用于时间序列分析。本文将介绍使用R语言进行时间序列分析的基本概念、方法和实例,帮助读者掌握R语言在时间序列分析中的应用。
40 3
|
6月前
|
数据可视化 数据挖掘 API
【R语言实战】聚类分析及可视化
【R语言实战】聚类分析及可视化
|
6月前
|
机器学习/深度学习 数据可视化
R语言逻辑回归logistic模型ROC曲线可视化分析2例:麻醉剂用量影响、汽车购买行为2
R语言逻辑回归logistic模型ROC曲线可视化分析2例:麻醉剂用量影响、汽车购买行为