Skip to content

Latest commit

 

History

History
1231 lines (783 loc) · 38.2 KB

File metadata and controls

1231 lines (783 loc) · 38.2 KB

cNORM:news and change-log

This file documents the development of the package as well as open issues or points for further improvements.

Version in 3.6.3

Date: 23.07.2026 - progress

Checks on number of groups in Taylor modelling added. Now actively advises on 't' parameter reduction.

Version in 3.6.2

Date: 20.07.2026 - release

Fine-tuning of internal functions (relaxed monotonicity check) and a new S3 method for predicting distributional moments of fitted Taylor, beta binomial and shash models.

New features

  • New function predictMoments(): Computes model-implied distributional moments (mean, standard deviation, variance, skewness and excess kurtosis) of the raw score distribution at one or more ages (or, more generally, values of the explanatory variable). The function works with all model families and returns a data.frame with one row per age. The moments are model-implied population moments of the conditional raw score distribution, censored at the bounds of the raw score range [minRaw, maxRaw] for consistency across model families. The computation strategy depends on the model family:
    • Taylor polynomial (cnorm): The bivariate regression function is collapsed at the specified age into a univariate polynomial in the norm score (location) variable. Moments are then obtained by Gauss-Hermite quadrature, which is mathematically exact for polynomial quantile functions (up to the censoring at minRaw/maxRaw).
    • Beta-binomial (cnormBetaBinomial, cnormBetaBinomial2): Moments are computed exactly by summation over the discrete probability mass function on the support 0:n, using the age-specific predicted alpha and beta parameters. This respects the discreteness of the distribution; no continuity approximation is involved.
    • SHASH (cnormShash): Moments are obtained by Gauss-Hermite quadrature of the quantile function qshash evaluated at the age-specific distribution parameters, censored at minRaw/maxRaw.

Changes

  • Monotonicity check in Taylor polynomials now accept minimal inconsistencies (violations of less than 1% of the raw score range; parameter added to cnorm and bestModel).
  • The averaging feature has been turned of by default. We have to conduct more research first.
  • Deprectated subsampling parameter and according function removed
  • Added analytic grading in fitting shash models

Version in 3.6.1

Date: 13.07.2026 - release

This release mainly targets optimization and code hardening. The central new feature is the averaging argument in the bestModel() and bestModel(), which conducts a model averaging for the consistent models in order to reduce variance in model estimation. Beta binomial models are now drawn as stepping and this as well is applied for the compare function.

New features

  • bestModel() gains an averaging argument: instead of selecting a single model, the final coefficients can now be computed as a BIC-weighted average across all consistency-screened candidate models (weightedAverageModel(), new exported function). Since only monotone models of identical direction enter the average and the weights form a convex combination, the averaged model is guaranteed to remain consistent. This addresses model selection variance and replaces the deprecated subsampling approach.
  • Analytical monotonicity check: model consistency is now verified exactly within each age. As the model is polynomial in the norm score L (degree <= k), the real roots of its derivative are computed via polyroot() and the sign of the derivative is evaluated between consecutive roots. This detects narrow violations that a discrete norm score grid can miss, and is faster than the previous 50-point grid.
  • checkConsistency() gains a method argument ("analytic", the new default, or "grid" for the previous numerical behaviour). The analytic method is clipping-aware: violations lying entirely outside [minRaw, maxRaw] are ignored, matching the former clipped grid check. Models with non-Taylor predictors automatically fall back to the grid method.
  • Consistency screening in bestModel() now evaluates 8 age points instead of only the age minimum and maximum, so intersecting percentile curves at interior ages are now detected.

Deprecations

  • subsample_lm() is deprecated and returns a plain (weighted) least squares fit. Averaging OLS coefficients over subsamples cannot improve on the full-sample fit (Gauss-Markov) and only added Monte-Carlo noise; use bestModel(..., averaging = TRUE) instead. The subsampling argument of bestModel() is deprecated and ignored.

Bug fixes

  • cnorm.cv() and the internal consistency screening used .lm.fit(), which neither returns fitted values nor unpivoted, named coefficients. This could yield NaN RMSE values and mislabeled coefficients in rank-deficient cases. Replaced by lm.fit().
  • bestModel() with extensive = TRUE and user-defined predictors crashed during screening ("subscript out of bounds"); screening is now skipped gracefully for non-Taylor predictor sets (best model per size retained).
  • checkConsistency() failed for conventional norming (minA1 == maxA1) due to a zero age stepping parameter.
  • nvmax was computed incorrectly when predictors was supplied as a formula (length(formula) returns 3) or as a character vector.
  • Violating age points in checkConsistency() were concatenated with sep instead of collapse and hence not fully displayed.
  • normTable.betabinomial(): tables truncated via m < n were erroneously
    renormalized over the truncated support, distorting percentiles and norm
    scores. Probabilities are now always computed on the full support 0:n.
  • cnorm.betabinomial() (mode 2): corrected infeasible factr settings for
    L-BFGS-B that caused spurious convergence failures; retry path no longer
    fails with user-supplied control lists.
  • Mode 1 predictions in beta binomial modelling: mean-preserving fallback when the method of moments yields invalid beta-binomial parameters (previously both parameters were clamped, biasing the predicted mean).
  • diagnostics.betabinomial(): robust against singular Hessians; removed dead code.
  • Consistent clamping of linear predictors between likelihood and prediction (mode 2); more robust scale specification (is.numeric instead of typeof).

Performance Optimizations in beta binomial modelling

  • lchoose(n, y) is precomputed once per fit instead of in every optimizer iteration.
  • predict() for beta-binomial models computes the distribution once per
    unique age (major speed-up for grouped data).
  • Shared internal helpers for input validation, design matrices and the
    beta-binomial pmf/cdf; percentile plots now use a single long-format layer.

Behavioural changes

  • Candidate models in Taylor modelling that do not depend on L at all (flat percentile lines) are now flagged as inconsistent during screening; previously they passed the monotonicity check. Such models are degenerate for norming purposes.
  • In beta binomial modelling, the plotting now show discrete beta-binomial quantiles are now rendered as proper step functions (geom_step, midpoint risers) in plot() and compare(); compare() gained a discrete argument default TRUE) controlling whether beta-binomial models are displayed with exact discrete quantiles or the continuous beta approximation. This as well resolves an artefact of compressed percentile lines in areas +/- 1 SD that falsly indicated an inferiority of beta binomial models.

Version in 3.6.0

Date: 17.06.2026 - release

This release includes autoselect methods for shash and betabinomial models using parallel code execution. The raking and weighting was revised and ranking methods optimized. The monotonicity checks are now much more strict.

Changes:

  • new methods: autoselect.betabinomial, autoselect.shash
  • Information on modelling Logits from IRT models added to vignette
  • function getGroups hardened for rare exceptions
  • Stricter check on monotonicity in Taylor polynomials
  • Cleaned up derive function
  • Vectorization in regressionFunction()
  • Code review of the raking code and the weighted.rank
  • Code review for rankByGroups and rankBySlidingWindow; performance improvements
  • prepareData and cnorm functions hardened
  • added example code for new functions to vignette and README.md

Version in 3.5.4

Date: 15.05.2026 - release

This release aims at a better integration of parametric functions for the plotting functions, an overhaul of the Shiny Apps and huge performance improvements in the Taylor modelling (rankBySlidingWindows and checking for monotonicity). The subsampling will be deprecated and deleted from a future release of cNORM.

Changes:

  • Set nbest to 10 in exhaustive search
  • Author name order corrected in README.md
  • ShinyApp streamlined
  • discrete parameter when plotting betabinomial models added
  • plotNorm, plotNormCurves and plotDensity fixed to correctly handle parametric models
  • boost performance in rankBySlidingWindow, which as well affects performance of the parametric modelling, especially when plotting
  • broader test coverage
  • subsampling set to FALSE on default; the internal function is deprecated and
    will be removed in a future release
  • Monotinicity with performance improvements

Version in 3.5.3

Date: 01.05.2026

Changes:

  • Code review with Anthropic Claude Opus 4.7 to harden the code and to identify edge cases and handle them gracefully.
  • rawTable() and normTable() now enforce monotonicity of raw and norm scores outward from the median. This reduces problems with inconsistent or NA results at the extreme ends of the model and is robust against missing values in the predicted series.
  • predictRaw() is more robust for degenerate models
  • predictNormByRoots() now correctly honours the force argument. When a raw score is unreachable within [minNorm, maxNorm], the function returns NA (default) or clips to the appropriate boundary (force = TRUE, now default).
  • Direction-of-search is now based on the unclipped model prediction at the scale mean.
  • bestModel() selection by terms or R2 is now correct under the extensive consistency screening introduced in 3.3. The chosen model now reflects the requested number of terms (or the smallest model meeting the R² threshold) rather than the row index in the filtered regsubsets summary.
  • cnorm.cv(): corrected the maximum-model-size formula (k + 1) * (t + 1) - 1; pCutoff, weight handling, and norm-score SE follow Oosterhuis et al. (2016) more faithfully and use safer indexing throughout. Fix when using sliding window ranking.
  • screenSubset() cleaned up: defensive initialisation, drop = FALSE on matrix subsetting so single-row results survive, removal of dead code.
  • internal function plotCumulative added for conventional norming
  • removed link to CDC since server is not available anymore
  • examples set to dontrun

Version in 3.5.2

Date: 26.02.2026

Changes:

  • fixed scale information in diagnostics (betabinomial and shash), which was not correctly passed to the function
  • input validation checks in cnorm.betabinomial and cnorm.shash
  • optimization of shash functions
  • robustness of betabinomial functions
  • new shiny GUI for parametric modelling
  • Shiny GUI files restructured
  • plotPercentile did not minAge and maxAge parameter - fixed
  • plotPercentile performance improvement
  • saving plots in plotPercentileSeries, can run out of bounds - fixed
  • plotNorm object checks improved
  • plotCnorm helper parameter checks - fixed
  • fixed geom_hline warning in plotSubset
  • removed the raw parameter from plotRaw - it always uses the model data
  • improved model type check in plotDensity

Version in 3.5.1

Date: 14.10.2025

Changes:

  • fixed inconsistencies in terminology. Move class cnormShaSh to cnormShash
  • stripped down vignette on shash modelling to essentials
  • updated documentation
  • additional checks for shash and bb modelling
  • improved error messages
  • replaced deprecated ggplot2 function parameter (linewidth instead of size)
  • Performance optimamization in shash modelling
  • shash documentation improved
  • improved code safety in diverse functions
  • shash distribution functions exported to NAMESPACE

Version in 3.5.0

Date: 26.09.2025

Changes:

  • revision of beta binomial function to robustly handle scales with large n
  • deprecated function calcPolyInLBase removed
  • corrected bug in computeWeights when there is a single SV with two levels, enhanced type safety
  • Link to NHANES corrected
  • Implemented parametric modelling with the Sinh-Arcsinh (ShaSh) distribution New functions: cnorm.shash, normTable.shash, summary.cnormShaSh, print.cnormShaSh,
    plot.cnormShaSh, predict.cnormShaSh and diagnostics.shash
  • updated all generic function to handel cnormShaSh objects
  • vignette on ShaSh modelling added
  • Compare function now includes AIC and BIC information

Version in 3.4.0

Date: 04.11.2024

Changes:

  • new function 'compare' added to visually compare models
  • inclusion of 10-fold subsampling and averaging of model coefficients in model estimation which produces more stable results

Version in 3.3.1

Date: 16.10.2024

Changes:

  • added check on score data in cnorm.betabinomial
  • switch to rankByGroup in cnorm in case age variable is plausibly grouping variable
  • bug in subtitles of plotPercentileSeries fixed
  • adjusted output and model recommendations in cnorm.cv
  • fixed legend in plotDensity()
  • bug in predictRaw fixed, which caused plotDerivative to plot wrong results
  • improved initial starting and control parameters in cnorm.betabinomial2
  • bugs in diagnostics.betabinomial fixed
  • vignettes revised

Version in 3.3.0

Date: 2024.08.26

Changes:

  • checkConsistency performance improvement; now runs 100 times faster
  • visualization improvement in 'plotDerivative'
  • bug in subheadline of plotPercentileSeries fixed
  • reduced number of messages
  • Starting work on inclusion of regularized Taylor models. Since simulation studies with glmnet did not show improvement, we generate much more models and preselect those, which pass an initial consistency check. Now, the a consistent model with the highest R2 is selected. R^2 and terms can of course still be specified as usual.
  • plotSubset improved: now indicates, which models did not pass the initial consistency check via empty circles
  • Plots improved generally, now prints formula and statistical indicators in Greek letters and R^2 with the 2 uppercase

Version in 3.2.0

Date: 2024.08.17

Changes:

  • Parametric modelling with beta binomial functions now fully implemented
  • S3 functions predict, plot and summary added for bet a binomial models
  • Fixed input validation in getNormScoreSE
  • Started intensive work on regularization in Taylor models (planned for v4.0)
  • Vignette on modelling with beta binomial distribution
  • Transition from lattice to ggplot2
  • Code on covariates removed from the complete package
  • cNORM-Demo vignette revised
  • code simplification in plotting functions, parameters removed
  • new parameter to plot raw scores in plotPercentiles (default FALSE)
  • 'buildCnormObject' function added to help with compatibility (joins data and model to cnorm object)
  • cNORM.GUI() updated
  • datasets life, mortality and EPM removed
  • performance optimization

Version in 3.1.0

Date: 2024.07.19

Changes:

  • Added parametric continuous norming with beta binomial family and new functions betaCoefficients, betaTable, betaByGroup and betaContinuous; beware - still experimental (Jan. 2024)
  • Fixed bug in bestModels function when predictors are specified

Version in 3.0.4

Date: 2023.10.08

Changes:

  • Added warning in 'cnorm' in case, both age and group is specified
  • extended cnorm.cv for use of weights and sliding window
  • added silent option to several functions to reduced the number of messages
  • revised function documentation

Version in 3.0.3

Date: 2023.05.22

Changes:

  • fixed regression bug in the internal predictNormByRoots-function for R4.3.0
  • added new references
  • new results in printSubset and plotSubset: F-tests on consecutive models
  • internal improvements in calcPolyInLBase2 for retrieving regression function coefficients at specific age. This speeds up norm score retrieval by 40%, leading to vast performance improvements in large datasets and in cross validation by cnorm.cv
  • Added WPS publisher as a funder. WPS helped financing the weighting procedure for post stratification based on iterative proportional fitting ("Raking")
  • citeEntry replaced by bibentry in inst/citation

Version in 3.0.2

Date: 2022.08.18

Changes:

  • fix for bug in normTable function when ranking order is reversed
  • added option to apply conventional norming in 'cnorm' by leaving out the grouping variable
  • extended plotPercentiles, plotNorm and plotRaw for usage with conventional norming
  • vignette extend for explaining conventional norming

Version in 3.0.1

Date: 2022.04.11

Changes:

  • t parameter added to data preparation in the shiny GUI
  • default paremeters in cnorm now k = 5 and t = 3
  • error in shiny GUI corrected: Download data
  • WeigtedRegression vignette extended
  • Additional descriptive information in modeling when using weights
  • Vignette cNORM-Demo revised

Version in 3.0.0

Date: 2022.03.28

Changes:

  • Major version: Includes weighting functions to overcome biased norm samples, by providing marginal means factor levels of stratification variables in the population as a data frame New function: computeWeights()
  • Newly developed, highly performant and unbiased weighted ranking procedure
  • New vignette: 'WeightedRanking'
  • Modelling returns info on range of weights if post stratification is used
  • automatically remove cases with missings in 'cnorm' function
  • ppvt dataset exchanged with unstratified sample with additional background variables (migration, region, sex)
  • Documentation updated
  • Author sequence changed. Alex is now first and corresponding author. Please direct questions to lenhard@psychometrica.de
  • minor changes: if(class(x) == "cnorm") exchanged with if(inherts(x, "cnorm")) throughout package

Version in 2.1.1

Date: 2021.10.13

Changes:

  • normList parameter in plotNormCurves not working in non T score scales fixed
  • lower CI not reported correctly in normTable and rawTable corrected
  • documentation in normTable and rawTable extended
  • internal prettyPrint function corrected; now it displays interval in the middle of the tables correctly in rawTable and normTable function

Version in 2.1.0

Date: 2021.08.10

Changes:

  • add remarks on decrease of age power parameter in computePowers when R2 is low
  • add parameter for powers of a in computePowers, prepareData, bestModel and cnorm
  • predictNorm is now able to handle NA
  • count, how often terms had been selected in cnorm.cv
  • pretty print option added to normTable and rawTable to collapse intervals and round to meaningful precision
  • Bug corrected in normTable when using age vector to compute series of norm tables

Version in 2.0.4

Date: 2021.07.24

Changes:

  • Fixed bug in setting getNormScoreSE and added option to calculate RMSE (now default)
  • Corrected y axis label in plotDerivative
  • changes header in plotNorm from SE to RMSE
  • exceptions catched in predictNorm

Version in 2.0.3

Date: 2021.04.10

Changes:

  • Fixed bug in setting minNorm and maxNorm in predictNorm, if attribute is missing
  • Aligned function in predictNorm for single scores and vectors
  • Code simplification
  • suboptimal model selection when leaps.setups dependencies found; bug fixed

Version in 2.0.2

Date: 2021.01.30

Changes:

  • Fixed bug in rankBySlidingWindow due to ranking
  • New function for building groups and assign group means: getGroups
  • display errors fixed in plotPercentiles, function optimized
  • Fixed regression: Clipping of minRaw and maxRaw in predictRaw

Version in 2.0.1

Date: 2021.01.05

Changes:

  • Fixing errors in the context of weighted percentile modelling
  • Code change of weighted rank estimation from https://aakinshin.net/posts/weighted-quantiles/ code by Andrey Akinshin
  • Additional message for plotting, when weighted percentiles are used
  • Use weighted percentiles in plotPercentiles
  • automatic weighting deactivated in bestModel, since it is already applied in ranking
  • suppressWarnings in weighted ranking

Version in 2.0.0 (release)

Date: 2020.12.04 Version 2.0.0 features many fundamental improvements both relating to the procedure but as well to the package itself. It introduces weighted percentiles and thus helps in correcting violations of representativeness in the norm sample. There is a new main function 'cnorm()' that returns a cnorm object. Most functions now accept this cnorm object and do not require separate data objects and statistical models. And finally S3 methods plot(), summary() and print() have been introduced.

Changes:

  • Preparing for next major release with complete redesign of S3 method structure and weighting
  • New function cnorm() that does all the data preparation and modelling in one step It returns a cnorm object, which can be used in all model check, plotting and prediction functions
  • New S3 functions: print, plot, summary
  • Vignette revised
  • All functions have been extended to accept a cnorm object instead of data and / or model
  • prepareData, rankByGroup and rankBySlidingWindow no have the option to provide a weighting parameter to compensate for imbalances. The percentiles are weighted accordingly. The weighted ranking is based on an adaption of wtd.rank of the Hmisc package, provided by the courtesy of Frank Harrell
  • bestModel automatically uses the weighting parameter from the ranking (if applied)
  • prepareData, rankByGroup and rankBySlidingWindow can now directly handle vectors instead of a data frame, e. g. rankByGroup(raw = elfe$raw, group = elfe$group)
  • If no group is provided and only a raw vector is present e.g. ranByGroup(raw=elfe$raw), traditional ranking of a single group is done
  • Power parameter k added to prepareData
  • New convenience function modelSummary
  • New method getNormScoreSE added: Compute SE for regression based norm scores sensu Oosterhuis van der Ark & Sijtsma (2016)

Version in 1.2.4 (release)

Date: 2020.10.14

Changes:

  • Improvements in Shiny GUI: download buttons for data and model, introduction page, CI for norm tables
  • Descending order bugs corrected in Shiny GUI
  • Option to automatically compute confidence intervalls in rawTable() and normTable() via CI and reliability parameters
  • repeated cross validation cnorm.cv now calculates RMSE for norm scores
  • repeated cross validation cnorm.cv can now use a prespecified formula
  • data cleaning in output of cnorm.cv

Version in 1.2.3 (release)

Date: 2020.06.18

Changes:

  • Error in citation fixed
  • Improved explanations in the Shiny GUI
  • Additional 'Update'-Buttons in norm and raw scores plot in visualization tab of shiny gui
  • removed unnecessary import askYesNo
  • spell checking in diverse function descriptions
  • correction for monotonicity in rawTable and normTable (now default)
  • predictRaw can now return matrices for list of norm x age
  • new dataset added on the basis of the EPM paper
  • Bug in plotPercentiles fixed for datasets with descending ranking order
  • 'descend' parameter added to prepareData
  • rawTable can now return matrices

Version in 1.2.2 (fifth release)

Date: 2019.09.18

Changes:

  • Error in rankByGroup and rankBySlidingWindow when covariate variable name was used
  • warning added to rankBySlidingWindow in case, age and group do not correspond
  • rankBySlidingWindow accepts age variable in addition to age variable name
  • plotPercentiles now allows plotting both degrees of binary covariate
  • code cleaning in plotPercentiles
  • bestModel automatically does plotPercentiles if parameter plot set to TRUE
  • Citation file added

Version in 1.2.1

Date: 2019.08.01

Changes:

  • prepareDate issues warnings if age and group values do not relate
  • modified message in bestModel function if R2 is not reached
  • if R2 and terms are not specified in bestModel function, fall back to model 5 in case R2 does not reach .99 in most complex model
  • Additional message in bestModel in case of high number of terms
  • Code simplification in computePowers by using 'poly' function
  • Performance improvement and code cleaning in checkConsistency
  • Multiple R2 output added to computePowers
  • new option to add index labels to data points in plotSubset
  • cnorm.cv now respects sliding window ranking
  • silent parameter added to prepareData and computePowers
  • rankBySlidingWindo and rankByGroup add width parameter to data preparation
  • pCutoff in cnorm.cv now adjusts for sample size

Version in 1.2.0 (fourth release)

Date: 2019.07.26

Changes:

  • Preparing for the inclusion of a binary covariate. The package is been rewritten by larger parts NOTE: The inclusion of a covariate is currently still experimental and not optimized. Please use carefully! If covariates are central for your research question, consider packages like GAMLSS or quantreg
  • Entering systematic testing
  • BUG fixed: retrieving normtables and norm scores in large datasets could produce outlier (hashing function to remove duplicates was flawed)
  • Corrected keywords for datasets

Version in 1.1.9

Date: 2019.07.07

Changes:

  • weighting added to bestModel-function
  • cast to data.frame in prepareData method to prevent SPSS import failing
  • Ordering of raw table when using descending values
  • Warning message added to computePowers function in case the multiple R2 between the explanatory variable and the raw score is below .05; modelling norm scores in dependence of age is questionable in that case
  • prepareData, rankByGroup and rankBySlidingWindow now accept variables instead of variable names as well
  • rankByGroup and rankBySlidingWindow display warning in case of small groups

Version in 1.1.8 (Third release to CRAN)

Date: 2019.03.15 (mainly testing and cleaning minor errors)

Changes:

  • fixing exceptions
  • group and age can now be deactivated, resulting in conventional norming procedure, based in ranking + regression over powers of L

Version in 1.1.7

Date: 2019.02.28

Changes:

  • bestModel function now accepts a formula as a predictors object
  • plotPercentile now accepts descending ranking
  • rawTable and normTable adapted for descending values
  • rangeCheck prints additional information
  • Leaner GUI with more options
  • predictNorm now much faster through using lookup tables, large speed gains as well for depending functions
  • Setting age = FALSE in computePowers prevents computation of powers of age and interactions. All plotting and modelling functions changed accordingly. cNORM in this case models norm score tables simply based on regression without computing different groups
  • normTable automatically chooses default values for minNorm, maxNorm and step

Version in 1.1.6

Date: 2019.02.07, third release on CRAN

Changes:

  • Improvement to cv function in GUI and in package

Version in 1.1.5

Date: 2019.02.06, third release on CRAN

Changes:

  • Cross Validation added to shiny GUI
  • cnorm.cv documentation improved
  • added information to BestModel output

Version in 1.1.4

Date: 2018.12.18

Changes:

  • scale parameter added to prepareData function
  • fix for plotNorm by group with missing values

Version in 1.1.3 - Second release on CRAN

Date: 2018.12.09

Changes:

  • rmarkdown moved from imports to suggests
  • cnorm.cv info added to README

Version in 1.1.2

Date: 2018.12.08

Changes:

  • deleted code in vignette needing to much build time
  • removed UTF-8 attributes from ppvt dataset and cleared all datasets from non ASCII signs
  • deleted code in vignette needing to much build time
  • additional tests run on R-hub
  • added rmarkdown to imports

Version in 1.1.1

Date: 2018.12.01

Changes:

  • Parameters added to cv.norm: Significance level for stratification process
  • Additional plot in cv.norm: delta R2 in norm score validation
  • Example in readme improved
  • CDC data: group variable set to center of interval
  • descend parameter removed from plotPercentileSeries, plotPercentiles, checkConsistency, rawTable & normTable; instead take default from model; vignette updated accordingly
  • stop criterion added to data sampling in cnorm.cv
  • cv.norm: lines added to R2 delta plot
  • normTable and rawTable can now produce list of tables

Version in 1.1.0

Date: 2018.11.23

Changes:

  • Cross validation added: new function: cnorm.cv() for assessing RMSE for raw data and R2 and CROSSFIT for norm data
  • Data table output for cnorm.cv
  • rankBySlidingWindow now accessible via prepareData()
  • group, raw, age and width can now be provided in cnorm.cv
  • parameter for full cross validation (separate ranking for train and validation)
  • Additional NA checks and warning messages
  • plotPercentiles now with R2adjr in title

Version in 1.0.3

Date: 2018.11.16

Changes:

  • Additional instruction on series section of visualization tab in Shiny GUI
  • Code cleanup in bestModel function
  • SE added to plotNorm based on Oosterhuis, van der Ark & Sijtsma (2016)
  • RMSE added to model object (m$subsets), to plotRaw and to plotSubset
  • additional plotting options added to GUI:
    • plotting of differences in raw and norm plot
    • RMSE in model selection information function

Version in 1.0.2

Date: 2018.11.16

Changes:

  • Improvements in precision of plotPercentiles
  • error corrected in ppvt dataset: groups did not represent group means
  • function description in 'ranBySlidingWindow' updated
  • checking for missing packages in shiny GUI improved
  • user menu asking to install missing packages added
  • derive-function: more general approach with "order" parameter
  • plotDerivative function can now plot derivatives of higher order
  • exclude cases with missing values in rankByX functions
  • percentile columns added to rawTable and normTable
  • additional data cleansing for data objects imported from Excel file format

Version in 1.0.1 - First release on CRAN

Date: 2018.11.03

Changes:

  • Improvements in the GUI: Waiting circle shown to indicate ongoing computation
  • Additional help texts on best model in GUI
  • Additional plotting options in cNORM.GUI(): Raw Score and Norm Score plots
  • User input asking for missing suggested packages to install

Version in 1.0.0

Date: 2018.10.26

Changes:

  • Final polishing finished; releasing first major version

Version in 0.9.20

Date: 2018.10.24

Changes:

  • GUI with Shiny finished
  • ... now working on finally releasing the package

Version in 0.9.19

Date: 2018.10.20

Changes:

  • API changed: predictNormValue renamed to predictNorm
  • Shiny GUI enhanced
  • Additional plotting options in plotNorm and plotRaw
  • less strict warning messages in predictNormValue function and checkConsistency

Version in 0.9.18

Date: 2018.10.08

Changes:

  • First shiny prototype (many thanks to Sebastian Gary); please use cNORM.GUI() to start user interface

Version in 0.9.17

Date: 2018.10.01

Changes:

  • predictNormValue fixed and optimized (many thanks to Sebastian Gary)
  • API change with respect to predictNormValue, rawTable and plotNorm
  • plotNorm: norm score boundaries guessed by min and max score from modelling

Version in 0.9.16

Date: 2018.09.21

Changes:

  • bug in predictNormValue partly fixed (further optimization necessary)
  • API change: plotValues renamed to plotRaw
  • new function: plotNorm

Version in 0.9.15

Date: 2018.09.18

Changes:

  • plotDensity function added
  • attributes added to data.frame to increase usability

Version in 0.9.13

Date: 2018.09.16

Changes:

  • predictNormValue with higher precision and effectivity
  • rawTableQuick removed from source code

Version in 0.9.12

Date: 2018.09.11

Changes:

  • 'simulateRasch' to simulate test data was added
  • old sim functions removed
  • documentation improved
  • new parameters to bestModel in order to force covariates into regression
  • additional checks in box cox functions

Version in 0.9.9

Date: 2018.09.06

Changes:

  • Enhancements to the 'prepareData' function

Version in 0.9.8

Date: 2018.09.05

Changes:

  • Life expectancy dataset of the World Bank added
  • Mortality of infants per 1000 life birth from 1960 to 2017 added
  • Minor changes in functions to check data integrity and exceptions
  • Vignette updated

Version in 0.9.7

Date: 2018.08.31

Changes:

  • License changed to AGPL
  • Capitalizations in labels of plots
  • min and max renamed to minRaw and maxRaw (where appropriate)
  • terminology: standard or normal score instead of norm; score instead of value
  • new function for model validation: plotPercentileSeries
  • many functions now draw the default values from the model (plotting and predicting)

Version in 0.9.6

Date: 2018.08.28

Changes:

  • Minor improvements in function descriptions
  • API of plotSubset changed due to new plotting options

Version in 0.9.5

Date: 2018.08.25

Changes:

Version in 0.9.4

Date: 2018.08.23

Changes:

  • Generating group variable in rankBySlidingWindow
  • parameters in plotPercentile to restrict age range
  • ppvt dataset restricted

Version in 0.9.3

Date: 2018.08.20

Changes:

  • plotNormCurves enhanced (Thanks to Sebastian Gary)
  • new function to plot semi parametric analyses via box cox power transformation: plotBoxCox
  • variable "explanatoryVariable" and "normVariable" in computePowers function renamed for easier API

Version in 0.9.2

Date: 2018.08.18

Changes:

  • Additional dataset: vocabulary development (PPVT4)

Version in 0.9.1

Date: 2018.08.16

Changes:

  • Added predictRawBC and predictNormBC for computing norm and raw values based on the parametric box cox power function parameters
  • New contributor: Sebastian Gary, welcome to the team!
  • Missing raw variable definition in plotValues corrected

Version in 0.9.0

Date: 2018.08.14

Changes:

  • Box Cox power transformation for regression model at specific age: optional parametric modelling for non-parametric regression model

Version in 0.8.9

Date: 2018.08.13

Changes:

  • Convenience method for selection best model added: 'printSubset'
  • predictNormValue now accepts lists of values as well

Version in 0.8.8

Date: 2018.08.12

Changes:

  • parameter checks added
  • new parameter 'descriptives' added to rankByGroup and rankBySlidingWindow added to retrieve descriptive statistics for each observation
  • improvements in the documentation
  • errors in bestModel and plotPercentiles corrected, when variable names are not as in example sample

Version in 0.8.6

Date: 2018.08.11

Changes:

  • new function: 'rankBySlidingWindow' which can be used for data sets with continuous age variables
  • error corrected for data being loaded from SPSS files
  • improvements in the documentation

Version in 0.8.5

Date: 2018.08.06

Changes:

  • new function for simulating data

Version in 0.8.3

Date: 2018.08.03

Changes:

  • Code cleaning and formatting

Version in 0.8.2

Date: 2018.08.02

Changes:

  • new internal function: rawTableQuick for speeding up generating norm tables Still has to be checked for working with descending values. Works only, if model assumptions are valid

Version in 0.8.0

Date: 2018.08.01

Changes:

  • new function: rawTable allows creating norm tables with assignment of raw -> norm values solves inverse function of regression model with brute force

Version in 0.7.11

Date: 2018.07.31

Changes:

  • improved 'prepareData' function

Version in 0.7.10

Date: 2018.07.28

Changes:

  • Description for computePowers improved
  • option in plotPercentile to use percentile scale or self defined c(mean, sd)

Version in 0.7.9

Date: 2018.07.28

Changes:

  • 'descend' parameter added to consistencyCheck and normTable
  • dependency rColorBrewer removed; plotPercentiles changed accordingly
  • latticeExtra moved to 'suggests'

Version in 0.7.8

Date: 2018.07.27

Changes:

  • 'descend' parameter added to consistencyCheck and normTable

Version in 0.7.7

Date: 2018.07.27

Changes:

  • Small changes to error messages in bestModel
  • printing of min value in plotDerivate removed

Version in 0.7.6

Date: 2018.07.27

Changes:

  • parameter 'predictors' added to allow self defined regression functions, e. g. for the inclusion of other ranking parameters like sex
  • 'type' parameter added to 'plotPercentile' to allow selection of quantile algorithm. Please consult help(quantile) for further information on 'type'

Version in 0.7.5

Date: 2018.07.26

Changes:

  • dependency dplyr removed: rankByOrder and plotPercentiles rewritten
  • API-change: derivationPlot renamed to plotDerivate
  • small changes to vignette and readme
  • parameter "raw" added to rankByGroup to specify raw value variable
  • rawVar and groupVar in plotPercentiles renamed to raw and group to make API more coherent

Version in 0.7.4

Date: 2018.07.25

Changes:

  • rankByOrder: ranking in descending order added

Version in 0.7.3

Date: 2018.07.25

Changes:

  • Additional ranking algorithms: Filliben, Levenbach, Yu & Huang; API changed to index
  • scale can be specified as double vector with c(mean, sd)
  • vignette updated accordingly

Version in 0.7.2

Date: 2018.07.24

Changes:

  • None. This is the first release