R中潜在特质模型:重复测量设计下特质分数获取技术咨询
我之前刚好处理过类似的重复测量场景下的潜在特质分数分析,结合你的问题和使用mirt的经历,给你分享下实操思路和替代方案:
一、调整mirt::mixedmirt的参数,明确重复测量结构
你提到不确定mixedmirt是否识别了重复测量设计,核心问题可能是没有明确指定被试水平的随机效应——默认情况下,mixedmirt不会自动识别长格式数据里的重复测量嵌套关系,需要手动通过参数告诉模型:
- 指定随机效应:在函数中加入
random = ~ 1 | ID(假设你的被试ID列名为ID),这样模型会为每个被试拟合随机截距,捕捉重复测量间的个体差异,这才是重复测量设计的核心。示例代码:
# 假设你的数据是长格式,包含ID、Time、以及各个题目列 fit <- mixedmirt( data = your_long_data, model = 1, # 单维度潜在特质 itemtype = "graded", # 根据你的题目类型调整,比如"2PL" random = ~ 1 | ID, # 关键:指定被试为随机分组水平 fixed = ~ Time # 把Time作为固定效应,建模潜在特质随时间的变化 )
验证模型是否识别重复测量:拟合后可以用
VarCorr(fit)查看随机效应的方差成分,如果输出里有ID对应的方差项,说明模型已经考虑了重复测量的相关性。提取潜在特质分数:用
fscores()函数时,记得加上full.scores = TRUE,这样会为每个时间点的观测单独生成分数,匹配你的长格式数据:
latent_scores <- fscores(fit, method = "EAP", full.scores = TRUE)
二、推荐其他适配重复测量设计的R包
如果mirt的使用还是有困惑,这些包在重复测量潜特质分析上也很成熟:
lavaan:适合用结构方程模型(SEM)框架做潜增长模型(Latent Growth Modeling),直接建模潜在特质随时间的变化趋势(比如线性增长)。它支持长格式数据,你可以指定基线潜因子和增长斜率潜因子,同时控制重复测量的误差结构。
TAM:专门针对教育/心理测验的分析包,
tam.mml.mixed函数原生支持多层/重复测量的IRT模型,语法和mixedmirt类似,但在处理复杂嵌套结构时的输出更清晰,提取分数可以用tam.fscores()。brms:基于贝叶斯框架的灵活工具,可以把IRT模型和线性混合模型结合起来,适合需要贝叶斯推断的场景,语法和
lmer接近,能自定义潜在特质随时间的变化模型。
内容的提问来源于stack exchange,提问作者NoviceCoder

