Closed patriciamar closed 7 years ago
Přikládám možnou úpravu pomocí mirt
balíčku, která celou záložku IRT models výrazně zrychlí. mirt
poskytuje podobné obrázky jako ltm
, navíc má však dobře naprogramované (rychlé a obecné) funkce k vyhodnocení modelů atd. - viz zdroják
library(difNLR)
library(mirt)
data(GMAT)
data <- GMAT[, 1:20]
### IRT models
###### Rasch model model = 1, itemtype = "Rasch", constrain = NULL
###### 1PL with the fixed discrimination
###### model <- 'F = 1-20
###### CONSTRAIN = (1-20, a1)'
###### nebo
###### model = 1, itemtype = "2PL", constrain = list((1:ncol(data)) + seq(0, (ncol(data) - 1)*3, 3))
###### 2PL model = 1, itemtype = "2PL", constrain = NULL
###### 3PL model = 1, itemtype = "3PL", constrain = NULL
fitR <- mirt(data, model, itemtype = itemtype, constrain = constrain)
# COEF
coef(fitR)
# PLOTS
# expected total score
plot(fitR, type = "score")
# test information function
plot(fitR, type = "info")
# reliability
plot(fitR, type = "rxx")
# test standard errors
plot(fitR, type = "SE")
# item trace lines - characteristic curves multiple figure
plot(fitR, type = "trace")
plot(fitR, type = "trace", facet_items = F)
# item information trace lines - multiple figure
plot(fitR, type = "infotrace")
plot(fitR, type = "infotrace", facet_items = F)
# expected item scoring function - multiple figure
plot(fitR, type = "itemscore")
plot(fitR, type = "itemscore", facet_items = F)
# test information and standard errors - combination
plot(fitR, type = "infoSE")
# factor scores
fs <- fscores(fitR)
sts <- as.vector(scale(apply(data, 1, sum)))
df <- data.frame(fs, sts)
ggplot(df, aes_string("sts", "fs")) +
geom_point(size = 3) +
labs(x = "Standardized total score", y = "Factor score") +
theme_bw() +
theme(text = element_text(size = 14),
plot.title = element_text(face = "bold", vjust = 1.5),
axis.line = element_line(colour = "black"),
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
panel.background = element_blank()) +
theme(legend.box.just = "left",
legend.justification = c(1, 0),
legend.position = c(1, 0),
legend.box = "vertical",
legend.key.size = unit(1, "lines"),
legend.text.align = 0,
legend.title.align = 0)
### comparing two models
fit1 <- mirt(data, 1, "Rasch")
fit2 <- mirt(data, 1, "2PL")
anova(fit1, fit2)
### person fit
personfit(fitR)
`
mirt vypada velmi dobre! Bylo by mozne vytvorit jej zatim jako samostatny list?
Co je ještě potřeba?
mirt vypada pekne.
Zatim nam zlobi pridani baliku mirt na Shiny server. Nejake napady? Hlasi to toto:
Kompiler prý nemá update.
Možná bychom měli zvážit přidání
Factor scores zaberou hodně času a asi by se první stránka dost zrychlila, kdyby byly počítány až po rozkliknutí nějaké option.