Site menu:

Sprache auf englisch umschalten

cNORM - Beispiele



Im Folgenden möchten wir Ihnen ein paar weitere Beispiele zur Verwendung von cNORM vorstellen. Einige davon können Sie mit den bereits im Package enthaltenen Daten nachvollziehen. Installieren Sie hierfür zunächst cNORM und aktivieren Sie die Bibliothek.


Inhalt

  1. Modellierung des Leseverständnisses über die Klassen 2 bis 5
  2. Modellierung des Wortschatzes von 2 bis 17 Jahren
  3. Biometrie: Modellierung des BMI von 2 bis 25 Jahren
  4. Bearbeitungszeiten: Modellierung der Lesegeschwindigkeit über die Klassen 2 bis 5
  5. Abschlussbemerkung



1. Modellierung des Leseverständnisses über die Klassen 2 bis 5

Zuerst greifen wir noch einmal das auf den vorhergehenden Seiten bereits zugrunde gelegte Beispiel zur Modellierung des Leseverständnisses in Abhängigkeit von der Klassenstufe auf. Der mitgelieferte 'elfe'-Datensatz enthält lediglich eine Gruppierungsvariable 'group' und eine Rohwertvariable 'raw'. Die Gruppierungsvariable stellt in diesem Beispiel auch gleichzeitig die kontinuierliche explanatorische Variable dar, da die Normierungserhebung jeweils nur am Anfang und zur Mitte des Schuljahres stattfand. Die folgende Syntax stellt noch einmal den Verlauf der Modellierung dar:

# Der Datensatz 'elfe' ist bereits enthalten.
# Ermittlung der manifesten Perzentile und anschließende
# Normalrangtransformation zur Ermittlung der Lokation
# und anschließender Modellierung.

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

# Numerische Überprüfung der Bijektivität zwischen Rohwert und Normwert

checkConsistency(model.elfe)

# Darstellung der Varianzaufklärung nach Anzahl der Prädiktoren

plot(model.elfe, "subset", type=0)

# Darstellung der Perzentilbänder des besten Modells

plot(model.elfe, "percentiles")

# Alternativ kann auch eine ganze Serie von Darstellungen erzeugt werden,
# wobei die Anzahl an Prädiktoren jeweils um eins erhöht wird.
# Wenn keine weiteren Angaben gemacht werden, wird die Grafik auf tatsächlich
# vorkommende Rohwerte und Altersstufen begrenzt.

plot(model.elfe, "series")

Die Regressionsfunktion erreicht in diesem Beispiel mit nur drei Prädiktoren bereits eine Varianzaufklärung über 99%. Die Anforderung der Bijektivität ist innerhalb der gesamten Altersspanne erfüllt. Die Modellierung verläuft in diesem Beispiel also sehr einfach und unproblematisch.

In der Animation ist dargestellt, wie sich mit zunehmender Anzahl an Prädiktoren die modellierten Perzentile immer weiter den manifesten Daten annähern. Einerseits werden hierdurch die Originaldaten mit immer höherer Varianzaufklärung nachgebildet, andererseits sieht man auch, dass ab einer Anzahl von sechs Prädiktoren in den oberen und unteren Perzentilbändern Wellen auftreten. Diese Wellen sind Anzeichen für eine Überanpassung der Daten. Regressionsgleichungen mit über fünf Prädiktoren sollten deshalb für die vorliegenden Daten auf keinen Fall ausgewählt werden. Die Modelle mit drei, vier oder fünf Prädiktoren unterscheiden sich hinsichtlich der Varianzaufklärung nur minimal und stellen in etwa gleichermaßen gute Anpassungen des Datensatzes dar.
Vorsicht sollte man immer dann walten lassen, wenn das Modell auf Altersbereiche oder Lokationen angewandt werden soll, die nicht in den manifesten Daten vorkommen. Die Plausibilität der Perzentilverläufe sollte hier immer gut überprüft werden!

Zu guter Letzt lassen sich noch Normwerttabellen erzeugen. Hierbei kann gewählt werden, ob zu einer vorgegebenen Serie an Normwerten der Rohwert ausgegeben werden soll oder umgekehrt.

# Ausgabe der Normwerttabellen mit der jeweils gewünschten Genauigkeit

# Z. B. Ausgabe von Rohwerten zu einer vorgegebenen Serie an Norm-
# werten für den 9. Monat der 3. Klasse (explanatory variable = 3.75)

normTable(3.75, model.elfe, step=1, minNorm=25, maxNorm=75)

# Alternativ: Ausgabe von T-Werten zu einer Serie an Rohwerten

rawTable(3.75, model.elfe, step=1, minNorm=25, maxNorm=75, minRaw=0, maxRaw=28)


Output:
--------------

raw norm
1 0 25.0
2 1 25.0
3 2 25.0
4 3 25.0
5 4 25.2
6 5 26.8
7 6 28.5
8 7 30.2
9 8 31.9
10 9 33.6
... ... ...



2. Modellierung des Wortschatzes von 2 bis 17 Jahren

Als nächstes soll die Verwendung einer kontinuierlichen Altersvariablen demonstriert werden. Hierfür enthält das Package eine unselektierte Stichprobe aus der bundesweiten Erhebung eines Wortschatztests (Beispieldatensatz: 'ppvt'). Für die Ermittlung der Perzentile verwenden wir diesmal ein 'Sliding Window'. Außerdem wird als explanatorische Variable nicht die diskrete Gruppierungsvariable, sondern die kontinuierliche Altersvariable herangezogen:

# Verwendung des Datensatzes 'ppvt'
# Ermittlung der manifesten Perzentile und Normwerte mittels 'Sliding Window'
# Die Größe des Fensters beträgt hier 1.0 Jahre. Jeder Fall enthält
# hierdurch zusätzliche Angaben zur Größe der jeweils herangezogenen
# Stichprobe und zu deren Verteilungseigenschaften.

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

# Die Modell erreicht in der Grundeinstellung (k=5, t=3) mit 5 Termen
# eine Varianzaufklärung von über R2 > .99
# Der Output zeigt, dass hiermit eine hohe Varianzaufklärung.
#
# Darstellung der Varianzaufklärung und des Informationskriteriums
# Mallow's Cp

plot(model.ppvt, "subset", type=1)

# Prüfung der Grenzen der Modellvalidität mittles der Ableitung erster
# Ordnung nach der Lokation innerhalb des gesamten Altersbereichs. Die
# Steigung sollte keine Nullstelle aufweisen.

plot(model.ppvt, "derivative", minAge=2, maxAge=20, minNorm=20, maxNorm=80)

Tatsächlich enthält der Datensatz keine Probanden, die über 17 Jahre alt sind. Um die Modellvalidität auch über die untersuchte Altersgruppe hinaus überprüfen zu können, wurde der Altersbereich in der Darstellung jedoch bis 20 erweitert. Der orange-rote Bereich deutet auf sehr geringe Steigungen und deshalb auf einen Deckeneffekt hin. Verletzungen der Bijektivität bzw. unplausible Kurvenverläufe scheinen aber höchstens außerhalb des tatsächlichen Altersbereichs und/oder in sehr hohen Leistungsbereichen vorzukommen. Nichtsdestotrotz wird die Modellvalidität auch noch einmal numerisch überprüft:

# Numerische Prüfung des Modells auf Inkonsistenzen der Normwertverläufe

checkConsistency(model.ppvt)

# Ergebnis: Keine Nullstellen der Steigungen im tatsächlichen Altersbereich.

# Alle weiteren Schritte analog zu Beispiel 1

plot(data.ppvt, "percentiles", model.ppvt)
normTable(10.2, model.ppvt, step=1, minNorm=25, maxNorm=75) # Alter 10.2 Jahre

Der wesentliche Unterschied zwischen dem ersten und dem zweiten Beispiel liegt darin, dass hier eine kontinuierliche Altersvariable für die Normierung verwendet wurde. Bereits in der Ermittlung der manifesten Perzentile (rankBySlidingWindow) wurde nicht über eine Gruppierungsvariable, sondern kontinuierlich vorgegangen. Dementsprechend muss auch bei der Modellierung die kontinuierliche Altersvariable verwendet werden.

Auch in diesem Beispiel wird sehr schnell eine gute Passung erzielt. Setzt man - wie in der Voreinstellung - den Altersverlauf auf einen kurvilinearen Trend fest (t = 3) und die Potenz der Lokation auf k=5, dann kann bereits mit nur 5 Prädiktoren eine hohe Passung erzielt werden. Bei dem Modell mit zwei Prädiktoren treten sich überschneidende Perzentilverläufe auf. Diese stellen eine Verletzung der Bijektivität dar. Ein solches Model muss also auf jeden Fall verworfen werden. Eine Varianzaufklärung von mehr als 99% wird ab vier Prädiktoren erreicht. Ab acht Prädiktoren ändert die unterste Perzentilkurve im höheren Altersbereich ihre Krümmung. Diese Änderung ist unplausibel, da bei allen anderen Perzentilen ausnahmslos rechtsgekrümmte Kurven vorliegen. Insgesamt kann deshalb festgehalten werden, dass die Regressionsgleichungen mit vier bis sieben Prädiktoren allesamt sehr gute und plausible Näherungen an die manifesten Daten darstellen.



3. Biometrie: Modellierung des BMI von 2 bis 25 Jahren

Nicht nur psychische Personeneigenschaften, sondern auch biometrische Daten lassen sich mittels cNORM modellieren. Hierfür wird ein Datensatz des Center of Disease Control (CDC, 2012) verwendet, der im Package mitgeliefert wird (beschreibung mittels ?CDC abrufbar) und Rohdaten über die Entwicklung des Body-Mass-Index enthält. Da es sich um einen großen Datensatz handelt, wird das Ranking zur Reduzierung des Rechenaufwands über die Gruppierungsvariable vorgenommen. Alle weiteren Modellierungsschritte erfolgen über die kontinuierlichen Variablen:

# Ermittlung eines Models für die BMI-Variable

model.bmi <- cnorm(raw=CDC$bmi, group=CDC$group)

# Die unten zu sehende Animation wurde mittels der plot(model, "series")-
# Funktion ausgegeben

plot(model.bmi, "series", start=1, filename="bmichart")

Mit der plot(model, "series")-Funktion lässt sich die Anpassungsgüte der Modellierung in Abhängigkeit von der Anzahl an Prädiktoren visuell sehr einfach überprüfen. In der Bildüberschrift wird jeweils der Anteil der aufgeklärten Varianz bei einer bestimmen Anzahl an Prädiktoren mit eingeblendet:



Es zeigt sich auch hier, dass sehr schnell eine hohe Passung des Modells mit den manifesten Daten erzielt werden kann. Ab etwa 10 Prädiktoren ist die Schätzung der Perzentilbänder weitgehend stabil. Die Varianzaufklärung beträgt dann gerundet 99.4 %. Die BMI-Daten weisen einen komplexeren Altersverlauf auf. In solchen Fällen kann es helfen, den Parameter t zu erhöhen, z. B. auf t = 4.



4. Bearbeitungszeiten: Modellierung der Lesegeschwindigkeit über die Klassen 2 bis 5

Reaktions- oder Bearbeitungszeiten sind in der Regel extrem rechtsschief verteilt, da zwar eine Unter-, aber oft keine oder nur eine sehr großzügig bemessene Obergrenze der Bearbeitungszeit existiert. Grenzen der Erfassungsmethode oder Boden- bzw. Deckeneffekte durch Automatisierung der Reaktion können weiter zur Schiefe beitragen. Als Beispiel für die Modellierung von Bearbeitungszeiten möchten wir hier auf die Schwellenmessung der Worterkennungsgeschwindigkeit des ELFE-II Leseverständnistests eingehen (Daten aus urheberrechlichen Gründen nicht in cNORM enthalten). Bei dieser Schwellenmessung werden zeitbegrenzt Wörter dargeboten. Die Testprobanden müssen entscheiden, ob es sich dabei um ein Tier, eine Pflanze oder ein künstliches Objekt gehandelt hat. Basierend auf der Korrektheit der Antworten wird die Darbietungszeit der Wörter sukzessive verändert, bis sich eine minimale Darbietungszeit einstellt, bei der die Wörter gerade noch richtig gelesen werden können. Die Darbietungszeit ist allerdings nach unten auf 150 ms begrenzt.

Bei der visuellen Inspektion der Boxplots pro Jahrgangsstufe fällt auf, dass ab der vierten Klassenstufe die meisten Kinder die Untergrenze der Darbietungszeit erreichen. Der Untertest differenziert also ab der vierten Klasse nicht mehr zwischen guten und schlechten Lesern. Selbst in der dritten Klasse erscheint eine gute Differenzierung nur im unterdurchschnittlichen Leistungsbereich möglich zu sein. Inhaltlich ist dieser Effekt dadurch zu erklären, dass während der ersten vier Schuljahre der Prozess des Dekodierens bei den meisten Schülern automatisiert. Die Lesegeschwindigkeit entwickelt sich über den untersuchten Altersbereich aber nicht nur extrem schnell, sondern die Entwicklung weist interindividuell auch eine hohe Streubreite auf, was weiter zur Schiefe der Verteilungen beiträgt. Da der Untertest vor allem zum Ziel hat, die besonders leistungsschwachen Kinder zu identifizieren, fokussieren wir beim Modellieren auf die langsamen Bearbeitungszeiten. (Achtung: Hohes Perzentil bedeutet hier hohe Bearbeitungszeit, d. h. schlechte Leistung!)

# Vorbereitung der Daten und Modellierung
# Die Daten sind nicht als Beispeildatensatz enthalten.

model.speed <- cnorm(raw=elfe2$time, group=elfe2$grade)

# Ausgeben der Modelpassung und der Serie der Perzentil-Plots

print(model.speed)
plot(model.speed, "series", percentiles = c(.8, .9, .95))


Selbst mit 24 Prädiktoren wird in diesem Fall nur eine Varianzaufklärung von R2 = .9857 erreicht. Darüber hinaus nimmt die Varianzaufklärung ab acht Prädiktoren kaum noch zu. Zu viele Prädiktoren führen deshalb vermutlich zu einer Überanpassung. Das intern auf R2 = .99 eingestellte Kriterium muss alleine schon deshalb reduziert werden, weil dieser Wert in der Modellierung nicht erreicht wird. Die visuelle Inspektion der Verläufe spricht für eine Lösung mit nur vier Prädiktoren, selbst wenn in diesem Fall R2 lediglich bei .935 liegt:

R2 RSS R2adj Cp BIC
10.384571185920.38338165-437.45
20.809176849020.80911178-1522.13
30.91876285310.9184298-2298.09
40.93560065920.9353189-2513.80
50.94055017030.9402846-2588.71
60.95045767030.9502215-2753.25
70.95542076490.9551964-2824.69
80.96829976620.9681138-3133.53
90.97126234460.971884-3250.83
100.97423733070.974715-3337.29
110.97522646590.975642-3374.08
120.97919527890.979431-3505.18
130.98117234050.981276-3614.68
..................

Die Perzentil-Bänder lassen sich zumindest bei den langsameren Dekodierzeiten insgesamt noch befriedigend bis gut modellieren, wobei auch der Bodeneffekt (d. h. die minimale Darbietungszeit von 150 ms) korrekt erfasst wird. Die schlechtere Modellierbarkeit im Verhältnis zu den vorher gezeigten Beispielen hat hier verschiedene Ursachen. Eine dieser Ursachen liegt, wie bereits erwähnt, in der extremen Schiefe und dem großen Bodeneffekt, der hier in der vierten Jahrgangstufe auftritt. Dass mit dem letztendlich ausgewählten Modell nur ein R2 von = .935 erreicht wird, ist aber auch darauf zurückzuführen, dass der Untertest generell nur eine Reliabilität von rtt = .78 aufweist. Insgesamt müssen bei hoher Messunsicherheit die Anforderungen an die Varianzaufklärung niedriger angesetzt werden, da es sonst zu Überanpassung an die Daten kommen kann.

# Modellierung mit 4 Termen

model.speed <- cnorm(raw=elfe2$time, group=elfe2$group, terms=4)

-------------
Output:
User specified solution: 4
R-Square Adj. amounts to 0.934944491054454
Final regression model: raw ~ L4 + L1A3 + L2A2 + L3A1

Beta weights are accessible via 'model$coefficients':

(Intercept) L4 L1A3 L2A2 L3A1
1.407712e+02 2.533804e-04 -4.252275e-01 1.068003e-01 -8.940068e-03



Regression formula:
[1] "raw ~ 140.7712 + (0.00025338036*L4) + (-0.42522753*L1A3) + (0.1068003*L2A2) + (-0.0089400677*L3A1)"

Eine weitere Möglichkeit, die Varianzaufklärung bei Reaktions- oder Bearbeitungszeiten zu verbessern, bestehen übrigens darin, die Reaktionszeiten vorher einer log-Transformation zu unterziehen, um die Schiefe der Daten zu reduzieren. Tatsächlich haben wir eine solche Transformation im endgültig publizierten Verfahren auch vorgenommen. Der Untertest wurde zudem nur optional und nur zur Identifizierung von sehr leistungsschwachen Kindern empfohlen. Da wir in diesem Tutorial aber gezielt auch auf mögliche Grenzen der Modellierbarkeit und der Varianzaufklärung hinweisen wollten, wurde hier mit den untransformierten Daten gerechnet.


Abschlussbemerkung

Große Datensätze zu modellieren, erinnert bisweilen tatsächlich an die Arbeit von Bildhauern. Man nimmt hier ein bisschen weg und fügt dort ein bisschen hinzu, um letzten Endes ein visuell befriedigendes Ergebnis zu erhalten. In vielen Fällen gibt es kein eindeutiges Richtig oder Falsch. Auch die beste Modellierung kann außerdem aus einem stark unrepräsentativen oder viel zu kleinen Datensatz oder aus einer Skala mit hohem Messfehler keinen guten Test machen. Dummerweise treten die größten Normierungsfehler in der Regel in den extremen (vor allem in den extrem niedrigen) Wertebereichen auf. Dies gilt übrigens nicht nur für unser, sondern für alle Normierungsverfahren. Gerade diese Bereiche sind es aber, die in der diagnostischen Praxis die höchste Relevanz besitzen. So entscheidet ein Normwert im niedrigen Bereich nicht selten über Schullaufbahnen, Fördermaßnahmen oder über die Notwendigkeit therapeutischer Versorgung. Testnormierungen stellen deshalb hohe Anforderungen an die Verantwortung, Sorgfalt und Mühe des Testkonstrukteurs oder der Testkonstrukteurin. Wir hoffen, dass wir mit cNORM dazu beitragen können, diese Anforderungen leichter zu erfüllen und die diagnostische Sicherheit damit zu erhöhen.



Generierung von Normtabellen
Grafische Nutzeroberfläche