cNORM funktioniert in vielen Anwendungsszenarien "out of the box", v. a. bei einer hinreichend großen Datenmenge und einer genügend großen Varianzaufklärung der explanatorischen Variablen (also beispielsweise einem deutlichen Alterstrend). Es gibt jedoch auch Fälle, die schwieriger zu handhaben sind. Wir raten in jedem Fall dazu, die generierten Lösungen auf Plausibilität zu prüfen und die Parameter falls nötig "manuell" nachzujustieren. Ähnlich wie bei Faktorenanalysen ist die Modellauswahl ein mehrstufiger Prozess, bei dem i. d. R. verschiedene Modelle durchgerechnet und hinsichtlich unterschiedlicher Gütekriterien miteinander verglichen werden müssen. Im Fall von cNorm gibt es vor allem drei Gütekriterien, nämlich die Varianzaufklärung, die Einfachheit des Modells sowie die Modellplausiblität bzw. -konsistenz. Letztere muss in der Regel vor allem an den Modellrändern beachtet werden.
Kurz zusammengefasst:
Bei der Modellierung kann es v. a. in den Extrembereichen, bei starken Boden- oder Deckeneffekten oder im Fall einer Überanpassung zu inkonsistenten Modellen kommen. Diese äußern sich beispielsweise darin, dass sich die Linien der Perzentile überschneiden ('plotPercentiles') oder dass in der Modellierung eine entsprechende Warnung ausgegeben wird ('checkConsistency').
Mögliche Lösungen:
# Darstellung der Perzentile
plotPercentiles(data, model) # Darstellung des aktuellen Modells
plotPercentileSeries(data, model) # Darstellung einer Reihe an Modellen
Die Frage, ob man für verschiedene Personengruppen einer Population (z. B. Männer versus Frauen, Personen mit hoher versus niedriger Bildung ...) getrennte Normen generieren sollte, geht über die rein statistische Modellierbarkeit der Daten hinaus. Bitte überlegen Sie, ob eine solche Unterscheidung für Ihren Anwendungszweck überhaupt sinnvoll ist oder nicht.
Mögliche Lösungen:
# Einbezug einer Kovariaten am Beispiel der PPVT4-Daten
# (1 = Jungen, 2 = Mädchen)data1 <- rankByGroup(PPVT, group="group", raw="raw", covariate="sex")
data1 <- computePowers(data1)
model <- bestModel(data1)
plotPercentile(data1, model, covariate = 1) # Ausprägung der Kovariaten muss angegeben werden# Häufig setzen sich Kovariaten in der Modellierung nicht durch und
# werden aussortiert. Aufnahme der Kovariaten und aller Interaktionen
# in das Model erzwingen (was aber zu instabilen Modellen führen
# könnte):model <- bestModel(data1, force.in = c("COV", "L1COV", "A1COV", "L1A1COV"))
# Basierend auf Ihren theoretisch motivierten Erwartungen zum Einfluss der
# Kovariaten, können Sie auch spezifische Terme der Kovariaten spezifizieren,
# z. B. einen linearen Term und die Dreifachinteraktion:model <- bestModel(data1, force.in = c("COV", "L1A1COV"))
# Darstellung der Modelle nebeneinander:
c(plotPercentiles(data1, model, covariate = 1),
plotPercentiles(data1, model, covariate = 2))
Unsere Simulationen weisen darauf hin, dass ab einer Gruppengröße von 50 Fällen pro Altersgruppe sehr reliable Modelle berechnet werden können (siehe Abbildung), vielleicht auch darunter. Wichtiger als eine besonders große Fallzahl ist bei cNorm, dass die Gesamtstichprobe möglichst repräsentativ ist. (Bitte beachten Sie, dass Stichproben mit steigender Fallzahl nicht automatisch repräsentativer werden!) Wird die Fallzahl allerdings zu klein gewählt, dann reduziert sich nicht nur die Power der angewandten statistischen Verfahren, sondern es wird auch schwierig, die Stichprobe hinsichtlich aller relevanten Merkmale zu stratifizieren. Zudem spielt auch die Anzahl an Altersgruppen und die Stärke des Einflusses der explanatorischen Variablen eine Rolle.
cNORM ist zwar in der Lage, kleinere Verletzungen der Repräsentativität oder geringe Fallzahlen in einzelnen Altersgruppen teilweise zu kompensieren, da die Modelle auf der Basis des gesamten Datensatzes berechnet werden. Dennoch sollte bei der Normierung eines Testverfahrens auf eine sehr hochwertige Datengrundlage geachtet werden.
Mögliche Lösung:
Seit Version 1.1.8 prüft cNORM in der Datenvorbereitung (Funktionen 'prepareData' und 'computePowers') automatisch mittels einer polynomialen Regression (bis zum Powerparameter k) den Anteil aufgeklärter Varianz durch die explanatorische Variable. Es werden also nicht nur lineare, sondern auch komplexere Zusammenhänge erfasst, üblicherweise bis zur vierten Potenz (Grundeinstellung). Liegt nur ein kleiner Zusammenhang zwischen der explanatorischen Variablen und den Rohwerten vor, so wirft cNORM eine Warnmeldung aus. Es stellt sich in diesem Fall die Frage, ob der Einbezug der explanatorischen Variablen in die Berechnung der Normen wirklich sinnvoll ist oder ob nicht beispielsweise eine einzelne Normtabelle ausreicht. Bei einer niedrigen Varianzaufklärung der explanatorischen Variablen kann es bisweilen vorkommen, dass die Modelle nicht sehr stabil sind und dass die voreingestellte Varianzaufklärung des Gesamtmodells von R2 = .99 nicht erreicht wird.
Mögliche Lösungen:
Das Modell weist wahrscheinlich einen Overfit auf, z. B. weil die Varianzaufklärung der explanatorischen Variable nicht sehr hoch ist, zu viele Prädiktoren verwendet wurden, die Skala generell nicht reliabel misst, starke Verletzungen der Repräsentativität in einzelnen Normgruppen vorliegen, usw... Meist ist es die Folge zu kleiner Fallzahlen in den Stichproben, wie z. B. im obigen Beispiel mit n ≤ 50. Möglicherweise kommt das cNORM-Package im konkreten Fall auch an die Grenze seiner Leistungsfähigkeit. Bitte beachten Sie die Lösungsvorschläge des vorangegangenen Punktes. Meist empfiehlt es sich, ein einfacher strukturiertes Modell mit weniger Termen zu verwenden.
Mögliche Lösungen:
Reuziert man im obigen Beispiel den k-Parameter auf k=3, ergibt sich folgendes Model:
Wenn Sie für die Datenvorbereitung die Funktion 'prepareData' verwenden und dabei sowohl eine Gruppierungsvariable, eine kontinuierliche Altersvariable als auch die Breite des Altersfensters (Parameter 'width') angeben, dann wird das Ranking mittels eines gleitenden Fensters vorgenommen. Sie können stattdessen auch die Funktion 'rankBySlidingWindow' und anschließend 'computePowers' verwenden. Damit die Modellierung funktionieren kann, muss allerdings die Gruppierungs- mit der Altersvariablen korrespondieren. Das bedeutet: Die Werte der Gruppierungsvariablen sollten das mittlere Alter der jeweiligen Altersgruppe wiederspiegeln.
Mögliche Lösungen:
# Erzeugung einer konsistenten Gruppierungsvariable mit
# beispielsweise 4 Gruppen auf der Basis des Altersdata1 <- rankBySlidingWindow(data, age=data$age, width = 1, nGroups = 4)
Sowohl beim Ranking als auch in der Modellberechnung mit 'bestModel' kann mit dem Parameter 'weights' eine Gewichtung der Fälle vorgenommen werden. cNORM beinhaltet mit computeWeights() eine Funktion zur Post-Stratifikation der Daten auf der Basis von Raking. Hierdurch kann der Effekt unbalancierter Normstichproben reduziert werden. Bitte beachten Sie hierzu die Vignette "Weighted regression".
![]() |
Jamovi |
Überblick |
![]() |