试图找到一种方法,将来自 R 中 3 个不同 mirt 模型的 IRT 信息图组合在一起

Trying to find a way to combine IRT info plots from 3 different mirt models in R in the same

我希望将所有三个“测试信息函数”行(每个模型一个)合并到同一个图表中。我有一组 1-5 类 Likert 响应的数据集,每行 400 行,每列 8 列(每个项目一个)。我在这些集合上有 运行 三个 IRT 模型,使用 R 中的 mirt 包,并生成了测试信息图。我想将来自三个不同(分级响应)模型的 IRT 测试信息图、三行、在同一个网格中组合起来。

plot(PFgrmodel29, type = 'info', xlim = c(-4, 4), ylim=c(0,85)) 
plot(PFgrmodel43, type = 'info', xlim = c(-4, 4), ylim=c(0,85)) 
plot(PFgrmodel57, type = 'info', xlim = c(-4, 4), ylim=c(0,85))

测试信息图示例:

如何使用 mirt、lattice、ggplot2 或类似工具实现此目的?

你的 mirt 包中的图是一个 lattice 对象,所以你可以尝试使用 latticeExtra,因为你没有提供你的数据集,我在下面使用包中的示例数据集提供了一个示例代码:

library(mirt)
library(latticeExtra)

fulldata <- expand.table(LSAT7)
mod1 <- mirt(fulldata,1,SE=TRUE)
mod2 <- mirt(fulldata,1, itemtype = 'Rasch')
mod3 <- mirt(fulldata,1,itemtype='ideal')

key=list(columns=2, 
        text=list(lab=c("mod1","mod2","mod3")), 
        lines=list(lwd=4, col=c("blue","orange","red"))
)

p1 = plot(mod1,type="info",key=key)
p2 = update(plot(mod2,type="info"),col="orange")
p3 = update(plot(mod3,type="info"),col="red")
p1+p2+p3

太美了!就像一个魅力,除了我需要添加 ylim=c(0,100) 来修改 y 轴(更高)以适应数据。我认为首先放置具有最高信息曲线的模型(如 mod1)会做到这一点,但没有。非常感谢 Stupidwolf 提供代码!!不需要 latticeExtra 包。 此外,我必须保留代码的 "model" 部分才能正常工作:
模型 <- 'F = 1-5 PRIOR = (5, g, norm, -1.5, 3)'
我的代码现在看起来像这样:

library(mirt)
library(latticeExtra)
model <- 'F = 1-5 PRIOR = (5, g, norm, -1.5, 3)' 

mod1 <- mirt(PFdata57,1,itemtype="graded", SE=TRUE)
mod2 <- mirt(PFdata43,1,itemtype="graded", SE=TRUE)
mod3 <- mirt(PFdata29,1,itemtype="graded", SE=TRUE)

key=list(columns=1, 
text=list(lab=c("P57/PF Short form 8a","P43/PF Short form 6a","P29/PF Short form 4a")), 
lines=list(lwd=4, col=c("blue","orange","red")))

     p1 = plot(mod1,type="info",key=key,xlim=c(-4,4),ylim=c(0,85))
     p2 = update(plot(mod2,type="info"),col="orange")
     p3 = update(plot(mod3,type="info"),col="red")
     p1+p2+p3