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.