NEWS.md
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().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.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').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().vignette('constraints').URL and BugReports fields to DESCRIPTION file.