Site menu:

Sprache auf englisch umschalten

cNORM - Generierung kontinuierlicher Testnormen

Alexandra Lenhard, Wolfgang Lenhard & Sebastian Gary

cNORM (A. Lenhard, Lenhard & Gary, 2018) ist ein R-Package, das kontinuierliche Testnormen für psychometrische und biometrische Daten generiert und die zugehörige Modellpassung überprüft. Ursprünglich wurde in cNorm ausschließlich ein Ansatz verwendet, der keine Annahmen über die konkrete Verteilungsform der Rohdaten macht (A. Lenhard, Lenhard, Suggate & Segerer, 2016). Seit Version 3.2 (2024) verfügt das Package aber auch über die Möglichkeit der parametrischen Modellierung mittels der Beta-Binomialverteilung.

cNORM wurde zwar spezifisch für psychometrische Leistungstests entwickelt (z. B. Wortschatzentwicklung: A. Lenhard, Lenhard, Segerer & Suggate, 2015; Schriftspracherwerb: W. Lenhard, Lenhard & Schneider, 2017). Das Package kann aber überall zum Einsatz kommen, wo psychische (z. B. Reaktionszeit), physische (z. B. Körpergewicht) oder andere Messwerte von kontinuierlichen (z. B. Alter, Beschulungsdauer) oder auch diskreten (z. B. Geschlecht, Testform usw.) explanatorischen Variablen abhängen. Außerdem kann das Package auch für „konventionelle” Normdatengenerierung bei einzelnen Gruppen verwendet werden, also ohne Modellierung in Abhängigkeit von explanatorischen Variablen.

Die Perzentilkurven werden mithilfe des Packages in Abhängigkeit von der explanatorischen Variable geschätzt. Dies geschieht entweder parametrisch auf der Basis der Beta-Binomialverteilung oder verteilungsfrei mithilfe von Taylor-Polynomen. Die mathematische Modellierung der Daten über kontinuierliche Variablen wie das Alter hat die folgenden Vorteile:

Die mathematischen Grundlagen der Anpassung mit Taylor-Polynomen finden Sie in der zugehörigen mathematischen Herleitung kurz beschrieben. Auch zur Anpassung auf Basis der Beta-Binomialverteilung gibt es eine genaue Beschreibung inkl. mathematischem Hintergrund.

Auf den folgenden Seiten zeigen wir Ihnen die notwendigen Schritte bei der Anwendung des R-Packages anhand von Daten aus dem ELFE 1-6 Leseverständnis (W. Lenhard et al., 2006) und dem PPVT-4 Wortschatztest (Deutsche Adaptation, A. Lenhard et al., 2015):

  1. Installation
  2. Datenaufbereitung
  3. Gewichtung
  4. Verteilungsfreie Modellierung
  5. Parametrische Modellierung
  6. Beispiele
  7. Anwendung mit grafischer Oberfläche oder Jamovi



Auf einen Blick

Im Folgenden finden Sie eine Kurzanleitung zur verteilungsfreien Modellierung mit den wesentlichen cNORM-Funktionen und - weiter unten - eine Kurzanleitung zur parametrischen Modellierung mittels der Beta-Binomialverteilung:

Verteilungsfreie Modellierung

## Beispielcode für die Modellierung eines Datensatzes

library(cNORM)

# Starten Sie die grafische Benutzeroberfläche (Shiny erforderlich).
# Die GUI enthält die wichtigsten Funktionen. Für spezielle Fälle
# verwenden Sie bitte cNORM auf der Konsole.

cNORM.GUI()

# Verwendung der Syntax in der Konsole: Die Funktion 'cnorm'
# führt alle Schritte automatisch durch. Bitte spezifizieren Sie
# die Rohwert- und die Gruppierungsvariable.
# Das resultierende Objekt enthält die gerankten Daten über object$data
# und das Modell über object$model.

cnorm.elfe <- cnorm(raw = elfe$raw, group = elfe$group)

# Darstellung der verschiedener Modellpassungen in Abhängigkeit von
# der Anzahl an Prädiktoren

plot(cnorm.elfe, "subset", type=0) # plot R2
plot(cnorm.elfe, "subset", type=3) # plot MSE

# HINWEIS: An dieser Stelle wählen Sie normalerweise ein gut
# passendes Modell aus und wiederholen den Prozess mit einer
# festen Anzahl an Termen, z. B. 4. Vermeiden Sie Modelle
# mit einer hohen Anzahl an Termen:

cnorm.elfe <- cnorm(raw = elfe$raw, group = elfe$group, terms = 4)

# Potenzen des Alters lassen sich über den Parameter 't' angeben.
# Meist reicht eine kubische Modellierung, d. h. t = 3.
# 'k' spezifiziert dagegen die Potenz der Personenlokation. Hier
# sollte der Parameter etwas höher gewählt werden, z. B. k = 5.

cnorm.elfe <- cnorm(raw = elfe$raw, group = elfe$group, k = 5, t = 3)

# Visuelle Inspektion der Perzentilkurven des angepassten Modells

plot(cnorm.elfe, "percentiles")

# Visuelle Inspektion der beobachteten und angepassten Roh- und Normwerte

plot(cnorm.elfe, "norm")
plot(cnorm.elfe, "raw")

# Um zu prüfen, wie andere Modelle abschneiden, erzeugen Sie eine Serie von
# Perzentilplots mit aufsteigender Anzahl von Prädiktoren, in diesem
# Beispiel zwischen 5 und 14 Prädiktoren.

plot(cnorm.elfe, "series", start=5, end=14)

# Kreuzvalidierung zur Auswahl der geeigneten Anzahl an Termen mit 80 %
# der Daten für das Training und 20 % für die Validierung. Aufgrund der
# Zeitintensität ist im Beispiel die maximale Anzahl an Termen auf 10
# beschränkt. Das Ziehen von Daten wird 3 Mal wiederholt.

cnorm.cv(cnorm.elfe$data, max=10, repetitions=3)

# Kreuzvalidierung mit vordefinierten Termen eines bereits
# bestehenden Modells

cnorm.cv(cnorm.elfe, repetitions=3)

# Normtabelle erstellen für 0, 3 oder 6 Monate in der 3. Klassenstufe
# (Achtung: Die Daten sind so kodiert, dass 3.0 den Anfang und 3.5
# die Mitte des dritten Schuljahres repräsentiert)

normTable(c(3, 3.25, 3.5), cnorm.elfe)

# Umgekehrt: Darstellung der Rohwerttabelle für 3. Klassenstufe, 0 Monate
# mit 90%-Konfidenzintervallen für einen Test mit einer
# Reliabilität von .94.

rawTable(3, cnorm.elfe, CI = .9, reliability = .94)



Parametrische Modellierung mittels Beta-Binomialverteilung:

library(cNORM)

# cNORM kann Normdaten auch mittels der Beta-Binomialverteilung
# modellieren. Dieser Ansatz ist vor allem bei solchen Testverfahren
# effektiv, die eine feste Anzahl an dichotomen Items und eine
# kontinuierliche Verteilung der Itemschwierigkeiten aufweisen.

model.betabinomial <- cnorm.betabinomial(ppvt$age, ppvt$raw)


# Auch hier kann die Genauigkeit der Anpassung verändert werden, indem
# die Potenzen für die Kurvenanpassungen von α und β
# verändert werden:

model.betabinomial <- cnorm.betabinomial(ppvt$age, ppvt$raw, alpha = 4)


# Perzentileverläufe und Passung der manifesten und modellierten
# Normwerte plotten

plot(model.betabinomial, ppvt$age, ppvt$raw)
plotNorm(model.betabinomial, ppvt$age, ppvt$raw, width = 1)


# Fit-Statistiken ausgeben:

summary(model.betabinomial)

# Vorhersage der Normwerte für neue Messwerte und Erstellung von
# Normtabellen

predict(model.betabinomial, c(8.9, 10.1), c(123, 98))

tables <- normTable.betabinomial(model.betabinomial, c(2, 3, 4),
          reliability=0.9)



Konventionelle Normierung:

library(cNORM)

# Anwendung von cNORM für die Generierung konventioneller Normen für eine
# spezifische Altergruppe (in diesem Fall Altersgruppe 3)

data <- elfe[elfe$group == 3,]
cnorm(raw=data$raw)



Anleitungen in cNORM aufrufen:

library(cNORM)
# Vignette aufrufen

vignette("cNORM-Demo", package = "cNORM")
vignette("WeightedRegression", package = "cNORM")
vignette("BetaBinomial", package = "cNORM")



Installation


Nutzung von cNORM/Lizensierung

cNORM ist unter GNU Affero General Public License v3 (AGPL-3.0) lizensiert. Dies bedeutet, dass urheberrechtlich geschützte Teile von cNORM in kommerziellen und nicht-kommerziellen Projekten nur dann kostenlos verwendet werden dürfen, sofern die Projekte ebenfalls unter AGPL stehen, den eigenen Source-Code verfügbar machen und cNORM korrekt zitieren. Dies betrifft z. B. die Vervielfältigung und Verbreitung von Quellcode oder von Teilen des Quellcodes von cNORM oder von mit cNORM erstellte Grafiken. Auch die Einbindung des Paketes in eine Serverumgebung, um auf die Funktionalität der Software zugreifen zu können (z. B. für online-Abfragen von Normen), unterliegt dieser Lizenz. Eine mit cNORM ermittelte Regressionsfunktion unterliegt hingegen keinem urheberrechtlichen Schutz und darf für kommerzielle oder nicht kommerzielle Projekte frei verwendet werden. Falls Sie cNORM in einer Weise einsetzen möchten, die nicht mit den Bedingungen der AGPL-3.0-Lizenz vereinbar ist, dann kontaktieren Sie uns gerne, um individuelle Bedingungen auszuhandeln.

Sollten Sie cNORM für wissenschaftliche Publikationen einsetzen wollen (hierzu zählen auch psychometrische oder biometrische Testverfahren), dann bitten wir außerdem um Quellenangabe.


Literaturangaben

CDC (2012). National Health and Nutrition Examination Survey: Questionaires, Datasets and Related Documentation. verfügbar unter: https://wwwn.cdc.gov/nchs/nhanes/OtherNhanesData.aspx (date of retrieval: 25/08/2018)
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. https://doi.org/10.1371/journal.pone.0222279
Lenhard, A., Lenhard, W., Segerer, R. & Suggate, S. (2015). Peabody Picture Vocabulary Test - Revision IV (Deutsche Adaption). Frankfurt a. M.: Pearson Assessment.
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
Lenhard, W., Lenhard, A. & Schneider, W. (2017). ELFE II - Ein Leseverständnistest für Erst- bis Siebtklässler. Göttingen: Hogrefe.
Lenhard, W. & Schneider, W. (2006). ELFE 1-6 - Ein Leseverständnistest für Erst- bis Sechstklässler. Göttingen: Hogrefe.
Lenhard, W., & Lenhard, A. (2020). Improvement of Norm Score Quality via Regression-Based Continuous Norming. Educational and Psychological Measurement, Online First, 1-33. https://doi.org/10.1177/0013164420928457



Zitierfähige Quelle für dieses Tutorial:

Lenhard, A., Lenhard, W. & Gary, S. (2024). cNORM - Generierung kontinuierlicher Testnormen (Revision). Abgerufen unter: https://www.psychometrica.de/cNorm.html. Dettelbach: Psychometrica. https://doi.org/10.13140/RG.2.2.25821.26082