DIF-Richtung in Conquest/eatModel: Was bedeuten negative Werte in der “estDif”-Spalte?
Author
Karoline Sachse
In eatModel wird nur der erste Teil der zweiten Tabelle \(\text{item}\times\text{[DIFvariable]}\) aus Conquest übertragen. Das bedeutet, dass negative Werte in der eatModel-estDif-Spalte dafür stehen, dass die jeweiligen Items in der ersten Gruppe der \(\text{[DIFvariable]}\)leichter sind. Die erste Gruppe ist die mit dem numerisch kleineren Gruppenindikatorwert. Zur Illustration ein Beispiel, das Daten aus dem TAM-Paket verwendet:
library(kableExtra)library(eatTools)library(eatModel)data(data.ex08, package="TAM")# Gesamtdatensatz bauen, der sowohl Personen-ID, DIF-Variable als auch responses enthaeltdat <-data.frame(id =1:nrow(data.ex08[["resp"]]), female =unlist(data.ex08[["facets"]])-1, data.ex08[["resp"]])def <-defineModel(dat, items=-c(1:2), id="id", DIF.var ="female", software="tam")
14 subject(s) do not solve any item:
115 (10 false), 613 (10 false), 979 (10 false) ...
7 subject(s) solved each item: 119 (10 correct), 514 (10 correct), 774 (10 correct) ...
Dataset is completely linked.
'gauss' has been chosen for estimation method. Number of nodes was not explicitly specified. Set nodes to 20.
Q matrix specifies 1 dimension(s).
run <-runModel(def)res <-getResults(run, verbose=FALSE)item <-itemFromRes(res)
Das einzige Item mit B-DIF entsprechend der ETS-Kriterien ist Item Nummer 6:
Die allgemeine Lösungshäufigkeit des Items ist 45.4 Prozent. Der positive DIF-Wert von 0.31 bedeutet, dass das Item in der ersten Gruppe (also female = 0, die Gruppe der Jungen) schwerer ist. Die Lösungshäufigkeit sollte also für female = 0 geringer sein, als für female = 1:
tapply(dat[,"I0006"], dat[,"female"], mean)
0 1
0.410 0.498
Die beiden Spalten “estDif” und “absDif” im Output unterscheiden dabei insofern, als dass für zwei Gruppen (hier: “male” und “female”) “absDif” immer doppelt so groß wie “estDif” und im Betrag positiv ist. Im DIF-Modell hat jedes Item zwei Parameter, einen Schwierigkeitsparameter “est” und einen DIF-Parameter “estDif”. Bei dichotomen, näherungsweise gleichverteilten Gruppen wie Geschlecht entspricht der “est”-Parameter in etwa dem Wert, den man erhalten würde, wenn ein einfaches Raschmodell ohne separate Betrachtung der Geschlechtergruppen modelliert werden würde. “estDif” ist nun der Wert, den man (näherungsweise) für die Referenzgruppe addieren und für die Fokusgruppe subtrahieren muss, um die Werte zu erhalten, die bei separater Modellierung der Gruppen resultieren würden. Da der Wert einmal addiert, einmal subtrahiert wird, ist die Differenz des Itemparameters in Referenz- und Fokusgruppe im Betrag doppelt so groß wie der DIF-Parameter “estDif”. Für unser Beispiel (Referenzgruppe = “male”) bedeutet das: Bei separater Modellierung würde ich für die Jungen einen Itemparameter 0.226 + 0.31 = 0.536 erwarten, und für die Mädchen 0.226 - 0.31 = -0.084. Das soll hier kurz veranschaulicht werden:
--------------------------------
splitModels: generating 2 models
..
see <returned>$models
number of cores: 1
--------------------------------
def <-defineModel(dat, id ="id", items=-c(1:2), splittedModels = spl, software="tam")
Specification of 'qMatrix' and 'person.groups' results in 2 model(s).
==================================
Model No. 1
Model name: female.0
Number of items: 10
Number of persons: 500
Number of dimensions: 1
==================================
6 subject(s) do not solve any item:
115 (10 false), 270 (10 false), 9 (10 false) ...
4 subject(s) solved each item: 119 (10 correct), 139 (10 correct), 62 (10 correct) ...
Dataset is completely linked.
'gauss' has been chosen for estimation method. Number of nodes was not explicitly specified. Set nodes to 20.
Q matrix specifies 1 dimension(s).
==================================
Model No. 2
Model name: female.1
Number of items: 10
Number of persons: 500
Number of dimensions: 1
==================================
8 subject(s) do not solve any item:
543 (10 false), 752 (10 false), 979 (10 false) ...
3 subject(s) solved each item: 514 (10 correct), 569 (10 correct), 774 (10 correct) ...
Dataset is completely linked.
'gauss' has been chosen for estimation method. Number of nodes was not explicitly specified. Set nodes to 20.
Q matrix specifies 1 dimension(s).
run <-runModel(def)res <-getResults(run, verbose=FALSE)item<-itemFromRes(res)cols<-c("model", "item", "itemP", "est")kbl(roundDF(subset(item, item =="I0006")[,cols],digits =3), row.names=FALSE) %>%kable_styling(bootstrap_options ="striped", full_width =FALSE, position ="center")
model
item
itemP
est
female.0
I0006
0.410
0.443
female.1
I0006
0.498
0.006
Linkt man nun die beiden separat modellierten Gruppen “male” und “female” aneinander, entspricht der DIF für das Item “I0006” näherungsweise dem zuvor in einem gemeinsamen DIF-Modell geschätzten DIF-Parameter:
itemFokus <-subset(res, model =="female.1")referenz <-subset(itemFromRes(res), model =="female.0")equating <-equat1pl(results = itemFokus, prmNorm = referenz[,c("item", "est")], difBound =0.6, iterativ =TRUE)
Found 1 model(s).
Equating is executed for each dimension in each model separately.
====================================================================================================
Model No. 1
Model name: female.1
Number of dimension(s): 1
Name(s) of dimension(s): Dim1
Number of linking items: 10
Linking method: Mean.Mean
Dimension 'Dim1': 1 of 10 items with linking |DIF| > 0.6 identified.
Iteration 1: Exclude item 'I0006'.
method iter itemExcluded DIF.excluded linking.constant linkerror
1 iterativ 0 -0.182 0.096
2 iterativ 1 I0006 -0.603 -0.251 0.074
Weitere Fragen und/oder deren Antworten können abgelegt und eingesehen werden unter: t:/SIG/SIG Methoden/Liste methodischer Fragen.docx