Bases de dados

Um dos trabalhos realizados pelo NucleoDeComputacao é a recuperação ou aquisição, limpeza e organização de bases de dados. Este serviço é também conhecido como "Data Munging":

Nesta página iremos listar informações relevantes sobre as bases disponibilizadas para pesquisa na EPGE.

1. Pesquisas do IBGE

O IBGE costuma fornecer os microdados das pesquisas em arquivos texto com uma observação por linha e variáveis em posições fixas nas colunas (Fixed-Width-Format). Embora compacto, este é um formato muito pouco flexível para se trabalhar. Para começar, a leitura destes dados requer um dicionário de dados que pelo menos indique em qual coluna começa e termina cada variável.

Os microdados e dicionários podem ser baixados diretamente do site do IBGE utilizando-se os links abaixo.

Informações sobre as pequisas em http://ibge.gov.br/home/estatistica/pesquisas/pesquisas.php

1.1. DataZoom

O Data Zoom é um portal que disponibiliza gratuitamente ferramentas que facilitam o acesso de pesquisadores do Brasil e do exterior aos microdados das pesquisas domiciliares do IBGE.

http://www.econ.puc-rio.br/datazoom/index.html

1.2. Bases em R

Por conta da falta de flexibilidade do formato adotado pelo IBGE e outros problemas que já tivemos com erros nos dados, o NucleoDeComputacao passou a fazer as compras dos CD do IBGE e disponibilizar os dados no epge04. Criamos rotinas em R para leitura e conferência dos dicionários e dados. Estes BDs eram então disponibilizados para vocês.

Inicialmente, era usado o MySQL para armazenar estes dados. Ocorre que colocar estes dados no MySQL, com o passar do tempo, provou ser fator complicador mais que facilitador. Como a maioria dos programas usados na FGV não consegue trabalhar com os dados no MySQL, é necessário primeiro extrair os dados desejados do BD (o que por si só já cria cópias desnecessárias dos dados). Para a extração dos dados, os usuários precisam lidar com uma linguagem de consultas chamada SQL. É através desta linguagem que filtramos as variáveis e observações desejadas. Para piorar, cada software tem uma forma de se comunicar com o MySQL. Em alguns é fácil, em outros é bem complicado.

Por estas razões, pela importância de incentivar o uso do R na EPGE e aproveitando o fato do IBGE também ter passado a disponibilizar os dicionários de dados e rotinas de importação em R, passarei a usar o formato R como padrão para disponibilização dos dados. Adotarei como regra sempre copiar os CDs comprados do IBGE para o servidor epge04 na pasta:

/com/extra/bases-de-dados/cds/

E dentro de cada pasta, manter a estrutura dos diretórios e arquivos dos respectivos CDs, acrescentando um diretório chamado ncepge com os dados já gravados em formato R e arquivos criados pelo NucleoDeComputacao. Com os dados no formato R (arquivos *.RData), os pesquisadores podem trabalhar com eles e esquecer dos arquivos texto fornecidos pelo IBGE.

As seguintes pesquisas já foram tratadas e convertidas para RData:

epge04:/com/extra/bases-de-dados/cds$ find -type d -name 'ncepge' | sort
./censo-1980-amostra/ncepge
./pme-2005/ncepge
./pme-2006/ncepge
./pme-2007/ncepge
./pme-2008/ncepge
./pme-2009/ncepge
./pnad-1983/ncepge
./pnad-1988/cd1/ncepge
./pnad-1993/ncepge
./pnad-1995/ncepge
./pnad-1996/ncepge
./pnad-1997/ncepge
./pnad-1998/ncepge
./pnad-1999/ncepge
./pnad-2001/ncepge
./pnad-2002/ncepge
./pnad-2003/ncepge
./pnad-2004/ncepge
./pnad-2005-2006/ncepge
./pnad-2007/ncepge
./pof-1987-1988/ncepge
./pof-1995-1996/ncepge
./pof-2002-2003/ncepge

Caso esteja procurando alguma pesquisa que ainda não foi convertida para o formato do R, entre em contato com o NucleoDeComputacao.

1.3. PME 2006

Encontramos problemas nos arquivos da PME de 2006. Enviamos email para o IBGE e estamos aguardando resposta. No arquivo de PMEnova.122006.txt, 3 registros contém menos caracteres do que o esperado para um registro. O que significa dados perdidos ou truncados. Este problema pode ser facilmente verificado:

> temp <- scan(gzfile("/com/extra/bases-de-dados/cds/pme-2006/Dados/PMEnova.122006.txt.gz"),
               what="", sep=";", nlines=100000, quiet=TRUE)
> ttemp <- apply(as.array(temp), 1, nchar)
> ttemp[ ttemp != 482]
[1] 172 216  36

O número 482 significa o tamanho esperado de caracteres nas linhas (registros) dos arquivos da PME. Este número foi obtido consultando o dicionário da pesquisa que informa que o último campo (variável), começa na posição 482 e tem um caracter. Os valores retornados após o último comando são as linhas do arquivo com número de caracteres diferente de 482, algumas com mais caracteres outras com menos. Os arquivos test.R nos diretórios ncepge contém os testes realizados nos dados.

1.4. POF 1995-1996

Os dados da POF 1995-1996 são divididos em 12 tipos de registros. Segundo a documentação, as linhas dos registros do tipo 7 nos arquivos de dados deveriam ter 157 caracteres, mas todas têm apenas 148. Da mesma forma, a documentação indica 274 caracteres nos registros de tipo 11, mas todos possuem apenas 273. Não sabemos se este é um problema de documentação ou de dados, e, mesmo que seja o segundo caso, como isso poderia afetar o significado dos registros.

Entramos em contato com o IBGE, mas ainda não obtivemos resposta.

1.5. PNAD 1997, 1999 e 2003

Verificamos que o número de domicílios pesquisados no arquivo de domicilios é diferente do número total de domicílios distintos no arquivo de pessoas. O procedimento do teste está no arquivo verifica_dom.R, no diretório ncepge/.

1.6. Censo de 1980 (amostra)

O Censo de 1980 é dividido por regiões, e cada uma delas contém um ou mais arquivos de dados. Devido ao grande tamanho desses arquivos, foi necessário dividi-los em arquivos menores para a leitura no R. Ainda assim, os arquivos RData gerados pelo R são muito grandes, e não foi possível uni-los conforme estavam agrupados nos arquivos originais do IBGE.

Além disso, foi encontrada uma variável com valores não previstos na documentação (erros nos dados):

variável

valores desconhecidos

# registros afetados

v605

099, 062, 023, 035, 042, 022, 020, 033, 028, 030, 032, 041, 016, 015,052, 037, 057,067,039, 086, 078, 077,072,044,021,070,026, 027,031,046,063,066,053,047,060, 029,034,079,019,036,069,018,038, 048,058,024,068,043,064,056,054, 050,065,061,025,055,059,040,083, 017,045,076,049,075,091,051,071, 074,080,073,095,999,088,085,087, 082,081,092,093,084,098,089,090, 100,106,097,096,101,102,094,105, 108,110,109,115, 111,112,104,125,107,103,120,130, 113,126,129,116,117,118

719256

2. Bases DATASUS

O DATASUS disponibiliza informações que podem servir para subsidiar análises objetivas da situação sanitária, tomadas de decisão baseadas em evidências e elaboração de programas de ações de saúde.

Estão disponíveis no servidor epge04, nos formatos do STATA, TAMWIN e do R, os dados de nascidos vivos e de mortalidade do SUS nos compartilhamentos abaixo.

Tais dados foram obtidos a partir dos sites abaixo.

Maiores informações podem ser obtidas nesse sites.

Em caso de dúvidas e solicitação de mais informações procure o NucleoDeComputacao.

3. Sistema R

O NucleoDeComputacao aconselha o uso do software R. O manual é bastante didático. A quantidade de informações na Internet sobre ele é impressionante. Uma excelente comunidade para troca de experiências.

Para acessar o sistema R no servidor epge04, numa janela do PuTTY, digite apenas:

$ R

Para te dar uma idéia da linguagem, veja alguns exemplos de comandos.

Carregando os dados de domicílios da PNAD de 2006:

> load("/com/extra/bases-de-dados/cds/pnad2006/ncepge/DOM2006.Rdata")

Que variáveis foram importadas?

> ls()
[1] "dados"

Listando a primeira observação em "dados", todas as colunas (variáveis):

> dados[1,]
  V0101 UF    V0102 V0103 V0104 V0105 V0106 V0201 V0202 V0203 V0204 V0205 V0206
1  2006 11 11000015     1     1     3     3     1     2     2     1     5     2
  V0207 V0208 V2081 V0209 V2091 V0210 V0211 V0212 V0213 V0214 V0215 V0216 V2016
1     1    NA    NA    NA    NA     2     1     4    NA    NA     1     2     1
  V0217 V0218 V0219 V0220 V2020 V0221 V0222 V0223 V0224 V0225 V0226 V0227 V0228
1     4     1     1     2     4     1    NA     1     4     1     4     3     4
  V0229 V0230 V0231 V0232 V4105 V4106 V4107 V4600 V4601 V4602 V4604      V4605
1     3     4     3    NA     1     0     3    30     9  1108     2 0.08815494
  V4606      V4607 V4608   V4609 V4610 V4611 V4614 UPA  V4617 V4618 V4619 V4620
1     5 0.03731953   6.6 1068592   200   236   760 278 110012    59     1     3
  V4621 V4622    V9992
1   253     3 10234  4

Listando apenas algumas variáveis das 10 primeiras observações:

> dados[1:10,c("V0101","V0105","V4608","V4611")]
   V0101 V0105 V4608 V4611
1   2006     3   6.6   236
2   2006    NA   6.6    NA
3   2006     4   6.6   235
4   2006     6   6.6   236
5   2006     4   6.6   235
6   2006     4   6.6   236
7   2006     4   6.6   235
8   2006     4   6.6   235
9   2006     6   6.6   235
10  2006     3   6.6   235

3.1. Exportando dados para outros formatos

Se mesmo assim você preferir usar o Stata, usando o pacote foreign do R, pode-se exportar os dados para o formato Stata. Ou então você pode salvar os dados no formato .csv (comma separated values), que pode ser lido por diversos programas. Veja como fazer:

Primeiro, seguindo os exemplos da sessão acima, use o comando load para carregar o arquivo desejado, e depois o comando ls() para ver o nome da variável que foi carregada.

Em seguida, armazene numa nova variável as colunas que contêm as informações desejadas. Por exemplo, se a variável que foi carregada do arquivo (a variável cujo nome aparece quando você usa o comando ls()) se chama dados, para obter as colunas referentes aos campos V0101, V0105, V4608 e V4611, e atribuí-las a uma variável x, digite o seguinte comando:

> x <- dados[,c("V0101","V0105","V4608","V4611")]

Verificando o número de linhas (observações) e colunas (perguntas do questionário) na variável x:

> dim(x)
[1] 145547      4

Para salvar os dados num arquivo csv, use o comando write.csv:

> write.csv(x, file = "meu-arquivo.csv")

Para salvar no formato .dta do Stata, use o comando library(foreign) para carregar a biblioteca de exportação do R, e, em seguida, o comando write.dta para salvar a variável que você criou num novo arquivo:

> library(foreign)
> write.dta(x, file = "meu-arquivo.dta")

O arquivo salvo já pode ser usado no Stata. Para terminar a sua sessão no R, use o comando q(). O R perguntará se você quer salvar a imagem do workspace, responda que não:

> q()
Save workspace image? [y/n/c]: n

BasesDeDados (last edited 2015-12-07 12:17:38 by localhost)