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

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

在数据分析领域,当我们面对一组数据时,通常会有已知的分组情况,比如不同的治疗组、性别组或种族组等点击文末“阅读原文”获取完整代码数据)。

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

模型与实现

数据处理挑战

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

实例分析

数据集介绍

我们有如下数据集:

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

# 展示数据集头部

 

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

数据可视化

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

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


点击标题查阅往期内容

图片

R语言用潜类别混合效应模型(Latent Class Mixed Model ,LCMM)分析老年痴呆年龄数据

outside_default.png

左右滑动查看更多

outside_default.png

01

图片

02

图片

03

图片

04

图片

平滑算法展示

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

图2 loess平滑算法示例

模型构建与分析

用户能够指定希望算法找到的潜在类别(未观测到的组)数量。以下代码用于在数据中寻找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的模型 。

结论

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

a093d4f27847d6327903b139c9e1e4a7.jpeg

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

bb1075735ee657b851c3ea3a06aad7a5.png


资料获取

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

点击文末“阅读原文”

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

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

点击标题查阅往期内容

R语言贝叶斯广义线性混合(多层次/水平/嵌套)模型GLMM、逻辑回归分析教育留级影响因素数据

R语言估计多元标记的潜过程混合效应模型(lcmm)分析心理测试的认知过程

R语言因子实验设计nlme拟合非线性混合模型分析有机农业施氮水平

R语言非线性混合效应 NLME模型(固定效应&随机效应)对抗哮喘药物茶碱动力学研究

R语言用线性混合效应(多水平/层次/嵌套)模型分析声调高低与礼貌态度的关系

R语言LME4混合效应模型研究教师的受欢迎程度

R语言nlme、nlmer、lme4用(非)线性混合模型non-linear mixed model分析藻类数据实例

R语言混合线性模型、多层次模型、回归模型分析学生平均成绩GPA和可视化

R语言线性混合效应模型(固定效应&随机效应)和交互可视化3案例

R语言用lme4多层次(混合效应)广义线性模型(GLM),逻辑回归分析教育留级调查数据

R语言 线性混合效应模型实战案例

R语言混合效应逻辑回归(mixed effects logistic)模型分析肺癌数据

R语言如何用潜类别混合效应模型(LCMM)分析抑郁症状

R语言基于copula的贝叶斯分层混合模型的诊断准确性研究

R语言建立和可视化混合效应模型mixed effect model

R语言LME4混合效应模型研究教师的受欢迎程度

R语言 线性混合效应模型实战案例

R语言用Rshiny探索lme4广义线性混合模型(GLMM)和线性混合模型(LMM)

R语言基于copula的贝叶斯分层混合模型的诊断准确性研究

R语言如何解决线性混合模型中畸形拟合(Singular fit)的问题

基于R语言的lmer混合线性回归模型

R语言用WinBUGS 软件对学术能力测验建立层次(分层)贝叶斯模型

R语言分层线性模型案例

R语言用WinBUGS 软件对学术能力测验(SAT)建立分层模型

使用SAS,Stata,HLM,R,SPSS和Mplus的分层线性模型HLM

R语言用WinBUGS 软件对学术能力测验建立层次(分层)贝叶斯模型

SPSS中的多层(等级)线性模型Multilevel linear models研究整容手术数据

用SPSS估计HLM多层(层次)线性模型模型 

c4e4d09bda3632be462d6d228d75b8fd.jpeg

b1a3632340ec5f6431f6ced0e5683c5b.png

3356faa102b12d9864903d1bc19065b0.png

bd1dd7565379043aafa6bdbc37bf257e.jpeg

eaefa0f04c38b30815e088a3dcce0789.png

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

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

相关文章

mysql 主从配置

MySQL 主从复制是指在 MySQL 数据库系统中&#xff0c;主服务器&#xff08;Master&#xff09;将数据更新操作&#xff08;如 INSERT、UPDATE、DELETE&#xff09;复制到从服务器&#xff08;Slave&#xff09;。主从复制实现了数据的同步复制&#xff0c;使得从服务器可以保持…

DeepSeek为何能爆火

摘要&#xff1a;近年来&#xff0c;DeepSeek作为一款新兴的社交媒体应用&#xff0c;迅速在年轻人群体中走红&#xff0c;引发了广泛关注。本文旨在探讨DeepSeek为何能在短时间内爆火&#xff0c;从而为我国社交媒体的发展提供参考。首先&#xff0c;通过文献分析&#xff0c;…

黑马React保姆级(PPT+笔记)

一、react基础 1.进程 2、优势 封装成一个库&#xff0c;组件化开发更加方便 跨平台主要是react native等可以来写移动端如android&#xff0c;ios等 丰富生态&#xff1a;可以在很多浏览器用 3、市场 4、搭建脚手架 npx create-react-app react-basic npm start后仍然可能…

STM32 CUBE Can调试

STM32 CUBE Can调试 1、CAN配置2、时钟配置3、手动添加4、回调函数5、启动函数和发送函数6、使用方法(采用消息队列来做缓存)7、数据不多在发送函数中获取空邮箱发送&#xff0c;否则循环等待空邮箱 1、CAN配置 2、时钟配置 3、手动添加 需要注意的是STM32CUBE配置的代码需要再…

DeepSeek从入门到精通:全面掌握AI大模型的核心能力

文章目录 一、DeepSeek是什么&#xff1f;性能对齐OpenAI-o1正式版 二、Deepseek可以做什么&#xff1f;能力图谱文本生成自然语言理解与分析编程与代码相关常规绘图 三、如何使用DeepSeek&#xff1f;四、DeepSeek从入门到精通推理模型推理大模型非推理大模型 快思慢想&#x…

【vscode+latex】实现overleaf本地高效编译

overleaf本地高效编译 1. 配置本地latex环境2. vscode插件与配置3. 使用 之前觉得用overleaf在线写论文很方便&#xff0c;特别是有辅助生成latex格式公式的网页&#xff0c;不需要在word上一个一个手打调格式。 然而&#xff0c;最近在写一篇论文的时候&#xff0c;由于这篇论…

Spring AI -使用Spring快速开发ChatGPT应用

前言 Spring在Java生态中一直占据大半江山。最近我发现Spring社区推出了一个Spring AI项目&#xff0c;目前该项目还属于Spring实验性项目&#xff0c;但是我们可以通过该项目&#xff0c;可以非常快速的开发出GPT对话应用。 本篇文章将会对SpringAI进行简单的介绍和使用&#…

XILINX硬件设计-(1)LVDS接口总结

1.LVDS差分信号电路原理 LVDS指的是低压差分信号&#xff0c;是一种电平标准。 差分信号在串行通信中有着非常广泛的应用&#xff0c;典型应用有PCIE中的gen1&#xff0c;gen2&#xff0c;gen3&#xff0c;gen4&#xff0c;gen5&#xff0c;SATA接口&#xff0c;USB接口等。 …

保姆级教程Docker部署Zookeeper模式的Kafka镜像

目录 一、安装Docker及可视化工具 二、Docker部署Zookeeper 三、单节点部署 1、创建挂载目录 2、命令运行容器 3、Compose运行容器 4、查看运行状态 5、验证功能 四、部署可视化工具 1、创建挂载目录 2、Compose运行容器 3、查看运行状态 一、安装Docker及可视化工…

学习笔记:在华为云ModelArts上运行MindSpore扩散模型教程

目录 一、背景与目的 二、环境搭建 三、模型原理学习 1. 类定义与初始化 2. 初始卷积层 3. 时间嵌入模块 4. 下采样模块 5. 中间模块 6. 上采样模块 7. 最终卷积层 8. 前向传播 9. 关键点总结 四、代码实现与运行 五、遇到的问题及解决方法 六、总结与展望 教程来源&#xff1a…

Office/WPS接入DeepSeek等多个AI工具,开启办公新模式!

在现代职场中&#xff0c;Office办公套件已成为工作和学习的必备工具&#xff0c;其功能强大但复杂&#xff0c;熟练掌握需要系统的学习。为了简化操作&#xff0c;使每个人都能轻松使用各种功能&#xff0c;市场上涌现出各类办公插件。这些插件不仅提升了用户体验&#xff0c;…

学习 PostgreSQL 流复制

PostgreSQL 流复制 PostgreSQL数据库异常中止后&#xff0c;数据库刚重启时&#xff0c;会重放停机前最后一个checkpoint点之后的 WAL日志&#xff0c;在把数据库恢复到停机的状态后&#xff0c;自动进入正常的状态&#xff0c;可以接收其他用户的查询和修改。 想象另一个场景…

Python基础-元组tuple的学习

在 Python 中&#xff0c;元组&#xff08;tuple&#xff09;是一种不可变的序列类型&#xff0c;允许存储不同类型的元素。元组非常类似于列表&#xff08;list&#xff09;&#xff0c;但与列表不同的是&#xff0c;元组一旦创建&#xff0c;就不能修改其内容。 1 元组的创建…

Photoshop自定义键盘快捷键

编辑 - 键盘快捷键 CtrlShiftAltK 把画笔工具改成Q , 橡皮擦改成W , 涂抹工具改成E , 增加和减小画笔大小A和S 偏好设置 - 透明度和色域 设置一样颜色 套索工具 可以自定义套选一片区域 Shiftf5 填充 CtrlU 可以改颜色/色相/饱和度 CtrlE 合并图层 CtrlShiftS 另存…

如何在Android Studio中开发一个简单的Android应用?

Android Studio是开发Android应用的官方集成开发环境&#xff08;IDE&#xff09;&#xff0c;它提供了许多强大的功能&#xff0c;使得开发者能够高效地创建Android应用。如果你是Android开发的初学者&#xff0c;本文将引导你如何在Android Studio中开发一个简单的Android应用…

【Qt 常用控件】输入类控件1(QLineEdit和QTextEdit 输入框)

目录 1.QLineEdit 单行输入框 例&#xff1a;输入个人信息&#xff0c;通过按钮提交 例&#xff1a;为输入框设置验证器&#xff0c;检查输入的电话 例&#xff1a;验证两次输入的密码是否一致 例&#xff1a;是否显示密码按钮,toggled信号。 2.QTextEdit多行输入框 、QPl…

Bash (Bourne-Again Shell)、Zsh (Z Shell)

文章目录 1. 历史背景2. 主要区别3. 功能对比自动补全插件和主题路径扩展提示符定制 4. 性能5. 使用场景6. 如何切换 Shell7. 总结 以下是 Bash 和 Zsh 之间的主要区别&#xff0c;列成表格方便对比&#xff1a; 特性BashZsh默认Shell大多数Linux发行版默认ShellmacOS默认She…

Jetbrains IDE http客户端使用教程

简介 JetBrains IDE&#xff08;如IntelliJ IDEA&#xff0c; WebStorm&#xff0c; PhpStorm和PyCharm&#xff09;自带一个内置的HTTP客户端&#xff0c;允许直接从IDE发送HTTP请求&#xff0c;而无需使用第三方工具&#xff0c;如Postman或cURL。 JetBrains IDE 中的 HTTP…

android手机安装deepseek-r1:1.5b

序 本文主要展示一下如何在android手机上安装deepseek-r1:1.5b 步骤 安装termux 到https://termux.dev/cn/index.html去下载 然后执行termux-setup-storage以获取手机存储权限 安装构建依赖 pkg install git cmake golang下载ollama git clone --depth 1 https://gitee.…

U3D支持webgpu阅读

https://docs.unity3d.com/6000.1/Documentation/Manual/WebGPU-features.html 这里看到已经该有的差不多都有了 WOW VFX更是好东西 https://unity.com/cn/features/visual-effect-graph 这玩意儿化简了纯手搓一个特效的流程 如果按原理说就是compute shader刷position&#…