patriciamar / ShinyItemAnalysis

Test and Item Analysis via Shiny
http://www.ShinyItemAnalysis.org
40 stars 22 forks source link

IRT models #112

Closed patriciamar closed 7 years ago

patriciamar commented 7 years ago

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.

adelahladka commented 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)

`

patriciamar commented 7 years ago

mirt vypada velmi dobre! Bylo by mozne vytvorit jej zatim jako samostatny list?

adelahladka commented 7 years ago

Co je ještě potřeba?

patriciamar commented 7 years ago

mirt vypada pekne.

Zatim nam zlobi pridani baliku mirt na Shiny server. Nejake napady? Hlasi to toto:

Kompiler prý nemá update.

adelahladka commented 7 years ago

U mě to funguje bez problémů, zde radí spustit R v režimu R --vanilla a pak až nainstalovat balíčky.

Teď jsem ještě našla debatu vývojářů přímo na GitHubu. Snad to pomůže!