J'essaie de résoudre un problème qui concerne l'imputation des données manquantes d'une étude de données de panel (je ne sais pas si j'utilise correctement «l'étude de données de panel» - telle que je l'ai apprise aujourd'hui.) J'ai des données sur le nombre total de décès pour les années 2003 jusqu'en 2009, tous les mois, hommes et femmes, pour 8 districts différents et pour 4 tranches d'âge.
La trame de données ressemble à ceci:
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
Pour les 10 mois s'étalant sur 2007 et 2008, certains des décès totaux de tous les districts n'ont pas été enregistrés. J'essaie d'estimer ces valeurs manquantes par une méthode d'imputation multiple. Soit en utilisant des modèles linéaires généralisés ou des modèles SARIMA.
Mon plus gros problème est l'utilisation des logiciels et du codage. J'ai posé une question sur Stackoverflow, où je veux extraire les données en petits groupes comme celui-ci:
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
Aller à
Northern Male 2006 11 01-4 0
Northern Male 2006 12 01-4 0
Mais quelqu'un a suggéré que je préfère poser ma question ici - peut-être demander une direction? Actuellement, je ne suis pas en mesure d'entrer ces données en tant que série chronologique / étude de panel appropriée dans R. Mon objectif final est d'utiliser ces données et le amelia2
package avec ses fonctions pour imputer les manquants TotalDeaths
pendant certains mois en 2007 et 2008, où les données sont manquant.
Toute aide, comment procéder et peut-être des suggestions sur la façon de résoudre ce problème seraient grandement appréciées.
Si cela aide, j'essaie de suivre une approche similaire à ce que Clint Roberts a fait dans sa thèse de doctorat .
ÉDITER:
Après avoir créé la variable 'time' et 'group' comme suggéré par @Matt:
> 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
Comme vous le remarquez, il y a en fait plus de détails «Naturel» et «Non naturel».
la source
Amelia
depuis un moment mais j'ai abandonné (avant ça). J'ai déjà vu la vignette (mais je l'ai perdue d'une façon ou d'une autre!) Un problème que j'ai maintenant, c'est que je ne sais pas comment créer les variablesgroup
ettime
. (J'ai essayé de les créer pour l'analyse / la prévision de séries chronologiques, mais j'ai fait le tour.) Je suis sûr que c'est dans la vigette - donc je vous répondrai si j'ai du mal. Merci encore :)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)
j'ai simplement choisi 500 comme limite supérieure aléatoire. J'ai essayé de ne pas donner une troisième colonne, mais j'aiAmelia
averti que cela nécessitait la troisième. Existe-t-il peut-être un moyen de spécifier simplement une limite inférieure?