highs
solver. This can be a good alternative to Rsymphony
, because Rsymphony
sometimes segfaults and would crash Rstudio.Shadow()
now calculates commonly used adaptivity indices.plot()
for output_Shadow_all
object gains type = 'overlap'
option for plotting overlap control statitics.Split()
now returns a list of constraints
objects for the created partitions. Added a new helper function makeConstraintsByEachPartition()
for doing this manually.Shadow()
: RANDOM
.Shadow()
: NONE
.Shadow()
: CARRYOVER
.summary()
for output_Shadow_all
object now prints scores.Split()
would sometimes parse solution indices incorrectly and would return fewer items.TestDesign()
was not generating simulee-wise plots.Split()
gains a new argument n_maximum_partitions_per_item
for allowing items to be assigned to multiple partitions.vignette('constraints')
.c()
and combineConstraints()
were incorrectly combining constraints.Split()
was erroneously returning set indices even when the input item pool was entirely comprised of discrete items.detectBestSolver()
for detecting the best available solver on the system.plot(type = "audit")
now plots the initial theta SE when available.lpsymphony
solver because of installation issues. Users may use the Rsymphony
solver as an alternative.include_items_for_estimation
argument of Shadow()
was not being reflected in the initial theta estimate.gurobi
solver would raise an 'unused argument' error.Shadow()
was not working when data
was supplied with true_theta
left empty. (#118)BIGM
exposure control was ignoring the M
value and defaulting to (maximum information + 1) even when it was supplied.Shadow()
was not working when the FIXED
item selection method was used with a single $fixed_theta
value in the config. (#132)EB
or FB
, prior sample generation was ignoring prior distribution type and assuming normal distribution.duplicate item IDs found
warning for R <= 3.6.FIXED
item selection method for Shadow()
now does not approximate the supplied value to the nearest theta quadrature when computing information.config_Shadow@interim_theta$prior_dist
and config_Shadow@final_theta$prior_dist
now accept RAW
. This is introduced to accommodate supplying raw densities to the prior
argument of Shadow()
.TestDesign()
.config_Static
and config_Shadow
and are now exported classes.config_Shadow
and createShadowTestConfig()
gain a new slot exclude_policy
for configuring how excluded items are treated. Excluded items are supplied through the exclude
argument in Shadow()
.TestDesign()
gains a 'close app' button.Shadow()
would trigger a 'incorrect number of subscripts' error.loadConstraints()
that vary the number of stimuli would incorrectly fail validation.Split()
for partitioning an item pool into parallel tests/sub-pools that satisfy all constraints. This is an experimental method we are currently working on. See vignette('split')
for a quick introduction.plot()
now works better with 'knitr' markdown documents. This is enabled by removing the use of recordPlot()
inside plot()
. As a result, p <- plot()
will not work anymore. Use recordPlot()
for assigning plots into objects.TestDesign()
is updated to work with the above change.plot()
gains a new use_par
argument to override using default graphical parameters that are hard-coded into the function. This allows for more flexible formatting.theta_segment
argument in plot(type = "exposure")
is renamed to theta_type
. The existing argument is deprecated and using it will raise a warning.Shadow()
gains a new argument seed
.plot(type = "exposure")
gains new arguments segment
, rmse
, and use_segment_label
.summary()
for output_Shadow_all
objects now also summarizes the number of selected items for ENEMY
, INCLUDE
, EXCLUDE
, and ALLORNONE
constraints.citation("TestDesign")
summary()
of an output_Shadow_all
object used to throw an incorrect number of dimensions
error when there was only one constraint.diagnostic_stats = TRUE
option in createShadowTestConfig()
would generate unnecessarily large amount of data when running Shadow()
.eap()
to handle input formats consistently with mle()
. This should only affect use cases where eap()
is called directly.Shadow()
now utilizes include_items_for_estimation
for EAP estimation.plotInfo()
is removed. This is now plot(type = "info")
.plotExposure()
is removed. This is now plot(type = "exposure")
.output_Shadow
gains a new slot for initial theta estimates. plot()
utilizes the new slot.TestDesign()
now checks whether each solver works, and only shows solvers available on the user system.plot()
.toggleConstraints()
now also accepts character IDs.summary()
for output_Shadow_all
and output_Static
objects, and print()
for constraints
objects. User-supplied constraint indices are still printed as before.NA
values are now suppressed in printing, in summary()
of output_Shadow_all
and output_Static
objects.constraints
objects raised a warning related to internal constraint indices.Shadow()
has a new argument include_items_for_estimation
for including existing response data to be used to supplement interim theta estimation.exclude_items
in Shadow()
is now renamed to exclude
. The argument exclude
now also accepts stimulus IDs.use_step_size
and step_size
for limiting the amount of change between item administrations.loadConstraints()
now retains stimulus IDs in the item_index_by_stimulus
slot for easier access.loadConstraints()
now accepts non-numeric character IDs in the CONSTRAINT_ID
column.plot()
now accepts ylim
.config_Shadow
object for whether its solver was installed on the system.updateConstraints()
is removed. This is now toggleConstraints()
.showConstraints()
is removed. This is now print()
.plotCAT()
is removed. This is now plot(type = 'audit')
.plotShadow()
is removed. This is now plot(type = 'shadow')
.Shadow()
. This can be configured using config_Shadow@interim_theta
and config_Shadow@final_theta
.output_Shadow_all
class.output_Shadow_all
objects now have print()
and show()
extensions.loadItemPool()
, loadItemAttrib()
, loadStAttrib()
, loadConstraints()
, buildConstraints()
are now capable of reading from data frame objects.loadItemPool()
is now capable of reading from SingleGroupClass
objects from mirt
package.item_pool
objects can be now subsetted and combined with [
and c()
.constraints
objects can be now subsetted and combined with [
and c()
.SUM
constraints now accept VARIABLE, EXPRESSION
in CONDITION
for imposing constraints on conditional sums (e.g. WORDCOUNT, DOK == 1
).Static()
and Shadow()
now asks for confirmation when attempting to use solvers other than Rsymphony
, lpsymphony
and gurobi
for set-based assembly. This can be overridden by passing force_solver = TRUE
.Shadow()
now uses progress
package if available.Static()
now returns an output_Static
object.Shadow()
now returns an output_Shadow_all
object.print()
extensions for most objects.summary()
extensions for most objects.plot()
extensions for most objects.dataset_bayes
example dataset.plot(type = 'shadow')
(formerly plotShadow()
) now groups items by stimulus.config_*
objects now have a new MIP$retry
slot. This specifies the number of retry attempts when the solver encounters a 'no solution' error. This error is incorrect in some cases. The intent of retrying is to verify whether the 'no solution' error indeed indicates a true error.Shadow()
now has a new excluded_items
argument.updateConstraints()
is now toggleConstraints()
.plotInfo()
is now plot(type = 'info')
.plotCAT()
is now plot(type = 'audit')
.plotShadow()
is now plot(type = 'shadow')
.plotExposure()
is now plot(type = 'exposure')
.calcDerivative()
is removed.calcDerivative2()
is removed.Shadow()
was marking eligible items as ineligible when using ELIGIBILITY
exposure control.loadItemPool()
was parsing standard errors incorrectly for GR
models.loadConstraints()
was creating unnecessarily large numbers of constraints when TYPE = 'NUMBER'
and CONDITION
was an item/stimulus attribute name, and the attribute did not have NA values.loadConstraints()
was creating constraints incorrectly when TYPE = 'NUMBER'
and CONDITION
was an item/stimulus attribute name, and the attribute had NA values.loadConstraints()
was creating constraints incorrectly when TYPE = 'NUMBER'
and CONDITION
was a stimulus attribute name, and LB
and UB
were not equal.loadConstraints()
was creating constraints incorrectly when TYPE = 'SUM'
.lpSolve
to address lpsymphony
being unavailable on Solaris.Shadow()
to run.BIGM
exposure control method on set-based items.lpsymphony
is now the default solver. lpsymphony
allows faster solving of set-based assembly tasks, and is easily installable on various platforms.getSolution()
prints the indices of the selected items from the results of Static()
or Shadow()
.showConstraints()
returns the constraints table from a constraints
object. This is a shortcut to access the @constraints
slot.TM_TARGET_GAP_ACHIEVED
as a valid status message in lpsymphony
and Rsymphony
solvers.loadItemAttrib()
now ignores malformatted values in 'INDEX' column and regenerates correct indices.loadStAttrib()
now ignores malformatted values in 'STINDEX' column and regenerates correct indices.config_Static
object now shows the objective tolerance value in slot @MIP$obj_tol
.TestDesign 1.0.0 is a major release that provides structural changes to better streamline the usage of functions and also achieve more structured abstraction.
ATA()
is now named Static()
to match with Shadow()
for adaptive assembly.Shadow()
now uses fewer arguments to match with Static()
and to reduce redundant information in the arguments.plotMaxInfo()
is removed. The functionality is subsumed under plotInfo()
, which can be used by supplying a constriants
object to the function.Static()
now does not return the information plot by itself. The plotting should be done with plotInfo()
.plotInfo()
is now an S4 method.item_pool
object gives a pool-level information plot.Static()
gives an information plot based on the selected items.constraints
object gives an information range plot from the test length specified in the constraints.item_attrib
), set attributes (st_attrib
), and constraints (constraints
).ATA()
and STA()
are merged into a single core function runAssembly()
. The function translates high-level user data to low-level solver data.ATA()
and STA()
are removed. Deprecating the functions was not feasible because of the structural changes.lpsymphony
solver package from Bioconductor repository. Note: The current version 1.12.0 of lpsymphony
will not install on R-devel due to R CMD config F77
being deprecated. Installs normally on R 3.6.1.plotShadow()
has a new simple
argument that simplifies the chart by hiding items that are not included in any shadow test.lpsymphony
and Rsymphony
instead of SYMPHONY
)vignette('rsymphony')
is improved.plotCAT()
and plotShadow()
now uses a separate color for polytomous item responses.plotInfo()
now uses a more polished plotting style.plotExposure()
was incorrectly plotting stimulus-level exposure rates along with item-level exposure rates.Shadow()
.gap_limit
was being incorrectly passed onto SYMPHONY
in ATA()
and Shadow()
, instead of gap_limit_abs
.gap_limit
was not being passed onto GUROBI
in ATA()
and Shadow()
.time_limit
was not being passed onto GUROBI
in Shadow()
.time_limit
was being incorrectly passed in microseconds to GLPK
in Shadow()
.Shadow()
.config_ATA@MIP
now has a new slot $obj_tol
for controlling objective value tolerance.ATA()
and Shadow()
were returning incorrect solutions with set-based item pools in some cases.ATA()
and Shadow()
were returning fewer than the specified number of items, due to solution vectors being not strictly binary in some cases.vignette('constraints')
.URL
and BugReports
fields to DESCRIPTION
file.