Ich versuche, ein Problem anzugehen, das sich mit der Imputation fehlender Daten aus einer Paneldatenstudie befasst. (Ich bin mir nicht sicher, ob ich die Paneldatenstudie richtig verwende - wie ich es heute gelernt habe.) Ich habe Daten zur Gesamtzahl der Todesfälle für die Jahre 2003 bis 2009 alle Monate, männlich und weiblich, für 8 verschiedene Bezirke und für 4 Altersgruppen.
Der Datenrahmen sieht ungefähr so aus:
District Gender Year Month AgeGroup TotalDeaths
Northern Male 2006 11 01-4 0
Northern Male 2006 11 05-14 1
Northern Male 2006 11 15+ 83
Northern Male 2006 12 0 3
Northern Male 2006 12 01-4 0
Northern Male 2006 12 05-14 0
Northern Male 2006 12 15+ 106
Southern Female 2003 1 0 6
Southern Female 2003 1 01-4 0
Southern Female 2003 1 05-14 3
Southern Female 2003 1 15+ 136
Southern Female 2003 2 0 6
Southern Female 2003 2 01-4 0
Southern Female 2003 2 05-14 1
Southern Female 2003 2 15+ 111
Southern Female 2003 3 0 2
Southern Female 2003 3 01-4 0
Southern Female 2003 3 05-14 1
Southern Female 2003 3 15+ 141
Southern Female 2003 4 0 4
In den 10 Monaten über 2007 und 2008 wurden einige der Todesfälle in allen Distrikten nicht erfasst. Ich versuche, diesen fehlenden Wert durch eine Mehrfachimputationsmethode abzuschätzen. Entweder mit generalisierten linearen Modellen oder mit SARIMA-Modellen.
Mein größtes Problem ist die Verwendung von Software und die Codierung. Ich habe eine Frage zu Stackoverflow gestellt, in der ich die Daten in kleinere Gruppen wie diese extrahieren möchte:
District Gender Year Month AgeGroup TotalDeaths
Northern Male 2003 1 01-4 0
Northern Male 2003 2 01-4 1
Northern Male 2003 3 01-4 0
Northern Male 2003 4 01-4 3
Northern Male 2003 5 01-4 4
Northern Male 2003 6 01-4 6
Northern Male 2003 7 01-4 5
Northern Male 2003 8 01-4 0
Northern Male 2003 9 01-4 1
Northern Male 2003 10 01-4 2
Northern Male 2003 11 01-4 0
Northern Male 2003 12 01-4 1
Northern Male 2004 1 01-4 1
Northern Male 2004 2 01-4 0
Ich gehe zu
Northern Male 2006 11 01-4 0
Northern Male 2006 12 01-4 0
Aber jemand schlug vor, ich sollte lieber meine Frage hierher bringen - vielleicht nach einer Richtung fragen? Derzeit kann ich diese Daten nicht als ordnungsgemäße Zeitreihen- / Panel-Studie in R eingeben. Mein letztendliches Ziel ist es, diese Daten und das amelia2
Paket mit seinen Funktionen zu verwenden, um das Fehlen TotalDeaths
für bestimmte Monate in den Jahren 2007 und 2008 zu unterstellen, in denen sich die Daten befinden fehlt.
Jede Hilfe, wie dies zu tun ist und vielleicht Vorschläge, wie dieses Problem angegangen werden kann, wäre dankbar.
Wenn das hilft, versuche ich einen ähnlichen Ansatz zu folgen , was Clint Robert hat in seiner Doktorarbeit .
BEARBEITEN:
Nach dem Erstellen der Variablen 'time' und 'group', wie von @Matt vorgeschlagen:
> head(dat)
District Gender Year Month AgeGroup Unnatural Natural Total time group
1 Khayelitsha Female 2001 1 0 0 6 6 1 Khayelitsha.Female.0
2 Khayelitsha Female 2001 1 01-4 1 3 4 1 Khayelitsha.Female.01-4
3 Khayelitsha Female 2001 1 05-14 0 0 0 1 Khayelitsha.Female.05-14
4 Khayelitsha Female 2001 1 15up 8 73 81 1 Khayelitsha.Female.15up
5 Khayelitsha Female 2001 2 0 2 9 11 2 Khayelitsha.Female.0
6 Khayelitsha Female 2001 2 01-4 0 2 2 2 Khayelitsha.Female.01-4
Wie Sie bemerken, gibt es tatsächlich weitere Details: "Natürlich" und "Unnatürlich".
quelle
Amelia
ein bisschen mit gespielt, aber aufgegeben (vorher). Ich habe die Vignette schon einmal gesehen (aber irgendwie verloren!). Ich habe sie mir nur kurz angesehen und werde sie gründlich durchgehen. Ein Problem, das ich jetzt habe, ist, dass ich nicht sicher bin, wie ich die Variablengroup
und erstellen solltime
. (Ich habe versucht, sie für die Analyse / Vorhersage von Zeitreihen zu erstellen, habe aber eine Schleife um sie herum.) Ich bin sicher, dass sie in der Vigette stehen - also melde ich mich bei Ihnen, wenn ich Probleme habe.a.out=amelia(dat,ts=time,cs=group,splinetime=2,intercs=TRUE,idvars=c("District","Gender","Month","Year","AgeGroup"),bounds=bds) Amelia Error Code: 6 The 'ts' variable is out of the range of possible column numbers or is not an integer.
bds <- matrix(c(6, 7, 8,0, 0,0, 500, 500,500), nrow = 3, ncol = 3)
Ich habe im Grunde nur 500 als zufällige Obergrenze gewählt. Ich habe versucht, keine dritte Spalte anzugeben,Amelia
warnte aber davor, dass die dritte erforderlich ist. Gibt es vielleicht eine Möglichkeit, nur eine Untergrenze festzulegen?