Nothing
#options(error = utils::recover)
library(testthat)
library(rpf)
context("outfit/infit")
test_that("kct", {
data(kct)
responses <- kct.people[,paste("V",2:19, sep="")]
rownames(responses) <- kct.people$NAME
colnames(responses) <- kct.items$NAME
scores <- kct.people$MEASURE
params <- cbind(1, kct.items$MEASURE, logit(0), logit(1))
rownames(params) <- kct.items$NAME
items<-list()
items[1:18] <- list(rpf.drm())
params[,2] <- -params[,2]
expect_warning(fit <- rpf.1dim.fit(items, t(params), responses, scores, 2, wh.exact=TRUE),
"Excluding response Helen")
expect_equal(fit$infit, kct.items$IN.MSQ[4:17], tolerance=.002)
expect_equal(fit$infit.z, kct.items$IN.ZSTD[4:17], tolerance=.01)
expect_equal(fit$outfit, kct.items$OUT.MSQ[4:17], tolerance=.002)
expect_equal(fit$outfit.z, kct.items$OUT.ZSTD[4:17], tolerance=.01)
expect_warning(fit <- rpf.1dim.fit(items, t(params), responses, scores, 1, wh.exact=TRUE),
"Excluding item 1= 1-4")
expect_equal(fit$infit, kct.people$IN.MSQ[1:34], tolerance=.002)
expect_equal(fit$infit.z, kct.people$IN.ZSTD[1:34], tolerance=.005)
expect_equal(fit$outfit, kct.people$OUT.MSQ[1:34], tolerance=.002)
expect_equal(fit$outfit.z, kct.people$OUT.ZSTD[1:34], tolerance=.005)
})
test_that("freq", {
data(kct)
responses <- kct.people[,paste("V",2:19, sep="")]
colnames(responses) <- kct.items$NAME
params <- cbind(1, kct.items$MEASURE, logit(0), logit(1))
rownames(params) <- kct.items$NAME
params[,2] <- -params[,2]
grp <- list(spec=rep(list(rpf.drm()),18),
param=t(params),
data=responses,
scores=data.frame(skill=kct.people$MEASURE))
fit1 <- suppressWarnings(rpf.1dim.fit(group=grp, margin=1, wh.exact = TRUE))
expect_equal(as.integer(fit1$name), 1:34)
grp$data <- grp$data[c(rep(1,10),2:34),]
grp$scores <- grp$scores[c(rep(1,10),2:34),,drop=FALSE]
fit2 <- suppressWarnings(rpf.1dim.fit(group=grp, margin=1, wh.exact = TRUE))
fit2 <- fit2[-c(2:10),]
expect_true(all(fit1 == fit2))
})
plot.icc <- function(ii, ii.p, width=7) {
require(ggplot2)
require(reshape2)
grid <- expand.grid(theta=seq(-width,width,.1))
grid <- cbind(grid, t(rpf.prob(ii, ii.p, grid$theta)))
grid2 <- melt(grid, id.vars=c("theta"), variable.name="category", value.name="p")
ggplot(grid2, aes(theta, p, color=category)) + geom_line() +
ylim(0,1) + xlim(-width, width)
}
test_that("sf", {
data(science)
spec <- list()
spec[1:25] <- list(rpf.nrm(outcomes=3, T.c = lower.tri(diag(2),TRUE) * -1))
param <- rbind(a=1, alf1=1, alf2=0,
gam1=sfif$MEASURE + sfsf[sfsf$CATEGORY==1,"Rasch.Andrich.threshold.MEASURE"],
gam2=sfif$MEASURE + sfsf[sfsf$CATEGORY==2,"Rasch.Andrich.threshold.MEASURE"])
colnames(param) <- sfif$NAME
iorder <- match(sfif$NAME, colnames(sfpf))
responses <- sfpf[,iorder]
rownames(responses) <- sfpf$NAME
expect_warning(fit <- rpf.1dim.fit(spec, param, responses, sfpf$MEASURE, 2, wh.exact=TRUE),
"Excluding item GO TO MUSEUM")
expect_equal(fit$infit, sfif$IN.MSQ[-12], tolerance=.002)
expect_equal(fit$infit.z, sfif$IN.ZSTD[-12], tolerance=.005)
expect_equal(fit$outfit, sfif$OUT.MSQ[-12], tolerance=.002)
expect_equal(fit$outfit.z, sfif$OUT.ZSTD[-12], tolerance=.005)
expect_warning(fit <- rpf.1dim.fit(spec, param, responses, sfpf$MEASURE, 1, wh.exact=TRUE),
"Excluding response ROSSNER, LAWRENCE")
expect_equal(fit$infit, sfpf$IN.MSQ[-2], tolerance=.02)
expect_equal(fit$infit.z, sfpf$IN.ZSTD[-2], tolerance=.05)
expect_equal(fit$outfit, sfpf$OUT.MSQ[-2], tolerance=.05)
expect_equal(fit$outfit.z, sfpf$OUT.ZSTD[-2], tolerance=.075)
})
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.