returns information function, expected score function, score simulation function, or score distribution for a single item, an arbitrary group of items or all items
information(parms, items = NULL, booklet_id = NULL, which.draw = NULL)
expected_score(parms, items = NULL, booklet_id = NULL, which.draw = NULL)
r_score(parms, items = NULL, booklet_id = NULL, which.draw = NULL)
p_score(parms, items = NULL, booklet_id = NULL, which.draw = NULL)
object produced by fit_enorm
or a data.frame with columns item_id, item_score and,
depending on parametrization, a column named either beta/delta, eta or b
vector of one or more item_id's. If NULL and booklet_id is also NULL, all items in parms are used
id of a single booklet (e.g. the test information function), if items is not NULL this is ignored
the number of the random draw (only applicable if calibration method was Bayes). If NULL, the mean beta parameter will be used
Each function returns a new function which accepts a vector of theta's. These return the following values:
an equal length vector with the information estimate at each value of theta.
an equal length vector with the expected score at each value of theta
a matrix with length(theta) rows and one column for each item containing simulated scores based on theta. To obtain test scores, use rowSums on this matrix
a matrix with length(theta) rows and one column for each possible sumscore containing the probability of the score given theta
RcppArmadillo::armadillo_throttle_cores(1)
db = start_new_project(verbAggrRules,':memory:')
add_booklet(db,verbAggrData, "agg")
#> no column `person_id` provided, automatically generating unique person id's
#> $items
#> [1] "S1DoCurse" "S1DoScold" "S1DoShout" "S1WantCurse" "S1WantScold"
#> [6] "S1WantShout" "S2DoCurse" "S2DoScold" "S2DoShout" "S2WantCurse"
#> [11] "S2WantScold" "S2WantShout" "S3DoCurse" "S3DoScold" "S3DoShout"
#> [16] "S3WantCurse" "S3WantScold" "S3WantShout" "S4DoCurse" "S4DoScold"
#> [21] "S4DoShout" "S4WantCurse" "S4WantScold" "S4WantShout"
#>
#> $person_properties
#> character(0)
#>
#> $columns_ignored
#> [1] "gender" "anger"
#>
p = fit_enorm(db)
# plot information function for single item
ifun = information(p, "S1DoScold")
plot(ifun,from=-4,to=4)
# compare test information function to the population ability distribution
ifun = information(p, booklet="agg")
pv = plausible_values(db,p)
op = par(no.readonly=TRUE)
par(mar = c(5,4,2,4))
plot(ifun,from=-4,to=4, xlab='theta', ylab='test information')
par(new=TRUE)
plot(density(pv$PV1), col='green', axes=FALSE, xlab=NA, ylab=NA, main=NA)
axis(side=4)
mtext(side = 4, line = 2.5, 'population density (green)')
par(op)
close_project(db)
RcppArmadillo::armadillo_reset_cores()