.. _sec-vader: VADER: Trending Analysis for Code/Data Validation ================================================= *S. Hart, J. Clarity* VADER (Validation Analysis Data Evaluation Resource) is a new module in SCALE 6.3 derived from the legacy USLSTATS program. VADER is a tool that allows the determination of bias and bias uncertainty for criticality safety computational methods. The older USLSTATS program, written in Java, existed outside of SCALE and provided tools to calculate only the confidence band with administrative margin (sometimes called USL-1) and the single-sided uniform width closed interval (USL-2). For normality testing it offered only a crude chi-squared normality test that had no user-configurable options and presented a simple pass/no-pass functionality. VADER has been completely written in C++ using modern coding practices and standards. It has been moved to be part of the SCALE code package and is run through the normal SCALE executables. To support the VADER methods, large updates were made to the statistical capabilities of SCALE. Interfaces to known statistical distributions were added and many of the statistical calculations required for VADER were made available to all SCALE sequences. In addition to being able to process legacy USLSTATS inputs, VADER adds support for the single-sided tolerance band method (from NUREG/CR-6698) as well as two non-trending methods: the "historical" nonparametric and parametric methods, also as described in NUREG/CR-6698. VADER also includes several new tests for normality in addition to adding user control options on the original chi-squared normality test. A new t-test for the statistical significance of the trend is included. VADER has also been integrated into the Fulcrum GUI used by SCALE. This allows VADER to benefit from the auto-complete, templating, and input validation features offered by Fulcrum. In addition, Fulcrum can plot the results given by VADER, and the plot files have been expanded to include the new methods available in VADER. Theory ------ The methods and theory for VADER are largely taken from NUREG/CR-6698. That document contains equations and descriptions of the methods used in VADER. It also includes working examples, some of which data was used to verify the results and create example problems for VADER. Input ----- The VADER input is based on the SON input syntax common in other modernized SCALE codes such as :ref:`ORIGEN ` and :ref:`ORIGAMI `. The SON input format consists of key/value pairs where the value can be either a single item, an array of items, or other SON blocks. The VADER input generally just has one level of depth. There are no SON blocks inside of SON blocks. All input is mostly arrays at the top level of the tree. A quick look at all the top level items is given in :numref:`tab-vader.input_summary_table`. Each top level input will then be described in detail in the next section. .. table:: Summary of top level options for VADER :align: center :name: tab-vader.input_summary_table ===================================== ============ ========= **Keyword** **Required** **Description** ------------------------------------- ------------ --------- :ref:`data ` Yes Data entered in triplets in the form ``X, Y, std. dev``. ------------------------------------- ------------ --------- :ref:`title ` No Title to give the case. ------------------------------------- ------------ --------- :ref:`parameters ` No Global parameters that apply to each test or trend. ------------------------------------- ------------ --------- :ref:`trend_values ` No User desired trend values to run the tests on. ------------------------------------- ------------ --------- :ref:`methods ` Yes Methods that the user wishes to apply to the data. ------------------------------------- ------------ --------- :ref:`tests ` No Statistical checks that the user wishes to apply to the data. ===================================== ============ ========= .. |data| replace:: ``data`` .. _sec-vader.detailed: Detailed Input -------------- .. _sec-vader.data: ``data`` ~~~~~~~~ The ``data`` input array is a flat array consisting of data triplets. There is no punctuation between the triplets. The data is entered in the order :math:`X_1 \, Y_1 \, \sigma_1 \; X_2 \, Y_2 \, \sigma_2 \; ... \; X_N \, Y_N \, \sigma_N`. Where ============== ============================== *X* The trended value, usually something like enrichment or moderator density. -------------- ------------------------------ *Y* The y value, usually something like C/E or eigenvalue. -------------- ------------------------------ :math:`\sigma` The standard deviation of *Y*. ============== ============================== VADER will emit an error if the number of entries in this array is not divisible by three. .. code-block:: :caption: Snippet of ``data`` input data=[2.4 0.9976 0.00122 2.6 0.9978 0.00022 ... 1.9 1.0011 0.00213 1.99 1.013 0.00012] .. _sec-vader.title: ``title`` ~~~~~~~~~ The ``title`` entry allows the user to specify a title for the case. The title is cosmetic and doesn't affect any of the results. The title is echoed to the output in several places and is included on some of the graphs generated by VADER. .. code-block:: :caption: ``title`` title="My Very First VADER Case" .. _sec-vader.param: ``parameters`` ~~~~~~~~~~~~~~ The ``parameters`` section can exist outside of any test or method. If a parameter is listed in this global section, then it will apply to any method or test that has that parameter available instead of the default value. Values in this global ``parameters`` section can be overridden in the specific method or test block for which the user wishes to override the global parameter. For a list of all parameters, their default values, and which tests and methods they are applied to, see :numref:`sec-vader.available_parameters`. .. code-block:: :caption: ``parameters`` array parameters {extrapolate=yes admin_margin=0.03} .. _sec-vader.trend: ``trend_values`` ~~~~~~~~~~~~~~~~ This array allows the user to insert values at which they wish the trend *Y* (typically the upper subcritical limit) values to be calculated. Extrapolation outside of the data range is only available if the method supports it and extrapolation is enabled. .. code-block:: :caption: ``trend_values`` array trend_values=[-0.1 0.2 2.4 10.0] .. _sec-vader.methods: ``methods`` ~~~~~~~~~~~ This is where the user specifies the methods to enable and, optionally, gives method-specific parameters. Each method is followed by an array of the parameters the user wishes to set. Any omitted parameters are initialized with the default value (see :numref:`vader.parameters_table`). If the user wishes to enable a method with all default values, then an empty array can be given. .. code-block:: :caption: `methods` block with some default methods and some specific parameters methods { USL1 {} % uses default parameters CR6698 {weighted=yes admin_margin=0.03 chi_p=0.97} Parametric {confidence=0.9} } .. _sec-vader.tests: ``tests`` ~~~~~~~~~ This block is similar to the `methods` :ref:`block `, but it allows the user to specify which tests they wish to enable. These tests are run on the data and generally either pass or fail and give a few statistical values as their result. Most of the tests implemented for VADER for now are normality tests. .. code-block:: :caption: `tests` block tests { chisq {} % default parameters t-test {confidence=0.98} } .. _sec-vader.available_methods: Available Methods ----------------- The sections below indicate the input name to be used to activate the available method. Details on the methods can currently be found in NUREG/CR-6698. .. _sec-vader.usl1_method: ``USL1`` - Confidence Band with Administrative Margin ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. _sec-vader.usl2_method: ``USL2`` - Single-Sided Uniform Width Closed Interval Approach ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. _sec-vader.cr6698_method: ``CR6698`` - Single-Sided Lower Tolerance Band ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. _sec-vader.nonparm_method: ``NonParametric`` - Historical Non-Parametric Method ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. _sec-vader.parm_method: ``Parametric`` - Historical Parametric Method ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. _sec-vader.available_tests: Available Tests --------------- The sections below indicate the input name to be used to activate the available test. Details on the tests can currently be found in NUREG/CR-6698. .. _sec-vader.chisq_test: ``chisq`` - :math:`\chi^2` Normality Test ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. _sec-vader.trendt_test: ``t-test`` - Trend Significance t-test ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. _sec-vader.anderson_darling_test: ``anderson_darling`` - Anderson-Darling Normality Test ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. _sec-vader.available_parameters: Available Parameters -------------------- :numref:`vader.parameters_table` shows all of the available parameters, their default value, and the methods and tests to which they apply. Any parameter can be put into the global ``parameters`` :ref:`block `. Only parameters that apply to a specific method or test can be put into that method or tests ``parameters`` block. Following the table is a more detailed description of each parameter. .. raw:: latex \clearpage .. table:: Available Parameters for VADER :align: center :name: vader.parameters_table ================================================ ================= ===================== **Keyword** **Default Value** **Available In** ------------------------------------------------ ----------------- --------------------- :ref:`tsunami ` Off USL1 USL2 ------------------------------------------------ ----------------- --------------------- :ref:`extrapolate ` Off USL1 ------------------------------------------------ ----------------- --------------------- :ref:`fit_confidence ` 0.95 USL1 USL2 ------------------------------------------------ ----------------- --------------------- :ref:`admin_margin ` 0.05 USL1 USL2 CR6698 NonParametric Parametric ------------------------------------------------ ----------------- --------------------- :ref:`xrange ` All X Values USL1 USL2 CR6698 NonParametric Parametric ------------------------------------------------ ----------------- --------------------- :ref:`proportion_confidence ` 0.95 USL2 ------------------------------------------------ ----------------- --------------------- :ref:`proportion ` 0.95 USL2 ------------------------------------------------ ----------------- --------------------- :ref:`f_p ` 0.95 CR6698 ------------------------------------------------ ----------------- --------------------- :ref:`normal_p ` 0.95 CR6698 ------------------------------------------------ ----------------- --------------------- :ref:`chi_p ` 0.95 CR6698 ------------------------------------------------ ----------------- --------------------- :ref:`weighted ` No CR6698 NonParametric Parametric ------------------------------------------------ ----------------- --------------------- :ref:`confidence ` 0.95 NonParametric Parametric ------------------------------------------------ ----------------- --------------------- :ref:`proportion_of_pop ` 0.95 NonParametric Parametric ------------------------------------------------ ----------------- --------------------- :ref:`use_npm ` No NonParametric ================================================ ================= ===================== .. _sec-vader.tsunami: ``tsunami`` ~~~~~~~~~~~ This enables a TSUNAMI-mode calculation for VADER. It requires that all *X* values be between -1.0 and 1.0. .. _sec-vader.extrapolate: ``extrapolate`` ~~~~~~~~~~~~~~~ This allows extrapolation past the data values entered by the user. This is generally only applicable when the user has input values in the :ref:`trend_values ` block. .. _sec-vader.fitc: ``fit_confidence`` ~~~~~~~~~~~~~~~~~~ Confidence in the statistical result. Sometimes referred to as :math:`1 - \gamma`. In USL1 this is used to calculated the t-statistic quantile. .. _sec-vader.adminm: ``admin_margin`` ~~~~~~~~~~~~~~~~ Administrative margin subtracted from the result. This can be used to add an extra layer of confidence that the value reported is below criticality. .. _sec-vader.xrange: ``xrange`` ~~~~~~~~~~ Allows the user to tailor *X* values for each method or test or change the values for all tests without having to change the `data` :ref:`block `. Data is entered as an array of two values. By default all of the *X* values are used. .. code-block:: :caption: ``xrange`` xrange=[-0.5 2.5] .. _sec-vader.pc: ``proportion_confidence`` ~~~~~~~~~~~~~~~~~~~~~~~~~ In USL2 this controls the confidence on the proportion that is in the confidence band. .. _sec-vader.prop: ``proportion`` ~~~~~~~~~~~~~~ In USL2 this controls the proportion of the data points that will be inside the confidence band. .. _sec-vader.fp: ``f_p`` ~~~~~~~ The percentile used for the F-distribution in the single-sided lower tolerance band method. .. _sec-vader.normp: ``normal_p`` ~~~~~~~~~~~~ The percentile used for the normal distribution in the single-sided lower tolerance band method. .. _sec-vader.chip: ``chi_p`` ~~~~~~~~~ The percentile used for the :math:`\chi^2` distribution in the single-sided lower tolerance band method. .. _sec-vader.weighted: ``weighted`` ~~~~~~~~~~~~ Whether to use the weighted version of the mean and standard deviation equations when calculating the statistics for this method. .. _sec-vader.conf: ``confidence`` ~~~~~~~~~~~~~~ Statistical confidence that the proportion calculated to be above the cutoff is correct. .. _sec-vader.pop: ``proportion_of_pop`` ~~~~~~~~~~~~~~~~~~~~~ Proportion of the population that will be above the cutoff value in the non-parametric method. .. _sec-vader.npm: ``use_npm`` ~~~~~~~~~~~ Use (add) non-parametric margin to the non-parametric method.