R软件用潜在类别混合模型LCM分析老年人抑郁数据轨迹多变量建模研究

全文链接: tecdat.cn/?p=40283

潜在类别混合模型假设总体具有异质性,由 GG 个潜在类别组成。在多变量的情况下,潜在类别是根据 KK 个纵向结果来定义的,从而形成 GG 个组,每个组的特征由 KK 个轨迹均值轮廓集表示点击文末“阅读原文”获取完整代码、数据、文档)。

多变量潜在类别混合模型

潜在类别成员身份由一个离散随机变量 cici 定义,如果个体 ii 属于潜在类别 gg(g=1,…,Gg=1,…,G),则 cici 等于 gg。变量 cici 是潜在的,其概率使用多项逻辑模型根据协变量 XciXci 进行描述:

其中,ξ0gξ0g 是类别 gg 的截距,ξ1gξ1g 是与时间无关的协变量 XciXci 的 q1q1 维向量相关的类别特定参数的 q1q1 维向量。为了可识别性,ξ0G=0ξ0G=0 且 ξ1G=0ξ1G=0。当没有协变量预测潜在类别成员身份时,该模型简化为类别特定概率。
对于 k=1,…,Kk=1,…,K 的每个 YkYk 的轨迹是在潜在类别条件下定义的。对于高斯结果,在类别 gg 的条件下,模型是一个线性混合模型,对于个体 ii 在时刻 jj 定义为:

其中,X2kijX2kij、X3kijX3kij 和 ZkijZkij 分别是与类别间公共固定效应 βkβk、类别特定固定效应 γkgγkg 以及个体随机效应 bki|ci=gbki|ci=g(称为 bkigbkig,其分布现在是类别特定的)相关的协变量向量。X2kX2k 和 X3kX3k 不能有共同的变量。
随机效应和误差测量在不同结果之间不相关。因此,在潜在类别条件下,KK 个结果是独立的。
对于曲线结果,我们使用由以下公式定义的潜在过程模型:

其中,HkHk 是由 ηkηk 参数化的链接函数。H−1H−1 可以属于线性函数族、重新缩放的 Beta 累积分布函数或二次 I - 样条函数族。然而,需要注意的是,mpjlcmm 函数目前仅支持连续结果,因此 IRT 模型暂时不可用。

后验分类

在涉及潜在类别的模型中,可以对每个潜在类别中的个体进行后验分类。它基于类成员概率的后验计算,用于描述个体的分类情况以及评估模型的拟合优度。
后验类成员概率使用贝叶斯定理计算,即给定所收集的全部信息,个体属于某个潜在类别的概率。在纵向模型中,对于个体 ii 和潜在类别 gg,其定义为:

其中,θ^Gθ^G 是在 GG 个潜在类别模型中估计的参数向量。

双变量示例

在这个示例中,我们同时研究了一组老年人(入组时年龄在 65 岁及以上)在长达 15 年的随访期间,认知标志物(MMSE)和抑郁量表(CESD)的轨迹。这两个结果都具有偏态分布,因此我们将使用具有 I - 样条链接函数的潜在过程模型。

考虑的模型

我们考虑不进行进一步调整的、与年龄相关的类别特定线性轨迹。对于类别 gg、个体 ii 和重复测量 jj,模型如下:

其中,ukig∼N(0,Bkg)ukig∼N(0,Bkg) 且 ϵij∼N(0,σ2)ϵij∼N(0,σ2)。

估计单类别模型(G=1G=1)

为了估计多变量模型,我们首先使用适当的函数定义每个单变量子模型。由于这里使用的是潜在过程模型,我们使用 lcmm 函数。
我们从 MMSE 开始:

# 定义 MMSE 的单变量模型
mmse_model <- lcmm(MMSE ~ I((age - 65) / 10), random = ~I((age - 65) / 10), subject = 'ID', data = paquid,
 link = "5 - quant - splines", verbose = FALSE)
# 查看模型摘要
summary(mmse_model)

 

 

在摘要中,我们发现一个 I - 样条参数非常小。为了避免在更复杂的模型中出现数值问题,我们将这个参数固定为零:

# 获取初始参数
init_params <- mmse_model$best
# 将第 7 个参数固定为 0
init_params[7] <- 0
# 重新定义 MMSE 模型
mmse_model_fixed <- lcmm(MMSE ~ I((age - 65) / 10), random = ~I((age - 65) / 10), subject = 'ID', data = paquid,
 link = "5 - quant - splines", verbose = FALSE, B = init_params, posfix = 7)
# 查看重新定义后的模型摘要
summary(mmse_model_fixed)

 

 

我们对 CESD 使用相同的规范。不过,需要注意的是,不同结果的规范可能会有所不同。

基于这两个子模型,我们可以估计多变量模型

由于两个结果在潜在类别条件下是独立的,并且我们只有一个类别,因此多变量模型等同于两个分离的子模型。我们可以检查估计值是否相同:

# 比较多变量模型和单变量模型的参数估计
cbind(multi_model_1$best, c(mmse_model_fixed$best, cesd_model$best))

估计多类别模型(G>1G>1)

对于多个类别,我们同样从单变量模型开始,然后估计多变量模型。这里不需要对单变量模型进行优化,因此我们使用 maxiter = 0 选项。我们还像之前一样将一个 I - 样条参数固定为零。

上述模型没有指定初始值,这些值将从单变量模型中提取。或者,我们可以使用单类别模型作为起点,或者进行网格搜索。

# 进行网格搜索估计双类别多变量模型
multi_m2_c <- gridsearch

我们接下来估计具有 3、4 和 5 个类别的相同模型:

 

我们为每个潜在类别数量保留最佳模型,并绘制一些用于选择最佳类别数量的统计标准:

在这个应用中,我们将选择 2 类别模型,因为它具有更好的 BIC。


点击标题查阅往期内容

图片

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

outside_default.png

左右滑动查看更多

outside_default.png

01

图片

02

图片

03

图片

04

图片

我们可以使用桑基图来表示类别和个体流动之间的关系。目前,该包中还没有自动完成此操作的功能。

# 合并 5 个模型的分类结果
class_1_2 <- merge(multi_model_1$pprob[, 1:2], multi_model_2_b$pprob[, 1:2], by = "ID")
colnames(class_1_2) <- c("ID", "mm1", "mm2_b")
class_1_2_3 <- merge(class_

二分类模型的描述
模型总结

通过上述代码,得到二分类多变量模型的各项统计信息,包括数据集信息、模型收敛情况、拟合优度统计量以及各参数的估计值和检验结果等。从这些结果中可以了解到模型对数据的拟合效果,以及不同类别下各变量的固定效应和随机效应等情况。

更新单变量模型

函数返回用于指定模型的KK个单变量模型,并更新其输出。模型参数及其估计方差会被多变量框架中优化后的结果所替代。

# 更新二分类多变量模型对应的单变量模型
updated_models <- update(multi_model_2_b)
mmse_bivariate <- updated_models[[1]]
cesd_bivariate <- updated_models[[2]]
轨迹预测

只要数据框中包含模型指定的所有协变量,就可以为数据框中的任何数据计算类别特定的预测值。在接下来的代码中,通过生成一个年龄值在65到95之间的向量来创建这样一个数据框。使用predictY计算预测值,并使用相关的plot函数进行绘图。

# 绘制预测轨迹图
par(mfrow = c(1, 2))
plot(mmse_pred, lwd = 3, ylab = "MMSE",", legend.loc eft")
plot(cesd_pred, lwd = 3, ylab = "Cend = NULL)


若要逐点添加置信区间,可以在调用predictY时使用draws = TRUE选项。

模型评估
残差图

通过观察残差图,可以评估模型对数据的拟合程度。若残差呈现随机分布,则说明模型对数据的拟合效果较好;若残差存在明显的趋势或规律,则可能暗示模型存在改进的空间。

预测值与观测值对比图

为了评估所选模型的拟合效果,我们同时绘制每个潜在类别中观测值和预测值的对比图。

从对比图中,可以直观地看出模型预测值与实际观测值的接近程度,进一步判断模型的拟合优度。

分类

 

结果显示,“Class 1”由107名个体组成(占比21.4%),而393名个体属于“Class 2” 。同时,模型具有良好的区分能力,“Class 1”的平均后验概率为0.8280,“Class 2”的平均后验概率为0.8926。并且,有相当比例的个体后验概率高于0.7。

多变量联合模型

函数还允许使用比例风险模型对事件发生时间结果进行建模,并且可能涉及竞争风险的情况。

通过上述代码,实现了在潜在类别混合模型框架下,综合考虑纵向数据和事件发生时间数据的建模,进一步拓展了模型的应用范围,能够更全面地分析相关数据中的复杂关系。

35d949184ca1fc6ba80234453e05d3bc.jpeg

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

55eea68d39c42f6609d7c60edef06efe.png


资料获取

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

点击文末“阅读原文”

获取完整代码、数据、文档。

本文选自《R软件用潜在类别混合模型LCM分析老年人抑郁数据轨迹多变量建模研究》。

点击标题查阅往期内容

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多层(层次)线性模型模型

b6117755bacc88e8e1ccca3dbca889f4.jpeg

f75f8c2cfe246e0bbcc88bd62f1186d6.png

9edb583e743c3923162fd507aa56efe9.png

26ccfd433f6492747661ffdb7a27d8cc.jpeg

e9734716b70d08cc8c4b16b18966d716.png

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Rust中级教程】1.11. 生命周期(进阶) Pt.1:回顾、借用检查器、泛型生命周期

喜欢的话别忘了点赞、收藏加关注哦&#xff08;加关注即可阅读全文&#xff09;&#xff0c;对接下来的教程有兴趣的可以关注专栏。谢谢喵&#xff01;(&#xff65;ω&#xff65;) 这篇文章在Rust初级教程的基础上对生命周期这一概念进行了补充&#xff0c;建议先看【Rust自…

【DeepSeek服务器部署全攻略】Linux服务器部署DeepSeek R1模型、实现API调用、搭建Web页面以及专属知识库

DeepSeek R1模型的Linux服务器搭建、API访问及Web页面搭建 1&#xff0c;引言2&#xff0c;安装Ollama工具3&#xff0c;下载DeepSeek R1 模型4&#xff0c;DeepSeek命令行对话5&#xff0c;DeepSeek API接口远程调用6&#xff0c;DeepSeek结合Web-ui实现图形化界面远程访问6.1…

【免费软件分享】Typor1.9.5-x64-CN免费版

到处找pojie软件的朋友&#xff0c;这里给大家提供一个版本&#xff0c;之前也是废了老大的劲才找到&#xff0c;这里分享给大家&#xff0c;希望帮助到需要的朋友&#xff01; Typor1.9.5-x64-CN&#xff1a; 我用夸克网盘分享了「Typor1.9.5-x64-CN.7z」&#xff0c;点击链接…

Python天梯赛刷题-五分题(上)

蓝桥杯题刷的好累&#xff0c;感觉零帧起手、以题带学真的会很吃力&#xff0c;打算重新刷一点天梯的题目巩固一下&#xff0c;我本人在算法非常不精通的情况下&#xff0c;自认为天梯的L1的题是会相对容易一些的&#xff0c;可能有一些没有脑子光靠力气的“硬推”hhhh。 从头…

Python编程之数据分组

有哪些方式可以进行数据分组利用Pandas库进行分组使用itertools库的groupby分组操作构建Python字典方式实现(小规模数据,不适用数量特别大的情况,不需要依赖其它python库)利用NumPy的groupby函数分组操作利用Python的Dask库提供的函数进行分组下面看一个如何去实现坐标数据…

激光雷达YDLIDAR X2 SDK安装

激光雷达YDLIDAR X2 SDK安装 陈拓 2024/12/15-2024/12/19 1. 简介 YDLIDAR X2官方网址https://ydlidar.cn/index.html‌YDLIDAR X2 YDLIDAR X2是一款高性能的激光雷达传感器&#xff0c;具有以下主要特点和规格参数‌&#xff1a; ‌测距频率‌&#xff1a;3000Hz ‌扫描频…

大数据组件(四)快速入门实时数据湖存储系统Apache Paimon(2)

大数据组件(四)快速入门实时数据湖存储系统Apache Paimon(2) 我们上次已经了解了Paimon的下载及安装&#xff0c;并且了解了主键表的引擎以及changelog-producer的含义 大数据组件(四)快速入门实时数据湖存储系统Apache Paimon(1) 今天&#xff0c;我们继续快速了解下最近比…

⭐ Unity 横向滑动列表 首尾相连 轮转图

效果如下&#xff1a; 场景挂载&#xff1a; 代码部分&#xff1a; using DG.Tweening; using System; using System.Collections; using System.Collections.Generic; using System.Drawing.Printing; using UnityEngine; using UnityEngine.EventSystems; using UnityEngine…

大白话实战Sentinel

Sentinel是SpringCloudAlibaba提供的用来做服务保护的框架,而服务保护的常见手段就是限流和熔断降级。在大型分布式系统里面,由于微服务众多,所以服务之间的稳定性需要做特别关注,Sentinel的核心包就提供了从多个维度去保护服务稳定的策略,而且这些保护策略都可以连接上Se…

【C语言】C语言 哈夫曼编码传输(源码+数据文件)【独一无二】

&#x1f449;博__主&#x1f448;&#xff1a;米码收割机 &#x1f449;技__能&#x1f448;&#xff1a;C/Python语言 &#x1f449;专__注&#x1f448;&#xff1a;专注主流机器人、人工智能等相关领域的开发、测试技术。 C语言 哈夫曼编码传输&#xff08;源码数据文件&am…

用命令模式设计一个JSBridge用于JavaScript与Android交互通信

用命令模式设计一个JSBridge用于JavaScript与Android交互通信 在开发APP的过程中&#xff0c;通常会遇到Android需要与H5页面互相传递数据的情况&#xff0c;而Android与H5交互的容器就是WebView。 因此要想设计一个高可用的 J S B r i d g e JSBridge JSBridge&#xff0c;不…

3月营销日历:开启春日盛宴,绽放生活魅力

关键营销节点∶惊蛰、女生节、妇女节、 植树节、315消费者权益日、春分 营销关键词 养生、女生魅力、感恩女性、环保、品质 01.重点关注品类 春季服饰&#xff1a;如轻薄外套、春装等&#xff0c;适合惊蛰后的市场需求&#xff1b; 美妆护肤&#xff1a;妇女节期间&#xf…

GPT-SoVITS更新V3 win整合包

GPT-SoVITS 是由社区开发者联合打造的开源语音生成框架&#xff0c;其创新性地融合了GPT语言模型与SoVITS&#xff08;Singing Voice Inference and Timbre Synthesis&#xff09;语音合成技术&#xff0c;实现了仅需5秒语音样本即可生成高保真目标音色的突破。该项目凭借其开箱…

AI芯片:科技变革的核心驱动力

近年来&#xff0c;人工智能&#xff08;AI&#xff09;的飞速发展对众多行业产生了深远影响&#xff0c;芯片领域也不例外。AI在芯片设计、制造及应用等方面带来了革新性的改变&#xff0c;成为推动芯片行业发展的关键力量。 AI助力芯片设计效率飞升 传统芯片设计极为复杂&am…

【phpstudy】关于实现两个不同版本的mysql并存。

1.首先是先安装好两个版本的mysql mysql5.7用默认的就行 2.更改mysql8.0的配置&#xff0c;如图 3.找到mysql8.0的路径&#xff0c;看着个里面就可以知道了 4.进入后&#xff0c;可以把data里面的数据情况&#xff0c;就是把data文件夹里的东西删除&#xff08;我是先备份好了一…

Coze扣子新功能详解

今晚(2025-01-24)扣子再次进行更新 主要更新内容&#xff1a; 搭建小程序和 H5 用户界面时&#xff0c;支持使用音频组件播放音频内容 数据库操作体验提升 界面优化&#xff1a;对数据库详情界面进行了重新设计&#xff0c;并将工作流运行数据库的测试数据位置从原工作流底…

Pytorch深度学习教程_3_初识pytorch

欢迎来到《PyTorch深度学习教程》系列的第三篇&#xff01;在前面的两篇中&#xff0c;我们已经介绍了Python及numpy的基本使用。今天&#xff0c;我们将深入探索PyTorch的核心功能&#xff0c;帮助你更好地理解和使用这个强大的深度学习框架。 欢迎订阅专栏&#xff1a; 深度…

第4章 信息系统架构(二)

4.2 系统架构 信息系统架构是一种体系结构&#xff0c;它反映了一个组织信息系统的各个组成部分之间的关系&#xff0c;以及信息系统与相关业务、信息系统与相关技术之间的关系。 4.2.1 架构定义 对于大规模的复杂系统来说&#xff0c;对总体的系统结构设计比起对计算算法和…

剑指 Offer II 024. 反转链表

comments: true edit_url: https://github.com/doocs/leetcode/edit/main/lcof2/%E5%89%91%E6%8C%87%20Offer%20II%20024.%20%E5%8F%8D%E8%BD%AC%E9%93%BE%E8%A1%A8/README.md 剑指 Offer II 024. 反转链表 题目描述 给定单链表的头节点 head &#xff0c;请反转链表&#xff…

Python----数据结构(单链表:节点,是否为空,长度,遍历,添加,删除,查找)

一、链表 链表是一种线性数据结构&#xff0c;由一系列按特定顺序排列的节点组成&#xff0c;这些节点通过指针相互连接。每个节点包含两部分&#xff1a;元素和指向下一个节点的指针。其中&#xff0c;最简单的形式是单向链表&#xff0c;每个节点含有一个信息域和一个指针域&…