R语言LCMM多维度潜在类别模型流行病学研究:LCA、MM方法分析纵向数据

news/2025/2/22 16:21:06/文章来源:https://www.cnblogs.com/tecdat/p/18730986

全文代码数据:https://tecdat.cn/?p=39710

原文出处:拓端数据部落公众号 

在数据分析领域,当我们面对一组数据时,通常会有已知的分组情况,比如不同的治疗组、性别组或种族组等。然而,数据中还可能存在未被观测到的分组,例如素食者与非素食者、经常锻炼者与不锻炼者,或者有某种疾病家族史与无家族史的人群(假设这些数据未被收集)。针对这种情况,有相应的分析方法,本文将帮助客户围绕潜在类别分析(Latent Class Analysis,LCA)和混合建模(Mixture Modeling,MM,有时也指有限混合建模Finite MM)展开讨论,并通过实例展示其在纵向数据中的应用。

模型与实现

数据处理挑战

在使用ProcTraj和Mplus环境时,发现处理并非所有人都在完全相同时间点进行观测的数据较为棘手。在设计严格的研究中,所有受试者在基线、6个月和12个月时进行测量,这些软件使用起来较为直接。但在观察性流行病学研究中,人们的诊断年龄不同,有人离开研究(区域)或去世导致数据收集时间不同,或者选择某个时间点分析数据时,受试者可用数据量不同,此时这些软件处理这类数据的方式并不直观。

实例分析

数据集介绍

我们有如下数据集:

 
  1.  
    # 展示数据集结构
  2.  
    > str(dat)
 

# 展示数据集头部

其中,x为自变量(可视为年龄),y为因变量(如胆固醇水平),id用于标识数据来自哪个受试者,rf1rf2是两个风险因素,后续可能会纳入分析,totobs表示每个受试者的观测次数。

数据可视化

数据量较大,有超过2000个受试者,每个受试者最多有80个时间点。首先绘制所有数据,结果如图1所示。

图1 所有数据图
有人可能认为第一个图(左上角)没有展示出有效信息,但实际上可以明显看出右上角部分的数据密度远高于左上角,即更多人最终的值高于起始值。接下来的三个图展示了300个随机选择且至少有5个时间点的受试者数据,以避免数据过于杂乱。右上角是原始数据图,左下角是为每个人拟合的直线,右下角是使用ggplot2软件包中geom_smooth()函数默认设置为每个人拟合的平滑曲线(loess)。进一步去除杂乱数据后,更能突出图右侧与左侧相比数据分布的增加。

平滑算法展示

这里简单直观地展示loess平滑算法的工作原理。图2展示了3个有较多数据的受试者,包括他们的原始(锯齿状)图、平滑曲线以及二者结合,突出该算法如何准确描绘趋势并去除噪声,使我们能轻松识别趋势路径。

图2 loess平滑算法示例

模型构建与分析

用户能够指定希望算法找到的潜在类别(未观测到的组)数量。以下代码用于在数据中寻找2个潜在类别:

 
  1.  
    # 寻找2个潜在类别
  2.  
    result2 <- lcmm(y_variable ~ x
 

这里使用自变量x_variable对因变量y_variable进行建模,允许x_variable因人而异(随机斜率),并使用(线性)x_variable作为混合项中的变量。目前先保持简单,后续会考虑更合适的模型。在输出结果中,从摘要的主要部分可以看到,“x 1”和“x 2”行表明每个类别有不同的斜率,一个略为正,一个略为负,且截距(见“intercept 2”)也有很大差异。
同时,模型还提供了拟合优度统计量。其中,组隶属的后验概率很重要,每个受试者被分配到每个(2个)类别的概率如下:

# 查看后验概率

可以看到一个类别中有62%的受试者,另一个有38%。属于类别1的受试者,其属于类别1的平均后验概率为0.93,属于类别2的平均后验概率为0.09。类似地,属于类别2的受试者,其属于类别2的平均后验概率为0.90,属于类别1的平均后验概率为0.07。通过以下代码进一步查看,最小值接近0.5,说明一些受试者的轨迹可能确实属于任意一个类别,令人欣慰的是两个下四分位数都大于0.80。

# 进一步查看后验概率统计

由于处理的是趋势和轨迹,我们可能希望可视化其对数据的意义。通过以下代码,提取受试者所属类别,并根据类别对数据进行绘图:

结果如图3所示。

图3 2个潜在类别数据图
从图中可以看到预期结果,首先,对一个类别内所有数据进行平滑处理时,线相交,表明类别确实产生了实际影响。如果看到两条平行线,可能意味着每个人都有相同“类型”的轨迹,那么类别可能只是算法为了“找到两个类别”而产生的人为结果。这里特别的是,可以看到类别2中的一组受试者在x达到200时,y值迅速上升,而类别1中的受试者y值通常保持稳定。
尝试3个类别时,结果如图4所示。

图4 3个潜在类别数据图
尝试4个类别时,结果如图5所示。

图5 4个潜在类别数据图
在选择合适的类别数量时,普遍接受的方法是使用贝叶斯信息准则(BIC),而不是赤池信息准则(AIC),BIC值越低,模型越好。对于此数据,4个类别的BIC为32941,3个类别的BIC为32972,2个类别的BIC为33084,这表明4个类别比3个类别拟合得稍好。实际上,5个类别能使BIC更低,但如同所有建模一样,需要人为(或到2035年非常智能的AI机器人)干预。在4个类别中,第4个类别仅包含10%的受试者,在本研究的数据子集中,即25人。需要根据数据情况决定是否合适,这里认为不应低于10%。

模型优化

如前所述,线性效应可能不是对该数据建模的最佳方式。这里选择3个类别,并引入二次项,结果如图6所示。与之前3个潜在类别的图相比,有一些细微差异。

图6 含二次项3个潜在类别数据图
在考虑后验概率和类别成员百分比时,仅含线性项的模型和含二次项的模型有很大差异。似乎二次项在确定每个受试者属于哪个类别时更困难。具体如下:
仅含线性项

含二次项

然而,BIC实际上从32972降至32594,这一差异比改变类别数量时看到的差异大得多。在这种情况下,一方面需要进一步探索模型;另一方面,如果必须做出选择,会倾向于仅基于线性项的模型,因为其在确定受试者所属类别时,后验概率表现优于基于BIC的模型 。

结论


未来的研究可以在此基础上,进一步探索不同的模型设定和参数选择,以更好地适应各种复杂的数据结构和研究问题。例如,可以尝试结合其他变量或考虑不同的混合分布形式,以提高模型的解释能力和预测精度。此外,对于处理纵向数据中缺失值的方法,也可以进行更深入的研究和比较,以确保分析结果的可靠性和稳定性。同时,随着数据量的不断增大和数据维度的增加,如何提高算法的计算效率和可扩展性也是值得关注的问题。

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

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

相关文章

TensorFlow域对抗训练DANN神经网络分析MNIST与Blobs数据集梯度反转层提升目标域适应能力可视化

全文链接:https://tecdat.cn/?p=39656 原文出处:拓端数据部落公众号 本文围绕基于TensorFlow实现的神经网络对抗训练域适应方法展开研究。详细介绍了梯度反转层的原理与实现,通过MNIST和Blobs等数据集进行实验,对比了不同训练方式(仅源域训练、域对抗训练等)下的分类性能…

【专题】2025年我国机器人产业发展形势展望:人形机器人量产及商业化关键挑战报告汇总PDF洞察(附原数据表)

原文链接:https://tecdat.cn/?p=39668 机器人已广泛融入我们生活的方方面面。在工业领域,它们宛如不知疲倦的工匠,精准地完成打磨、焊接等精细工作,极大提升了生产效率和产品质量;在日常生活里,它们是贴心的助手,扫地机器人默默清扫房间,陪伴机器人给予老人孩子温暖陪…

vba主动着色

原来的条件格式效率太低,改为主动方式着色 Sub SetColor() On Error Resume Next Dim hang As Integer 行数 Dim lie As Integer Dim IsBuy As Boolean Dim IsSell As Boolean hang = ActiveSheet.UsedRange.Rows.Count With ActiveSheet …

2025省选模拟13

2025省选模拟13\(T1\) P1025. Easy Problem \(40pts\)部分分\(40pts\)设 \(f_{i,j}\) 表示 \(p_{3j}=i\) 时 \([1,i]\) 对答案的贡献,状态转移方程为 \(f_{i,j}=\max\limits_{k=3(j-1)}^{i-3} \{ f_{k,j-1}+w(k+1,i) \}\) ,其中 \(w(k+1,i)\) 表示 \([k+1,i]\) 的次大值。 设…

installerX还你一个清爽的安装

相信大家都有被手机自带的软件安装器折磨的情况,各种禁止安装,这种验证和识别,不开启安全模式和开了没区别,针对这种情况有没有什么办法绕过呢? 我们可以使用开源软件installerX,这款软件使用拥有这类原生的安装体验,安装速度也不差,并且简洁高效,还可以进行降级安装。…

[Paper Writting] 论文画图指南

目录Motivation方法概念图新老对比类方法简图类实物示意图效果示意图Architecture Motivation 方法概念图 HPT新老对比类 OSXMOTRUniADMulti-modal 3D Human Pose Estimation方法简图类 MoCoconformerBEVFormerDETRDriveVLM实物示意图 emg2pose效果示意图 umetracktransmvshoid…

不到24小时,AOne让全员用上DeepSeek的秘诀是……

DeepSeek引发新一轮AI浪潮,面对企业数字化智能升级与数据安全红线的急迫需求,IT负责人的压力山大!如何在24小时内实现全员AI落地,同时为后续安全部署铺平道路?Step1:一键开启全员智能时代 基于国产大模型领军者DeepSeek(671B满血版&70B版),天翼云AOne搭载智能引擎…

Unity Addresable打包总结第一弹

前言 使用AB包很久了,一直没有机会做一个系统的总结,趁现在准备离职,时间空闲比较多,将项目内的Addresable使用经验大致的分析总结一下,以作日后备用。 使用介绍 下方的引用链接中,发哥已经总结的很详细了,但我这里还是稍微介绍一下基本流程。 基本流程在Package Manage…

AutoCAD 逆向工程中 Shx 字体文件解析

数据格式相关的文章代码实现 https://blog.csdn.net/qq_29830577/article/details/78604983#####愿你一寸一寸地攻城略地,一点一点地焕然一新#####

golang学习笔记——gorm

gen是gorm官方推出的一个GORM代码生成工具 官方文档:https://gorm.io/zh_CN/gen/ 1.使用gen框架生成model和dao 安装gorm gengo get -u gorm.io/gen假设有如下用户表CREATE TABLE user (`id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT 主键,`username` varchar(1…

原神

oj.hailiangedu.com/file/22/dragon.gif