当前位置: 首页 > news >正文

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

相关文章:

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

全文代码数据&#xff1a;https://tecdat.cn/?p39710 在数据分析领域&#xff0c;当我们面对一组数据时&#xff0c;通常会有已知的分组情况&#xff0c;比如不同的治疗组、性别组或种族组等&#xff08;点击文末“阅读原文”获取完整代码数据&#xff09;。 然而&#xff0c;…...

2025 年前端开发现状分析:卷疯了还是卷麻了?

一、前端现状&#xff1a;框架狂飙&#xff0c;开发者崩溃 如果你是个前端开发者&#xff0c;那么你大概率经历过这些场景&#xff1a; 早上打开 CSDN&#xff08;或者掘金&#xff0c;随便&#xff09;&#xff0c;发现又有新框架发布了&#xff0c;名字可能是 VueXNext.js 之…...

RDK新一代模型转换可视化工具!!!

作者&#xff1a;SkyXZ CSDN&#xff1a;SkyXZ&#xff5e;-CSDN博客 博客园&#xff1a;SkyXZ - 博客园 之前在使用的RDK X3的时候&#xff0c;吴诺老师wunuo发布了新一代量化转换工具链使用教程&#xff0c;这个工具真的非常的方便&#xff0c;能非常快速的完成X3上模型的量化…...

JVM春招快速学习指南

1.说在前面 在Java相关岗位的春/秋招面试过程中&#xff0c;JVM的学习是必不可少的。本文主要是通过《深入理解Java虚拟机》第三版来介绍JVM的学习路线和方法&#xff0c;并对没有过JVM基础的给出阅读和学习建议&#xff0c;尽可能更加快速高效的进行JVM的学习与秋招面试的备战…...

C#中的序列化和反序列化

序列化是指将对象转换为可存储或传输的格式&#xff0c;例如将对象转换为JSON字符串或字节流。反序列化则是将存储或传输的数据转换回对象的过程。这两个过程在数据持久化、数据交换以及与外部系统的通信中非常常见 把对象转换成josn字符串格式 这个过程就是序列化 josn字符…...

xcode常见设置

1、如何使用cmake构建archs为$(ARCHS_STANDARD)的xcode项目 在cmake中使用如下指令 set(CMAKE_OSX_ARCHITECTURES "$(ARCHS_STANDARD)") cmake - nomadli的博客 | nomadli Blog...

PG高可用学习@2

目录标题 一、Patroni 支持在同步复制下备库故障时自动降级为异步复制?参考依据1. PostgreSQL 官方文档2. Patroni 官方文档3. 高可用和容错设计原则 二、patroni 是如何检测备库故障的&#xff1f;1. 心跳机制2. 监控数据库进程状态3. 查询系统视图4. 复制延迟监测5. 网络连接…...

centos 8和centos 9 stream x64的区别

以下是 CentOS 8 与 CentOS Stream 9 的主要区别&#xff0c;从技术架构、更新策略到适用场景等维度进行对比&#xff1a; AI产品独立开发实战营 联系我了解 1. 定位与更新策略 特性CentOS 8CentOS Stream 9定位原为 RHEL 8 的免费稳定复刻版RHEL 9 的上游开发分支&#xff…...

C++基础学习记录—类

1、面向对象的三大特征&#xff1a;封装、继承、多态 2、类和对象 2.1、类的概念 类&#xff1a;类是一个抽象的概念&#xff0c;用于描述同一类对象的特点。 对象&#xff1a;根据类的概念所创造的实体。 类中包含属性和行为 属性&#xff1a;描述类的数据&#xff0c;一…...

云原生时代的后端开发:架构、工具与最佳实践

随着云计算的迅猛发展&#xff0c;云原生&#xff08;Cloud Native&#xff09;逐渐成为后端开发的主流趋势。云原生后端不仅能够提高应用的灵活性和可扩展性&#xff0c;还能显著优化开发和运维流程。本文将围绕云原生后端的关键概念、当前热门技术及最佳实践&#xff0c;帮助…...

ARM Cortex-M3/M4 权威指南 笔记【一】技术综述

一、Cortex-M3/M4 处理器的一般信息 1.1 处理器类型 ARM Cortex-M 为 32 位 RISC&#xff08;精简指令集&#xff09;处理器&#xff0c;其具有&#xff1a; 32位寄存器32位内部数据通路32位总线接口 除了 32 位数据&#xff0c;Cortex-M 处理器&#xff08;以及其他任何 A…...

12.项目结构

后端结构 ruoyi-admin 项目启动的入口 提供了两种启动方式 1.RuoYiApplication基于springboot,内置tomcat,直接运行。 2.RuoYiServletInitializer将springboot项目打成一个war包,用外置的servlet容器来运行。 通用功能的controller 后台登录相关的、权限控制相关的、数据字…...

保研考研机试攻略:python笔记(4)

🐨🐨🐨15各类查找 🐼🐼二分法 在我们写程序之前,我们要定义好边界,主要是考虑区间边界的闭开问题。 🐶1、左闭右闭 # 左闭右闭 def search(li, target): h = len(li) - 1l = 0#因为都是闭区间,h和l都可以取到并且相等while h >= l:mid = l + (h - l) // 2…...

高阶C语言|枚举与联合

&#x1f4ac; 欢迎讨论&#xff1a;在阅读过程中有任何疑问&#xff0c;欢迎在评论区留言&#xff0c;我们一起交流学习&#xff01; &#x1f44d; 点赞、收藏与分享&#xff1a;如果你觉得这篇文章对你有帮助&#xff0c;记得点赞、收藏&#xff0c;并分享给更多对C语言感兴…...

【天梯赛】L1-104 九宫格(C++)

易忽略的错误&#xff1a;开始习惯性地看到n就以为是n*n数组了&#xff0c;实际上应该是9*9的固定大小数组&#xff0c;查了半天没查出来 题面 L1-104 九宫格 - 团体程序设计天梯赛-练习集 代码实现 #include<bits/stdc.h> using namespace std; //易错&#xff1a;开…...

现代C++多线程基础 -忆苦思甜pthread_mutex

c 老古董 文章目录 c 老古董pthread_mutex概念常用apipthread_mutex_initpthread_mutex_lockpthread_mutex_trylockpthread_mutex_unlockpthread_mutex_destroy 案例 pthread_mutex 概念 互斥锁 mutex是一种简单的加锁的方法来控制对共享资源的访问&#xff0c;mutex只有两种…...

soular基础教程-使用指南

soular是TikLab DevOps工具链的统一帐号中心&#xff0c;今天来介绍如何使用 soular 配置你的组织、工作台&#xff0c;快速入门上手。 &#xfeff; 1. 账号管理 可以对账号信息进行多方面管理&#xff0c;包括分配不同的部门、用户组等&#xff0c;从而确保账号权限和职责…...

网络安全网格架构(CSMA) 网络安全框架csf

CSRF:Cross Site Request Forgy&#xff08;跨站请求伪造&#xff09; 用户打开另外一个网站&#xff0c;可以对本网站进行操作或攻击。容易产生传播蠕虫。 CSRF攻击原理&#xff1a; 1、用户先登录A网站 2、A网站确认身份返回用户信息 3、B网站冒充用户信息而不是直接获取用…...

基于DeepSeek API和VSCode的自动化网页生成流程

1.创建API key 访问官网DeepSeek &#xff0c;点击API开放平台。 在开放平台界面左侧点击API keys&#xff0c;进入API keys管理界面&#xff0c;点击创建API key按钮创建API key&#xff0c;名称自定义。 2.下载并安装配置编辑器VSCode 官网Visual Studio Code - Code Editing…...

【AI时代】Page Assist - 本地 AI 模型的 Web UI (谷歌浏览器) 本地DeepSeek启用联网功能

Page Assist - 本地 AI 模型的 Web UI 一、部署本地模型 参考教程&#xff1a;https://blog.csdn.net/Bjxhub/article/details/145536134二、安装插件 Page Assist 浏览器谷歌商店搜索 Page Assist &#xff0c;安装该插件。 注意&#xff1a;需要一点科学的魔法。 三、使用…...

synchronized 学习

学习源&#xff1a; https://www.bilibili.com/video/BV1aJ411V763?spm_id_from333.788.videopod.episodes&vd_source32e1c41a9370911ab06d12fbc36c4ebc 1.应用场景 不超卖&#xff0c;也要考虑性能问题&#xff08;场景&#xff09; 2.常见面试问题&#xff1a; sync出…...

React hook之useRef

React useRef 详解 useRef 是 React 提供的一个 Hook&#xff0c;用于在函数组件中创建可变的引用对象。它在 React 开发中有多种重要用途&#xff0c;下面我将全面详细地介绍它的特性和用法。 基本概念 1. 创建 ref const refContainer useRef(initialValue);initialValu…...

根据万维钢·精英日课6的内容,使用AI(2025)可以参考以下方法:

根据万维钢精英日课6的内容&#xff0c;使用AI&#xff08;2025&#xff09;可以参考以下方法&#xff1a; 四个洞见 模型已经比人聪明&#xff1a;以ChatGPT o3为代表的AI非常强大&#xff0c;能运用高级理论解释道理、引用最新学术论文&#xff0c;生成对顶尖科学家都有用的…...

什么?连接服务器也能可视化显示界面?:基于X11 Forwarding + CentOS + MobaXterm实战指南

文章目录 什么是X11?环境准备实战步骤1️⃣ 服务器端配置(CentOS)2️⃣ 客户端配置(MobaXterm)3️⃣ 验证X11 Forwarding4️⃣ 运行自定义GUI程序(Python示例)5️⃣ 成功效果![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/55aefaea8a9f477e86d065227851fe3d.pn…...

GC1808高性能24位立体声音频ADC芯片解析

1. 芯片概述 GC1808是一款24位立体声音频模数转换器&#xff08;ADC&#xff09;&#xff0c;支持8kHz~96kHz采样率&#xff0c;集成Δ-Σ调制器、数字抗混叠滤波器和高通滤波器&#xff0c;适用于高保真音频采集场景。 2. 核心特性 高精度&#xff1a;24位分辨率&#xff0c…...

AGain DB和倍数增益的关系

我在设置一款索尼CMOS芯片时&#xff0c;Again增益0db变化为6DB&#xff0c;画面的变化只有2倍DN的增益&#xff0c;比如10变为20。 这与dB和线性增益的关系以及传感器处理流程有关。以下是具体原因分析&#xff1a; 1. dB与线性增益的换算关系 6dB对应的理论线性增益应为&…...

vulnyx Blogger writeup

信息收集 arp-scan nmap 获取userFlag 上web看看 一个默认的页面&#xff0c;gobuster扫一下目录 可以看到扫出的目录中得到了一个有价值的目录/wordpress&#xff0c;说明目标所使用的cms是wordpress&#xff0c;访问http://192.168.43.213/wordpress/然后查看源码能看到 这…...

计算机基础知识解析:从应用到架构的全面拆解

目录 前言 1、 计算机的应用领域&#xff1a;无处不在的数字助手 2、 计算机的进化史&#xff1a;从算盘到量子计算 3、计算机的分类&#xff1a;不止 “台式机和笔记本” 4、计算机的组件&#xff1a;硬件与软件的协同 4.1 硬件&#xff1a;五大核心部件 4.2 软件&#…...

在 Spring Boot 中使用 JSP

jsp&#xff1f; 好多年没用了。重新整一下 还费了点时间&#xff0c;记录一下。 项目结构&#xff1a; pom: <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://ww…...

LangFlow技术架构分析

&#x1f527; LangFlow 的可视化技术栈 前端节点编辑器 底层框架&#xff1a;基于 &#xff08;一个现代化的 React 节点绘图库&#xff09; 功能&#xff1a; 拖拽式构建 LangGraph 状态机 实时连线定义节点依赖关系 可视化调试循环和分支逻辑 与 LangGraph 的深…...