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

如何在同一图中绘制两个IRT分级反应模型的边际可靠性曲线?

合并两个IRT分级反应模型边际可靠性图的方法

问题描述

我使用mirt包为两个不同的IRT分级反应模型(IRT Graded Response Models)估计了边际可靠性,希望将它们可视化在同一图中。当前使用以下代码可分别生成两张图:

# 多分类模型ModF1的边际可靠性
MreliabF1 <- marginal_rxx(POLY.MODf1)
plot(POLY.MODf1, type = 'rxx', theta_lim = c(-3, 3), main = "")
# 模型ModF2的边际可靠性
MreliabF2 <- marginal_rxx(POLY.MODf2)
plot(POLY.MODf2, type = 'rxx', theta_lim = c(-3, 3), main = "")

请问如何将这两张图合并?ExtraLattice包是否适用?


解决方法

不需要依赖ExtraLattice包,用基础R绘图系统或ggplot2就能轻松实现合并,以下是两种可行方案:

方案1:基础R绘图系统

先从marginal_rxx的结果中提取潜在特质(theta)和对应的边际可靠性值,再手动绘制双折线图:

# 提取两个模型的可靠性数据并整理成数据框
rel_df1 <- data.frame(theta = MreliabF1$theta, rxx = MreliabF1$rxx, model = "ModF1")
rel_df2 <- data.frame(theta = MreliabF2$theta, rxx = MreliabF2$rxx, model = "ModF2")

# 初始化绘图,先绘制ModF1的曲线
plot(rel_df1$theta, rel_df1$rxx, type = "l", lwd = 2, col = "#1f77b4",
     xlim = c(-3, 3), ylim = c(0, 1), # 边际可靠性取值范围通常为0-1
     xlab = "潜在特质(theta)", ylab = "边际可靠性", 
     main = "两个IRT模型的边际可靠性对比")

# 添加ModF2的曲线
lines(rel_df2$theta, rel_df2$rxx, type = "l", lwd = 2, col = "#ff7f0e")

# 添加图例区分两个模型
legend("bottomright", legend = c("ModF1", "ModF2"), 
       col = c("#1f77b4", "#ff7f0e"), lwd = 2, bty = "n")

方案2:ggplot2绘图(更美观灵活)

如果习惯用ggplot2,可以先合并两个模型的数据集,再用分色折线图展示:

library(ggplot2)

# 合并两个模型的可靠性数据
all_rel_df <- rbind(rel_df1, rel_df2)

# 绘制对比图
ggplot(all_rel_df, aes(x = theta, y = rxx, color = model)) +
  geom_line(linewidth = 1.2) +
  xlim(-3, 3) +
  ylim(0, 1) +
  labs(x = "潜在特质(theta)", y = "边际可靠性", 
       title = "两个IRT模型的边际可靠性对比") +
  theme_minimal() +
  scale_color_manual(values = c("ModF1" = "#1f77b4", "ModF2" = "#ff7f0e"))

关于ExtraLattice包的适用性

ExtraLattice是Lattice包的扩展工具,主要用于增强Lattice绘图的样式和功能,但完全没必要用它来实现这个需求——上面两种方法更直接、轻量,不需要额外安装扩展包就能完成合并可视化。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 02:38:15