Попытка найти способ объединить информационные графики IRT от 3 разных моделей Mirt в одном и том же - PullRequest
1 голос
/ 13 января 2020

Я хочу объединить все три строки «функции проверки информации» (по одной для каждой модели) в один и тот же график. У меня есть набор данных категории 1-5 ответов Лайкерта в 400 строках в наборах по 8 столбцов (по одному для каждого элемента). Я запустил три модели IRT на этих наборах, используя пакет mirt в R, и подготовил тестовые информационные графики. Я хотел бы объединить информационные графики теста 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))

Пример тестового информационного графика: Example of test info plot

Как мне добиться этого с помощью mirt, lattice, ggplot2 или аналогичного?

Ответы [ 2 ]

1 голос
/ 13 января 2020

Это просто прекрасно! Работает как шарм, за исключением того, что мне нужно было добавить ylim = c (0,100), чтобы изменить ось Y (выше), чтобы соответствовать данным. Я думал, что размещение модели с самой высокой информационной кривой первым (как mod1) сделает это, но нет. Большое спасибо, Stupidwolf, за предоставление кода! Нет необходимости для пакета latticeExtra. ТАКЖЕ мне пришлось сохранить часть кода "модель", чтобы это работало:
модель <- 'F = 1-5 PRIOR = (5, г, норма, -1,5, 3)' </em>
Мой код выглядит следующим образом:

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

...and the resulting 3 in 1 plot looks like this.

1 голос
/ 13 января 2020

Ваши графики из пакета mirt представляют собой объект решетки, поэтому вы можете попробовать использовать 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

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...