Estou tentando resolver um problema que lida com a imputação de dados ausentes de um estudo de dados em painel (não tenho certeza se estou usando o 'estudo de dados em painel' corretamente - como o aprendi hoje.) Tenho dados de contagem total de mortos nos anos 2003 até 2009, todos os meses, masculino e feminino, em 8 distritos diferentes e em 4 faixas etárias.
O dataframe se parece com isso:
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
Nos 10 meses distribuídos em 2007 e 2008, algumas das mortes totais de todos os distritos não foram registradas. Estou tentando estimar esse valor ausente por meio de um método de imputação múltipla. Utilizando modelos lineares generalizados ou modelos SARIMA.
Meu maior problema é o uso de software e a codificação. Fiz uma pergunta no Stackoverflow, onde quero extrair os dados em grupos menores como este:
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
Indo a
Northern Male 2006 11 01-4 0
Northern Male 2006 12 01-4 0
Mas alguém sugeriu que eu deveria trazer minha pergunta aqui - talvez pedir uma direção? Atualmente, não consigo inserir esses dados como um estudo de série / painel da R. adequado. Meu objetivo final é usar esses dados e o amelia2
pacote com suas funções para atribuir a falta TotalDeaths
por certos meses em 2007 e 2008, onde os dados são ausência de.
Qualquer ajuda, como fazer isso e talvez sugestões sobre como lidar com esse problema seriam apreciadas com gratidão.
Se isso ajudar, estou tentando seguir uma abordagem semelhante ao que Clint Roberts fez em sua tese de doutorado .
EDITAR:
Depois de criar a variável 'time' e 'group', conforme sugerido por @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
Como você percebe, há realmente mais detalhes 'Natural' e 'Não Natural'.
fonte
Amelia
um pouco, mas desisti (antes disso). Eu já tinha visto a vinheta (mas a perdi de alguma forma!) Basta dar uma olhada rápida e passar por ela. Um problema que eu agora tenho é que eu sou incerto sobre como criar osgroup
etime
variáveis. (Eu tentei criá-los para análise / previsão de séries temporais, mas tenho um loop em torno disso.) Tenho certeza de que está na vigília - por isso, retornarei a você se estiver com dificuldades. Obrigado novamente :)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)
Basicamente, apenas escolhi 500 como um limite superior aleatório. Tentei não dar uma terceira coluna, masAmelia
avisei que ela requer a terceira. Existe talvez uma maneira de apenas especificar um limite inferior?