shinyGUI
list’s forced_choice
global
specification in mirtCAT()
has now been deprecated in favor
of including this information in the df
object. This allows
explicit selection of which items should be presented in a forced choice
format (requested by Levent on the mirt-package forum)Added design
information to include the sequential
probability ratio test for classification purposes. Currently limited to
unidimensional models only
Fix Fisher information bug in unidimensional graded response model applications (reported by Felix Fischer)
New argument df$HTMLOptions
added to indicate
whether the Options.#
inputs should be evaluated using
HTML()
first and passed to the suitable constructor
functions (requested by John Manacup)
df$Timer
is now printer for each respective item in
the GUI, and if time runs out then the item is either replaced with an
NA response or marked as “incorrect” if one or more Answer
elements were present (requested by Morten Nordmo)
Time remaining now reported in real-time, where now the last ten minutes of a GUI session prints the minutes and seconds remaining
Re-work the updateDesign()
function to more
naturally move through the CAT session manually. Previous response and
selected item arguments now replaced with new_response
and
new_item
, respectively, and example documentation updated
to reflect this change
ordered
and unordered
constraints no
longer stop in the middle of testlet set, thereby ignoring other stoping
criteria (suggested by Christoph König)
choiceNames
and choiceValues
inputs
required additional unnaming (reported by Ryan Kelley)
Up to three attempts are allowed when users are required to provide a password (requested by Aron Fi)
createShinyGUI()
now contains a
host_server
logical argument to indicate whether the GUI is
hosted on a remote server or locally. This triggers whether
shiny::stopApp()
should be executed upon completion (on
servers this should be executed to avoid stopping the app when multiple
users are active)
previously provided sessionName
argument now removed
in favour of handling this feature in the back-end. This helped patch a
bug related to multiple instances of the GUI on a single server
(reported by Daniel Sommerhoff)
thetas.start
now accepts a matrix input for
simulations with different latent trait starting values. Note that this
also will affect the start_item
criteria as well since the
optimal first item will incorporate the new starting trait location
(requested by Niek Frans)
Added a element to person
objects and results return
from GUI version of mirtCAT()
called
clientData
, which pertains to the character vector
information from shiny’s session$clientData
component
(requested by Felix Fischer and Daniel Sommerhoff)
Allow multiple CAT session to be run during the same R session.
This is primarily an update for users interested in hosting
mirtCAT
on a single server where multiple users can be
processed at the same time
Fix design_elements
global dependency between
objects (reported by Felix Fisher)
default wrapper to Questions
element in
df
input now uses shiny::HTML
rather than the
previous shiny::p
. This allows for HTML code to more
naturally be included, as well as the use of shiny
tag
constructor functions when used in concert with
as.character()
. This deprecates the previous
df$StemExpressions
format
list inputs for choiceValues
and
choiceNames
can accept named input elements that match the
associated rownames in the df
input to avoid the use of
placeholders
The final page splash screen now removes the Next
button to avoid confusion (suggested by Daniel Sommerhoff). Applications
must be explicitly closed now by the user, and consequently the
stopApp
logical to the shinyGUI
list has been
deprecated
Fixed the random item selection exposure control, which was selection suboptimal items instead (reported by @machow on Github)
When Type input is text
or textArea
and
forced_choice = TRUE
then blocks of text input will also
now be required. Otherwise, a message will be printed to the
GUI
message added in red whenever selection conditions not met (e.g., when using forced choice, rating scale options, or new mastery input)
added an optioanl Mastery
input colum to
df
to prevent the GUI from continuing until the item is
answered correctly (not useful for CATs, but supported for teaching
interfaces)
added a rankselect
GUI input to df$Type
to create a list of rank-orded selection options corresponding to the
input options
Fix bug when using sequentially scored test without forced choice (reported by Aron Fink)
add Timer
option to df
intput to set
time limits for select items
iterative algorithms now use the previous theta
estimates as the starting values when locating the updated
estimates
fix selection bug when using prior covariance matrix selection rules (reported by Johan Braeken)
computeCriteria()
now respects the
subset
argument (reported by Johan Braeken)
new choiceNames
and choiceValues
inputs
to shinyGUI
list to allow HTML stems for radio buttons and
checkboxes (e.g., see the new arguments in
help(radioButtons)
)
rotate x-axis 90 degrees in plot()
generic by
default
start_item
can now be a vector to change the
starting item for each off-line response pattern input in Monte Carlo
simulations
fixed off-line starting item when set to 'random'
,
which previously set each participant’s start item the same (reported by
Okan Bulut)
internal updating function for person
class to avoid
direct assignment in customUpdateThetas()
function
warning message and slot included in GUI results when session terminated unexpectedly
fix min items combination when using a preCAT
list
input (total min items is now the sum of both stages)
fix scoping bug when hosting GUI on server (reported by Murat Doğan ŞAHİN)
when a tab is closed early in the GUI the session now calls
stopApp()
new customUpdateThetas
function input to
design
to create a map of how the latent trait estimates
should be updated throughout the session. To better expose the
internals, the previous Update.thetas()
function associated
with a person
class is now available as a slot in the
design
internal object
added subset
and info_mats
to
computeCriteria()
to compute the desired criteria on item
subsets only and to return the information matrices used to compute
criteria such as Drule, Trule, etc (requested by Johan Braeken)
removed support for a list input for df
object in
place of a more flexible format which supports the arbitrary creation of
user-defined item formats through the new customTypes
argument. This is to be used in conjunction with the
df$Type
input to pair the respective inputs
added time_before_answer
to shinyGUI
list to include a require number of seconds to wait before a
valid/omitted response can be accepted
add textAreaInput
support to GUI for include
text-boxes as possible inputs
df$StemExpression
is now instead a logical vector
used to indicate whether the questions definition should be evaluated in
R first
added AnswerFun
input to allow for user-defined
functions for each respective item to determine whether the answer
provided is correct or incorrect. Mainly useful for text-based items
(suggested by Anna Mikolajetz)
added a theme
input to shinyGUI
to
support predefined themes from the “shinythemes” package
progress
logical added to mirtCAT()
to
print the progress of Monte Carlo simulations with the
pbapply
package
Shadow testing and optimal test assembly designs supported by
adding constr_fun
input to mirtCAT()
and
objective
input to findNextItem()
. See the
findNextItem()
documentation for details and
examples
computeCriteria()
function added to return all the
criteria values (e.g., maximum information) associated with each
respective item
population-level Theta terms tracked internally for Monte Carlo
simulations because generate_pattern()
now stores the
respective population values as a silent attribute. Will now be
displayed in summary/print/plot outputs, where applicable
allow the internal design
object to be modified
through the customNextItem()
function
added an extract.mirtCAT()
function to better
document and extract the components of the person
,
design
, and test
objects in
customNextItem()
. Allows for safer and easier customization
of item selection maps
new test_properties
and
person_properties
inputs to design
element to
allow for prior information about the test/persons (e.g., selecting
particular items based on prior demographic information). Intended for
use with a customNextItem()
function definition
added StemExpression
to df
input to
support arbitrary R expressions for stems to be rendered with standard R
code. Allows for inputs such as audio, video, etc, as well through the
use of a suitable tags$FUN(...)
new password
input to shinyGUI
list to
allow login and password gates. Useful when hosting CAT on a server with
potentially sensitive items
default shiny
stem wrapper function for
df
when it is a data.frame
is now exposed via
the stem_default_format
input to
shinyGUI
MathJax is now explicitly supported in the item stems and
response options. As before, users can provide a manual list explicitly
defining the shiny
functions; however, if a
data.frame
object is used then the stems/responses will be
automatically wrapped within a suitable
shiny::withMathJax()
function to render the output
mental preparation screen now disabled for non-scored tests when
the mo
object is omitted (i.e., equivalent to setting
shinyGUI = list(begin_message = "")
)
'select'
Type input to df
now uses a
blank option as the default to avoid clicking through accidentally. Also
works better with the forced_choice
default
fix MLWI/MPWI selection criteria
findNextItem()
is allowed to return all items given
the selection criteria
include constraints
option for excluded
items (useful for re-testing situations where item selection is from the
same bank of items but previously answered items should not
appear)
new 'none'
presentation Type to allow empty material
with no responses (mainly for presenting reading passages or other
testlet-based items). Useful when used in conjunction with the
constraints
input from the design
list so that
these items have predictable dependent pairings (or can be used with the
customNextItem
form as well for explicit
dependencies)
shinyGUI
input gained a ui
element to
allow users to completely customize the graphical UI with shiny
code
added customNextItem
function to allow a completely
customized method for declaring the item selection scheme
support checkbox
input type for
checkboxGroupInput()
function. Supplying one or more
answers will score the items in a partial credit style
include missing input options in df
input for
shiny
(e.g., width, placeholder, inline). Removed
'radio_inline'
input because this can now be accomplished
by passing Type = 'radio'
and
inline = TRUE
added getPerson()
function to assign a person object
following the use of createShinyGUI
the raw_responses
vector returned for each
participant is now a character vector instead of an integer
added slider
Type input for sliderInput
rating scale questions
resume_file
removed, now if an associated
temp_file
is detected it will be used to resume the GUI
session
new begin_message
input to shinyGUI
to
change message prior to starting the CAT
changed lastpage
element in shinyGUI
input from a list to a function to allow messages containing information
pertaining to the session
fix bug when using SH exposure control when the pool runs out of items
add delta_thetas
argument to design list to stop CAT
if change between latent trait updates is less than this distance
criteria
include more functions to allow easier web hosting in locations
such as shinyapps.io
. Namely,
mirtCAT_preamble()
and
createShinyGUI()
graphical images (png, gif, and jpeg) no longer supported. Stems preferably should in HTML for best results and control
Stem paths can now point to and render HTML and markdown files in the GUI
df
input can now be a list for including more fine
tuned shiny inputs
check for the existence of graphical item stems, and allow relative or absolute paths
fix stem location bug, and add better aspect ratio
the summary(mod, sort=FALSE)
argument returned a
NULL object instead of the unsorted response. This has been patched and
is now tested for
when no df
is supplied, check that the responses are
in a plausible range (reported by Gerard Flens)
forced_choice
argument for shinyGUI input to state
whether response for each item are required (for CATs, this should
always be TRUE)
response in GUI now are blank by default
in preCAT
list input change nitems
to
min_items
and max_items
for better control.
Also include a response_variance
logical to terminate the
preCAT stage when variability in the the response options occurs (so
that ML estimation becomes plausible)
include Sympson-Hetter method of item exposure control
major re-write of shiny inputs. Now the questions, answers, and
options are all supplied through a data.frame
object for
better clarity, and all shiny inputs regarding the questions, image
locations, etc, are specified in this object
mirt_object
input renamed to mo
for
short
the local_pattern
input now accepts a matrix of
response patterns for running simulation designs. Returns a list of
person objects instead of a single object
generate_pattern()
now supports multiple Theta
inputs specifically for simulation designs
start_item
input now accepts character value inputs
(in addition to explicit numeric inputs) corresponding to the
criteria
argument. This allows the first item to be
selected using the (adaptive) selection criteria
added generate.mirt_object()
function to build the
required mirt_object
input given population
parameters
new cl
argument in mirtCAT()
for
passing a parallel cluster object defined from the parallel package.
Used to run simulation designs with parallel architecture for better
speed
by default, the demographics page is no longer generated in the GUI
item_answers
can now be a list input, indicating
that more than one correct answer is possible for a given item
allow the first page and demographics page to be skipped by passing empty list arguments
added ‘fixed’ method to keep latent trait estimates at fixed values (useful for preCAT)
Fisher information matrix added for remaining multidimensional
models supported by mirt
, including custom item
types
add ‘Arule’ and ‘APrule’ for minimum trace criteria of asymptotic covariance matrix
temporary files can now be saved while the GUI is running, and restored at a later time
more estimation options can be passed to fscores()
via the … argument
sensitive objects are now removed from the package namespace when
the mirtCAT()
finishes unsuccessfully
categories are always returned with based 1 for first response in the GUI
add content balancing option
various bug fixes, and update documentation
new findNextItem()
input for users to locate the
next item to administer (likely for custom CAT interfaces that do not
use the Shiny package). Can be updated with the
updateDesign()
function
moved ‘Next’ button in the web interface to the left panel box so that it will always remain in the same location
support CSS customization
switch multidimensional selection criteria to use analytical expressions rather than numerical. Several multivariate Fisher information matrix computation currently not supported analytically, but will be steadily added.
add classification capabilities to design
list
input