cnorm {cNORM}R Documentation

Continuous Norming


Conducts continuous norming in one step and returns an object including ranked raw data and the continuous norming model. Please consult the function description ' of 'rankByGroup', 'rankBySlidingWindow' and 'bestModel' for specifics of the steps in the data preparation and modeling process. In addition to the raw scores, either provide

for the ranking of the raw scores. You can adjust the grade of smoothing of the regression model by setting the k and terms parameter. In general, increasing k to more than 4 and the number of terms lead to a higher fit, while lower values lead to more smoothing.


  raw = NULL,
  group = NULL,
  age = NULL,
  width = NA,
  weights = NULL,
  scale = "T",
  method = 4,
  descend = FALSE,
  k = 4,
  terms = 0,
  R2 = NULL



Numeric vector of raw scores


Numeric vector of grouping variable, e. g. grade


Numeric vector with chronological age, please additionally specify width of window


Size of the moving window in case an age vector is used


Vector or variable name in the dataset with weights for each individual case. It can be used to compensate for moderate imbalances due to insufficient norm data stratification. Weights should be numerical and positive. Please note, that this feature is currently EXPERIMENTAL and subject to ongoing work! Precision of weighting increases with sample size. On the other hand, in large samples, it is easy to stratificate and then weighting is not needed anymore.


type of norm scale, either T (default), IQ, z or percentile (= no transformation); a double vector with the mean and standard deviation can as well, be provided f. e. c(10, 3) for Wechsler scale index points


Ranking method in case of bindings, please provide an index, choosing from the following methods: 1 = Blom (1958), 2 = Tukey (1949), 3 = Van der Warden (1952), 4 = Rankit (default), 5 = Levenbach (1953), 6 = Filliben (1975), 7 = Yu & Huang (2001)


ranking order (default descent = FALSE): inverses the ranking order with higher raw scores getting lower norm scores; relevant for example when norming error scores, where lower scores mean higher performance


The power constant. Higher values result in more detailed approximations but have the danger of over-fit (default = 4, max = 6)


Selection criterion for model building. The best fitting model with this number of terms is used


Adjusted R square as a stopping criterion for the model building (default R2 = 0.99)


cnorm object including the ranked raw data and the regression model


  1. Gary, S. & Lenhard, W. (2021). In norming we trust. Diagnostica.

  2. Lenhard, A., Lenhard, W., Suggate, S. & Segerer, R. (2016). A continuous solution to the norming problem. Assessment, Online first, 1-14. doi:10.1177/1073191116656437

  3. Lenhard, A., Lenhard, W., Gary, S. (2018). Continuous Norming (cNORM). The Comprehensive R Network, Package cNORM, available:

  4. Lenhard, A., Lenhard, W., Gary, S. (2019). Continuous norming of psychometric tests: A simulation study of parametric and semi-parametric approaches. PLoS ONE, 14(9), e0222279. doi:10.1371/journal.pone.0222279

  5. Lenhard, W., & Lenhard, A. (2020). Improvement of Norm Score Quality via Regression-Based Continuous Norming. Educational and Psychological Measurement(Online First), 1-33.

See Also

rankByGroup, rankBySlidingWindow, computePowers, bestModel


## Not run: 
# Using this function with the example dataset 'elfe'
cnorm.elfe <- cnorm(raw = elfe$raw, group = elfe$group)

# return norm tables including 90% confidence intervals for a
# test with a reliability of r = .85; table are set to mean of quartal
# in grade 3 (children completed 2 years of schooling)
normTable(c(2.125, 2.375, 2.625, 2.875), cnorm.elfe, CI = .90, reliability = .95)

# ... or instead of raw scores for norm scores, the other way round
rawTable(c(2.125, 2.375, 2.625, 2.875), cnorm.elfe, CI = .90, reliability = .95)

# Not really a plausible scenario, but just for demonstration purposes, we will
# use the PPVT dataset and sex as the weighting variable (1 = male, 2 = female),
# and consequently, females will get the double weight. This procedure can be used
# to correct imbalances in the dataset, but it is still experimental. Please use
# positive, non-zero numerics, preferably integers for this:
cnorm.ppvt <- cnorm(raw = ppvt$raw, group = ppvt$group, weight = ppvt$sex)

# Using a continuous age variable instead of distinct groups, using a sliding window for
# percentile estimation. Please specify continuos variable for age and the sliding window
# size.

cnorm.ppvt.continuous <- cnorm(raw = ppvt$raw, age = ppvt$age, width=1)

## End(Not run)

[Package cNORM version 2.0.3 Index]