如何在同一图中绘制两个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
相关产品推荐
相关产品推荐

