Hallo SaS!
Zu 1.)
die spms-Variable wird von infas geliefert und generiert. Auch uns ist nicht ganz klar wie diese Variable generiert wird- Daher können wir auch keine klare Empfehlung aussprechen, diese Variable zu benutzen oder zu verwerfen. Auf der Doku-Seite der SC6 gibt es unter https://www.neps-data.de/Portals/0/NEPS/Datenzentrum/Forschungsdaten/SC6/Feldversionen/wave1-2/infas_Dokumentation_Pruefmodul_20120427.pdf auf Seite 31 ein paar Anmerkungen zu "Nebenher"-Episoden. Da die Logik des Prüfmoduls für alle Startkohorten als ähnlich/gleich angenommen werden kann kann man das auch analog auf die SC5 beziehen.
Ich persönlich würde dieser Variable nicht das höchste Gewicht beimessen. Bzgl. der Syntax kann man zumindest die Duplikate einer Person pro Startdatum eleminieren, wenn man die Syntax folgendermaßen abändert:
* Nebenereignisse auf die Zeiten kürzen, die nicht von Hauptereignissen abgedeckt sind
**************************************************************************************
tab spms
bysort ID_t (spell_chron): replace ts = te[_n-1]+1 if spms==2
bysort ID_t (spell_chron): replace te = ts[_n+1]-1 if spms==2 & _n!=_N
replace ts = ym(2005,9) if ts == .
replace te = ym(2010,8) if te == .
drop if ts > te
tab spms
der Zusatz _n!=_N in Code-Zeile 5 bewirkt, dass te nur ersetzt wird, wenn es sich nicht um den letzten Spell einer Person handelt, ansonsten wird te im letzten Spell pro Person mit System Missings befüllt, sodass man dann in Folge keine Spelldauern mehr hat.
Nun geht es darum, die Duplikate in ts (Anfangszeitpunkt von Spells) zu eleminieren. Wenn man die Dauer des Spells berechnet, kann man im Fall von Duplikaten (=gleichzeitiger Beginn von mehreren Episoden), die längste Episode behalten.
* neuer chronologischer Laufindex
***************************
duplicates tag ID_t ts, gen(dup_id_start) // Zur Veranschaulichung: indexiert alle Personen mit mehreren gleichen Startzeiten
gen duration=te-ts // Spelldauer generieren, Vorschlag: längste Dauer wird behalten
Leider reicht das in manchen Fällen nicht aus und es gibt selbst Duplikate innerhalb einer Person wenn man Startdatum und Dauer mitteinbezieht (in Stata mit "isid ID_t ts duration" testen), sodass man priorisieren muss, welchen Spell man behalten will. Wie man priorisiert, muss nach inhaltlichen Kriterien entschieden werden. Wenn man den längsten Spell behalten will, sollte man die höchste Priorisierung auch dem Spelltyp mit der höchsten Ausprägung in einer Variable behalten:
gen priority=.
replace priority=10 if sptype==22
replace priority=9 if sptype==24
replace priority=8 if sptype==36
replace priority=7 if sptype==26
replace priority=6 if sptype==25
replace priority=5 if sptype==29
replace priority=4 if sptype==23
replace priority=3 if sptype==27
replace priority=2 if sptype==30
replace priority=1 if sptype==99
// damit werden alle Duplikate in dup_idts gelöscht >> ID_t + ts sind nun unique Identifier
bysort ID_t ts (duration priority) : drop if _N!=_n //Spell mit höchster Dauer und höchster Priorisierung behalten
isid ID_t ts //check, ob es noch Duplikate gibt
In diesem Beispiel würde der Schule die höchste Priorität zugewiesen werden und Lückenepisoden die geringste. Das alles ist ziemlich willkürlich und vielleicht gibt es auch bestimmte Gründe, warum man nicht den längsten Spell nehmen oder ein Spelltyp dem anderen vorziehen sollte. Damit könnte man sich Verzerrungen einhandeln. Man kann auch versuchen das Verfahren zu randomisieren.
Falls einer der hier mitlesenden weiterhelfen kann, darf/dürfen diese Person(en) gerne in die Diskussion einsteigen.
Zu 2.)
Ich oder meine Kollegen haben bisher leider keine Erfahrungen im Umgang mit newspell sammeln können. Vielleicht löst sich das Problem mit der Eliminierung von Duplikaten? Auch hier bitte ich die Scientific Community gerne um Hilfe.
Viele Grüße und noch viel Erfolg
Dietmar