Hallo Lucas!
comp2long vergleicht die Anzahl der Fälle mit dem Wert 0 in den wave-dummies ( z.B . wave_w5 und wave_w6) mit der Anzahl der Fälle in den Items, die die Ausprägung -56 (nicht teilgenommen) haben.
use “SC2_xTargetCompetencies_D_11-0-0.dta“ , clear
Wenn wir uns ein funktionierendes Item ansehen, sollte das so aussehen: Das Item vok10005_c hat genauso viele Fälle mit dem Wert -56 wie wave_w1 mit dem Wert 0. So kann das ado bestimmte Variablen einer Welle zuordnen.
tab vok10005_c wave_w1, mis
| Zeile enthält Daten aus Welle 1
| (2011)
Wortschatz: Item 5 | nein ja . | Total
----------------------+---------------------------------+----------
Angabe verweigert | 0 9 0 | 9
nicht erreicht | 0 3 0 | 3
nicht teilgenommen | 6,368 0 0 | 6,368
nicht ermittelbar | 0 62 0 | 62
nicht gelöst | 0 60 0 | 60
gelöst | 0 2,814 0 | 2,814
. | 0 0 1 | 1
----------------------+---------------------------------+----------
Total | 6,368 2,948 1 | 9,317
Bei mpg4ma_sc5 hingegen stimmt diese Vorgabe jedoch nicht. 148 Fälle enthalten laut wave_w6 Daten in Welle 6, aber in mpg4ma_sc5 werden sie als nicht teilgenommen markiert. So kann das Item nicht der Welle 6 (und auch keiner anderen Welle zugeordnet werden. Das ist ein Datenaufbereitungsfehler.
tab mpg4ma_sc5 wave_w6, mis
Prozedurale |
Metakognition |
(Mathematik): | Zeile enthält Daten aus Welle 6
Differenzmaß | nein ja . | Total
----------------------+---------------------------------+----------
Angabe verweigert | 0 30 0 | 30
unplausibler Wert | 0 24 0 | 24
nicht teilgenommen | 2,445 148 0 | 2,593
nicht ermittelbar | 0 1 0 | 1
-0.66667 | 0 2 0 | 2
-0.62500 | 0 1 0 | 1
..........| ... ... ... | ...
0.83333 | 0 18 0 | 18
0.87500 | 0 13 0 | 13
0.91667 | 0 8 0 | 8
0.95833 | 0 8 0 | 8
. | 0 0 1 | 1
----------------------+---------------------------------+----------
Total | 2,445 6,871 1 | 9,317
Lindern lässt sich das Problem, indem man die als -56 (nicht teilgenommen) markierten Fälle nach -55 (nicht ermittelbar) umkodiert. Nun kann comp2long mpg4ma_sc5 der Welle 6 zuordnen.
replace mpg4ma_sc5 = -55 if mpg4ma_sc5 == -56 & wave_w6
tab mpg4ma_sc5 wave_w6, mis
Prozedurale |
Metakognition |
(Mathematik): | Zeile enthält Daten aus Welle 6
Differenzmaß | nein ja . | Total
----------------------+---------------------------------+----------
Angabe verweigert | 0 30 0 | 30
unplausibler Wert | 0 24 0 | 24
nicht teilgenommen | 2,445 0 0 | 2,445
nicht ermittelbar | 0 149 0 | 149
-0.66667 | 0 2 0 | 2
-0.62500 | 0 1 0 | 1
..........| ... ... ... | ...
0.83333 | 0 18 0 | 18
0.87500 | 0 13 0 | 13
0.91667 | 0 8 0 | 8
0.95833 | 0 8 0 | 8
. | 0 0 1 | 1
----------------------+---------------------------------+----------
Total | 2,445 6,871 1 | 9,317
Bei deg40001_c sieht es sogar noch wilder aus: hier wurde gar keine Missingcodierung vorgenommen.
tab deg40001_c wave_w6, mis
Belohnungsaufschub in | Zeile enthält Daten aus Welle 6
K4 (generiert) | nein ja . | Total
----------------------+---------------------------------+----------
1 Geschenk sofort | 0 993 0 | 993
2 Geschenke beim näch | 0 4,127 0 | 4,127
. | 2,445 1,751 1 | 4,197
----------------------+---------------------------------+----------
Total | 2,445 6,871 1 | 9,317
Hier kann man alle Fälle mit -56 versehen, wenn wave_w6 den Wert 0 hat.
replace deg40001_c = -56 if wave_w6 == 0
. tab deg40001_c wave_w6, mis
Belohnungsaufschub in | Zeile enthält Daten aus Welle 6
K4 (generiert) | nein ja . | Total
----------------------+---------------------------------+----------
nicht teilgenommen | 2,445 0 0 | 2,445
1 Geschenk sofort | 0 993 0 | 993
2 Geschenke beim näch | 0 4,127 0 | 4,127
. | 0 1,751 1 | 1,752
----------------------+---------------------------------+----------
Total | 2,445 6,871 1 | 9,317
Du hast ja schon geahnt, dass es noch weitere Variablen geben könnte, die betroffen sind.
Hier siehst du die Syntax, die das Problem abmildert.
local checkvars_w5 mpg3ic_sc5 mpg3ic_sc6 mpg3sc_sc5 mpg3sc_sc6 mpg3vo_sc5 mpg3vo_sc6
local checkvars_w6 deg40001_c mpg4ma_sc5 mpg4ma_sc6 mpg4or01_sc5 mpg4or01_sc6 mpg4or02_sc5 mpg4or02_sc6 mpg4re01_sc5 mpg4re01_sc6 mpg4re02_sc5 mpg4re02_sc6 mpg4re03_sc5 mpg4re03_sc6 mpg4re04_sc5 mpg4re04_sc6 mpg4re05_sc5 mpg4re05_sc6 mpg4re_sc5 mpg4re_sc6
replace deg40001_c = -56 if wave_w6 == 0
foreach var of local checkvars_w6 {
replace var' = -55 if wave_w6 == 1 & var’==-56
}
foreach var of local checkvars_w5 {
replace var' = -55 if wave_w5 == 1 & var’==-56
}
tempfile fixed
save "`fixed’", replace
comp2long "`fixed’"
Wenn du selbst herausfinden willst, welche Variablen nicht reshaped werden kannst du das ganz einfach mit describe, replace tun und die Variablenlisten vergleichen. Alle Variablen, die nicht matchen, sind dann (potenziell) problematisch
use "SC2_xTargetCompetencies_D_11-0-0.dta" , clear
describe, replace
keep name
tempfile wide
save "`wide'"
clear
comp2long "SC2_xTargetCompetencies_D_11-0-0.dta"
describe, replace clear
keep name
merge 1:1 name using "`wide'"
Ich kann dir leider nicht sagen, ob das Problem gefixt, das muss mit den für diese Variablen verantwortlichen Problem besprochen werden.
Ich hoffe, das hat dir etwas weitergeholfen
LG
Dietmar