You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将IRT(GRM)的EAP因子分数添加至R中原数据框?

解决IRT GRM分析中EAP分数匹配原数据框的问题

为啥会报错?

factor.scores(fit2act, method = "EAP")默认会把相同作答模式的记录合并,只返回独特模式对应的EAP分数,所以结果行数(1884)远少于原数据的13542行,直接赋值自然会触发行数不匹配的错误。

两种解决办法

方法一:手动匹配作答模式与分数

  1. 提取作答模式-分数映射表
    从输出的scores里把独特作答模式和对应的z1分数提出来:
# 把Item1~Item5替换成你实际的5个量表条目列名
score_map <- scores$score.dat[, c("Item1", "Item2", "Item3", "Item4", "Item5", "z1")]
  1. 合并到原数据框
    用merge()函数,以5个量表条目为匹配键,把z1分数对应到每个个体:
# 假设原数据框叫df,列名要和score_map里的一致
df_with_theta <- merge(df, score_map, by = c("Item1", "Item2", "Item3", "Item4", "Item5"), all.x = TRUE)
  • all.x = TRUE保证原数据的每一行都能保留,不会丢失数据
  1. 验证结果
    检查合并后的数据行数和原数据是否一致:
nrow(df_with_theta) == nrow(df) # 正常应该返回TRUE

方法二:直接生成全量个体的EAP分数

如果用的是mirt包,直接给factor.scores()加full.scores = TRUE参数,就能直接得到和原数据行数一致的分数,省去手动匹配的步骤:

scores <- factor.scores(fit2act, method = "EAP", full.scores = TRUE)
# 把z1分数直接加到原数据框里
df$theta <- scores$scores[, "z1"]

内容的提问来源于stack exchange,提问作者Madhuri Ram

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 20:22:35