optimall_shiny(), located within the package
optimall, launches a Shiny app that allows users to observe how the stratum sizes, standard deviations, and optimum allocations react to different stratum splits. This vignette demonstrates how to use the application.
The first step in using
optimall_shiny() is uploading data. The data must be in the same format that the rest of
optimall’s functions require, meaning that each row must corresponds to one sampling unit. If you have already updated an existing dataset in your R workflow, you will have to save the updated dataframe to a .csv file in order to work with it in
Once the dataset has been uploaded, options for the user to select inputs will appear. Each input correspond to an argument of at least one function in
optimall, and the application provides a list of valid options for each one based on the uploaded data. See them below:
Column Holding Strata corresponds to the
strata argument in
split_strata(). The dropdown menu includes a list of column names from which the user should choose the name of the column that defines the stratum that each unit belongs to.
Column Holding Variable to Split On corresponds to the
split_var argument in
split_strata(). The dropdown menu includes a list of column names from which the user should choose the name of the column that holds the variable (continuous or categorical) that will be used to split strata on.
Column Holding Variable of Interest corresponds to the
y argument in
allocate_wave(). The dropdown menu again includes a list of column names from which the user should choose the column holding the variable of interest. Since the application displays, it needs to know this variable of interest,
y, in order to calculate the optimum allocation.
Name of Strata to Split corresponds to the
split argument in
split_strata(). The dropdown menu includes a list of the unique stratum names from the column holding strata. Although the package allows for multiple strata to be selected in the same call, the Shiny application currently supports only one (or all) strata to be split at once.
Split Type corresponds to the
split_type argument in
split_strata(). If the variable to split on is not numeric, the type must be categorical. For more details on each option, see the documentation at
Split At corresponds to the
split_at argument in
split_strata(). If the split type is one of global quantile, local quantile, or value, this input will be a slider for the user to adjust the exact split location. If the split type is categorical, this input will contain boxes for each unique value of the
split_var. In the categorical case, the checked boxes will be interpreted as category 1, while the unchecked boxes will be category 0.
Include Information from Previous Wave allows users to select if the displayed dataframe should be output from
optimum_allocation() is chosen, it defaults to the “WrightII” method with
allow.na = TRUE. If
allocate_wave() is chosen, a new option to to select which column contains the prior wave indicator will appear, and a valid column (containing 0/1 or Y/N) must be selected. This choice corresponds to the
wave2a argument of
n to sample allows users to indicate the number of samples to be taken for the output dataframe. This selection corresponds to the
nsample argument of either
allocate_wave(). Thus, it should be different depending on which allocation function was selected. For
optimum_allocation(), it should be the total number of samples to be taken, while for
allocate_wave(), it only indicates how many samples should be taken in the current wave.
optimall_shiny() displays the output dataframe of
allocate_wave() based on the current inputs. After a split is confirmed and these inputs are reset, it will show an error in place of this dataframe until valid inputs are selected again. Displayed below this dataframe is a text list of the code that performs each of the confirmed splits in
When the user is satisfied with the parameters that are selected, a split can be confirmed by pressing the
Confirm Split button at the bottom left of the page. This will split the existing data using the
split_strata() parameters specified in the inputs. The inputs that specify arguments for the allocation will not change the splits, they are only included to show how each split may impact the sample allocation.
Confirm Split is pressed, the code to perform that split will appear in the output at the bottom right of the page. The updated strata will now be in a column called “new_strata”, and the inputs will reset. Using “new_strata” as the column defining the strata, the user can then perform more splits, and the code to perform each one will be added to the list at the bottom right with each confirmation.
The splits in
optimall_shiny() will not be performed on the true dataset in the user’s
optimall workflow in R. Instead, the user must return to R if they want to actually transform the data into a working dataframe with the new strata. The code displayed in the app’s output makes this task simple, as it can be copied and pasted into an R script to replicate the splits conducted in the app. Note, however, that the
data argument in each
split_strata() call needs to be changed to reflect the user’s name for the data.
If any of the selected inputs results in an error in either
split_strata() or the selected allocation function, the app will print the error.