Thursday 17 August 2017

Working With Large Data Sets In Stata Forex


Stata: Análise de Dados e Software Estatístico Kevin S. Turner, StataCorp Primeiro, certifique-se de que você instalou memória suficiente ou permitiu memória virtual suficiente. Se você tiver e continuar recebendo esse erro, continue lendo. Em todos os atuais sistemas operacionais Windows de 32 bits (Windows 8, 7, Vista, XP, 2000, NT, ME, 98, 95), o espaço de endereço disponível total para qualquer aplicativo é de 2,1 GB. Se você tiver um conjunto de dados maior que 2,1 GB, não será possível carregá-lo no Stata para Windows. Isso é simplesmente uma limitação do sistema operacional. Infelizmente, mesmo se seu conjunto de dados estiver sob o limite de 2,1 GB, você pode ter dificuldade ao carregá-lo no Stata. A falha reside novamente como o Windows gerencia o espaço de endereço de 2,1 GB. Quando um aplicativo típico é carregado, geralmente há várias bibliotecas (ou DLLs) que também são carregadas. Essas bibliotecas são normalmente carregadas no espaço de 2,1 GB na extremidade superior, mas não em qualquer ordem determinística. Microsoft tem certeza de que não há nenhuma maneira de impedir que essas bibliotecas de carregamento em endereços arbitrários, assim, a fragmentação do espaço disponível. Quando o Stata tenta carregar um conjunto de dados, ele solicita do Windows o maior espaço contíguo no intervalo de 2,1 GB. Dependendo de onde o Windows carregou as bibliotecas iniciais, isso pode ser de 1,8 GB, 1,3 GB ou menos. Você pode se surpreender ao descobrir que um conjunto de dados de 1,4 GB carregou bem uma vez, mas não conseguiu carregar mais tarde. Este é simplesmente um efeito colateral infeliz do gerenciamento de memória do Windows. A partir do Stata 11.1, algumas das dependências em DLLs externas foram removidas, reduzindo a fragmentação de memória e aumentando a quantidade de memória disponível para Stata. Se você estiver usando o Windows XP de 32 bits e ainda tiver problemas para alocar memória, leia a alocação de ldquoMemory no Windows XPrdquo. Até agora, você está se perguntando quais são as suas alternativas. Desde julho de 2007, várias alternativas do sistema operacional com suporte a 64 bits estão disponíveis. Veja a nossa lista de sistemas operacionais compatíveis com o Stata. A plataforma de 64 bits irá permitir que você trabalhe com grandes conjuntos de dados. Dependendo do seu sistema operacional, você deve ser capaz de alocar tanta memória como você tem na máquina, menos os requisitos do sistema. Para aproveitar esta tecnologia, você precisará de hardware compatível com 64 bits, um sistema operacional de 64 bits e, é claro, uma versão de 64 bits do Stata. Como último recurso, você pode considerar recortar dados desnecessários de seu conjunto de dados ou dividir o conjunto de dados em dois arquivos. Você pode usar a segunda sintaxe do comando use para ler apenas as observações / variáveis ​​desejadas. Por exemplo: Dependendo de seus dados e análise, isso pode não ser viável e é oferecido apenas como uma sugestão. Estatísticas: Análise de Dados e Software Estatístico Kolver Hernandez, Boston College Use Stata / MP ou Stata / SE. Se você não tem Stata / MP ou Stata / SE, por favor, continue com este FAQ. Quando o número de variáveis ​​em um conjunto de dados a ser analisado com Stata é maior do que 2.047 (provável com grandes pesquisas), o conjunto de dados é dividido em vários segmentos, cada salvos como um conjunto de dados Stata. Para trabalhar com informações contidas em dois ou mais arquivos. dta, é necessário mesclar os segmentos em um novo arquivo único que não deve conter mais de 2.047 variáveis. Aqui está uma lista de etapas para construir um novo banco de dados com informações mescladas de arquivos diferentes. Qualquer manipulação dos dados feita com um Stata do-arquivo permite que você reveja e / ou repita o procedimento mais facilmente. Revise o livro de códigos ou a lista de variáveis ​​e determine quais informações são necessárias e quais arquivos contêm as variáveis ​​desejadas. Leia no Stata o primeiro arquivo ou segmento: Um ID exclusivo para cada caso (observação) deve ser fornecido para cada arquivo a ser mesclado. Normalmente, o ID para um banco de dados de séries temporais é a data da observação. Para um banco de dados de seção transversal, é o ID da unidade de seção transversal (identificador de família, empresa CUSIP, etc.), e em dados de painel, duas características são necessárias para identificar cada observação: data e ID. No entanto, para dados de painel, às vezes um IDdquo ldquocase é fornecido para facilitar a mesclagem. Você deve garantir que o formulário no qual o ID exclusivo é mantido em cada arquivo deve corresponder ou seja, você não pode combinar um str8 (seqüência de 8 caracteres) para um ID str6 , Nem você pode combinar uma seqüência de caracteres com um inteiro. Use o comando Statas describe para garantir que o nome eo tipo de dados da variável de ID sejam os mesmos em todos os arquivos. Descarte as variáveis ​​que não são necessárias (mantendo o ID caso) isso pode ser feito de pelo menos duas maneiras. Os caracteres curinga () e hifens (-) podem ser usados ​​nas varlists, ver varlist para seu uso. Se as variáveis ​​úteis podem ser listadas mais facilmente: Se as variáveis ​​indesejáveis ​​podem ser listadas mais facilmente: Lembre-se que o ID do caso deve ser parte do novo arquivo. Verifique se apenas as variáveis ​​desejadas estão na memória: Classifique os dados por caso ID: Salve os dados classificados atualmente na memória com um nome diferente: Repita as etapas 2ndash5 para todos os arquivos que contêm as variáveis ​​desejadas. Finalmente, você vai acabar com um conjunto de novos arquivos (newfile1.dta, newfile2.dta. NewfileJ. dta) para ser mesclado em um novo conjunto de dados. Agora você está pronto para mesclar os dados. O comando de mesclagem mescla as observações correspondentes do conjunto de dados atualmente na memória (chamado de conjunto de dados mestre) com as de um conjunto de dados de Stata diferente (chamado conjunto de dados) em observações únicas. Uma nova fusão de variáveis ​​é criada para fins informativos (descrito abaixo). Ambos os arquivos devem ser previamente classificados pela (s) variável (s) de mesclagem, p. ID do caso Mesclar os dois primeiros arquivos novos. Ler o conjunto de dados mestre (newfile1.dta recentemente criado): Mesclar os dados com o conjunto de dados usando (newfile2.dta): Tabulate merge: A associação de variáveis ​​é criada automaticamente e leva os seguintes valores: merge1 se a observação foi tirada do Dados mestre onlymerge2 se a observação foi tirada dos dados de uso somente merge3 se a correspondência de observação for mestre e usando dados Você pode usar as informações tabuladas para verificar se os dados foram mesclados conforme desejado. Solte a variável de mesclagem: Se houver mais de dois arquivos para mesclar, use os dados atuais na memória como o conjunto de dados mestre e repita os passos 8b-8d para cada arquivo a ser mesclado (newfile3.dta, newfile4.dta. NewfileJ. dta ). Salvar o novo conjunto de dados: Exemplo de programa Aqui está um exemplo de como um arquivo do pode ser usado para mesclar dados contidos em três segmentos hipotéticos. Variáveis ​​a serem mescladas: X11, X12, X13, X21, X22, X23, X31, X32 e X33 Segmentos contendo estas variáveis: segment1.dta, segment2.dta e segment3.dta Identificador: ID (o ID da variável, Dos três segmentos) Este do-arquivo funde algumas variáveis ​​dos arquivos. dta: segment1.dta, segment2.dta e segment3.dta em um novo arquivo chamado newdatabase. dta. Este arquivo-do será documentado no log-arquivo logmerge. smcl para referência adicional. Reconhecimento Graças a Petia Petrova por contribuições para este documento. Eu já tive um pouco de experiência trabalhando com grandes conjuntos de dados em Stata, e consistente com os meus esforços anteriores neste blog para divulgar pr0blems com software estatístico e soluções para problemas de computador, eu pensei I8217d explicar como eu faço isso e por que é uma boa idéia usar Stata para dados grandes. Abordei esse problema em 2008, quando vivia em Londres e trabalhava com dados do National Health Service (NHS). Naquela época, era um problema aparentemente insolúvel e não havia muitas informações lá fora sobre como resolvê-lo, eu acho que desde então as coisas melhoraram, mas apenas no caso de a informação é fina no chão, eu pensei I8217d escrever este post. Quando eu pesquisei soluções para o problema da análise de grandes conjuntos de dados em Stata, muitas das pessoas que eu entrei em contato e os sites que eu olhei pensou que eu quis dizer dados que consistem em centenas de milhares de registros 8211 este é um tamanho comum na análise estatística De, por exemplo Dados escolares ou dados farmacêuticos. Eu estava trabalhando com arquivos de 100s de milhões de registros, até 30Gb em tamanho, e em 2008 muito poucas pessoas estavam trabalhando com esse tamanho. Mesmo agora, isso ainda é bastante incomum na epidemiologia e pesquisa de serviços de saúde. Quatro anos de dados ambulatoriais do SNS conterão cerca de 250 milhões de registros, e as chances são de que a análise correta necessária para esses dados seja um modelo de vários níveis (facilidade e paciente em dois níveis) com resultados binários. Com este tipo de dados a maioria dos pesquisadores de saúde fazer compromissos e usar o modelo de probabilidade linear, ou outras aproximações e soluções alternativas. A maioria dos pesquisadores também usa o SAS, porque o SAS é o único pacote de software capaz de analisar arquivos que não se encaixam na RAM. No entanto, leva uma enorme quantidade de tempo para fazer uma regressão logística em 250 milhões de registros com SAS 8211 meu colega iria deixá-lo funcionando o dia todo, e trabalhar em um computador diferente, enquanto ele esperou para que ele seja concluído. Isso não é aceitável. Eu não sou um fascista sobre software estatístico e uso tudo o que preciso para fazer o trabalho, e vejo benefícios e desvantagens em todos eles. Porém, é muito mais rápido que o SAS É mais barato do que o SAS ou o SPSS Sua ajuda é muito superior a R e a ajuda on-line (nos fóruns, Etc) é muito, muito politer 8211 a ajuda on-line R é um poço fedorento de pessoas rude, sneering R can8217t ser confiável, como I8217ve documentado antes. E R é também bastante exigente sobre os recursos do sistema Muita das coisas que os epidemiologistas precisam é padronizado em Stata primeiro 8211, por exemplo, Stata lidera o caminho na combinação de modelos multinível e probabilidade de amostragem Stata8217s linguagem de programação, embora não tão poderoso como R, ainda é muito Flexível e é relativamente padronizado Stata tem gráficos muito bons em comparação com os outros pacotes SAS é absolutamente terrível para trabalhar com se você precisa de automação ou programação recursiva Stata / MP é projetado para trabalhar com computadores multi-core fora da caixa, enquanto R não tem Suporte para chips modernos e SAS requer algum tipo de configuração especializada horrenda que ninguém com uma vida pode entender. Então, enquanto eu uso R para automação e tarefas desafiadoras e recursivas, não me aproximarei dela por um trabalho que eu realmente precise Resultados confiáveis ​​rapidamente, onde eu colaborei com não-estatísticos, ou onde eu preciso de saída de boa qualidade. Eu desisti de SAS em 2008 e não voltarei a menos que eu precise de algo que só o SAS possa fazer, e eu não acho que SPSS é uma opção viável para análise estatística séria, embora tenha seus usos (eu poderia escrever um post muito brilhante no Os benefícios do SPSS para padronizar a análise de análise de inquéritos de probabilidade sobre grandes organizações). O grande problema com o Stata é que, como R, ele é vetorizado, então você precisa carregar todo o arquivo de dados na memória RAM para poder fazer qualquer análise nele. Isto significa que se você deseja analisar conjuntos de dados muito grandes, você precisa de grandes quantidades de RAM 8211 enquanto que em SPSS ou SAS você pode carregá-lo por partes e analisar em conformidade. Além disso, até que o Windows 7 veio junto não era possível dar mais de 700Mb de RAM para qualquer programa (a menos que você estivesse usando o Mac OS X / Unix), assim você couldn8217t carregar mesmo arquivos de tamanho médio em RAM. Claro, você poderia usar o Windows Professional 2000 ou algum tipo de pacote de mutantes pesadelo (que eu tentei fazer), mas it8217s inferno na terra para ir lá. Sua melhor opção foi Mac OS e uma enorme quantidade de RAM. I8217m vai agora provar que it8217s melhor para comprar Stata e investir em 32 ou 64 Gb de RAM, do que continuar trabalhando com SAS. E não vou recair sobre ganhos de produtividade 8222 para fazê-lo. Condições para análise de grandes conjuntos de dados A condição básica para a análise de grandes conjuntos de dados é RAM suficiente para carregar todo o conjunto de dados 8211, portanto, se você espera que seu arquivo de análise básica seja de 12Gb de tamanho, você precisará de um pouco mais do que na RAM. Se o arquivo está chegando em um tamanho maior do que isso, você precisa de um pacote de banco de dados para acessá-lo 8211 Eu uso o MS Access, mas qualquer coisa vai fazer. Se o arquivo vem em formato de texto (por exemplo, csv), você pode dividi-lo em pedaços em um editor de texto ou pacote de banco de dados e importá-los em Stata sequencialmente, anexando-os juntos. Além disso, don8217t ser desencorajado por tamanhos de arquivo maiores antes de importar 8211 Stata tem armazenamento de dados muito eficiente e manipulação cuidadosa de tipos de variáveis ​​que você pode fazer seus arquivos de dados muito menores. Além disso, se você estiver importando sequencialmente, você pode descartar as variáveis ​​que você precisa de cada parte do arquivo antes de acrescentar. Por exemplo, se você receber dados do NHS, haverá um ID exclusivo derivado de algum software de criptografia com cerca de 32 caracteres. Transforme isso em um número inteiro e salve-se cerca de 16 bytes por registro 8211 isso adiciona mais de 250 milhões de registros. Alguns dados espaciais também são repetidos no arquivo, então você pode excluí-lo, e há muitas informações que podem ser divididas em arquivos separados e mescladas posteriormente se necessário 8211 no Stata it8217s o trabalho de alguns segundos para mesclar um arquivo de 16 Gb Com outro arquivo de 16 Gb se você tiver RAM suficiente, enquanto trabalhando com um único arquivo inchado de 25Gb no SAS levará um dia. It8217s digno de nota que SAS8217s tamanhos mínimos para um monte de tipos variáveis ​​são inchados, e você pode raspar 30-40 do tamanho do arquivo quando você converter para Stata. Assim, percorrer pedaços para construir arquivos contendo apenas o que é relevante, compactá-los para tamanhos mínimos e usar um arquivo mestre construído judiciosamente de IDs como um arquivo de referência contra o qual mesclar conjuntos de dados com informações secundárias. Em seguida, compre lotes de RAM. Você terá então os benefícios duais de um computador realmente legal, e um pacote de análise estatística rápida. Se você estava trabalhando com grandes conjuntos de dados no SAS, você terá reduzido o tempo de análise de horas para segundos, aumentado a gama de análises que você pode realizar e obteve gráficos aprimorados. Mas como você vai convencer alguém a comprá-lo que o computador Stata e um grande computador é mais barato Obviamente, você deve fazer seus próprios cálculos de custos, mas em geral você vai encontrar mais barato comprar Stata e um animal de um computador do que persistir com SAS E um computador barato. Quando eu estava no Reino Unido eu fiz os cálculos, e eles eram bastante convincentes. Usando minha memória áspera das figuras naquele tempo: SAS era aproximadamente 1600 libras por ano, e um computador básico aproximadamente 2000 libras cada três anos: custo total 6800 libras cada três anos. Stata custa 1500 libras, upgrades a cada 2-3 anos, e um computador com 32Gb de RAM e 4 processadores foi de cerca de 3000 quilos. Assim seus custos totais sobre 3 anos são aproximadamente 2300 libras menos. Mesmo se você receber uma besta de uma estação de trabalho de maçã, em cerca de 5000 libras, você vai acabar até mesmo sobre o ciclo de atualização. A diferença na satisfação pessoal e ritmo de trabalho é enorme, no entanto. Se você trabalha com grandes conjuntos de dados, it8217s vale o seu tempo para mudar para Stata e um computador melhor do que persistir com sistemas lentos, desajeitados, inflexíveis como SAS ou SPSS. Se você precisar continuar a interagir de perto com um backend de SQL grande, então obviamente essas considerações não se aplicam, mas se suas necessidades de importação e manipulação de dados forem primariamente arquivos planos que você recebe em lotes uma ou duas vezes por ano, você obterá ganhos de produtividade maiores e possivelmente Economias de custo mesmo que você tenha comprado um computador melhor. Há muito poucas tarefas que Stata pode resolver em combinação com o Windows 7 ou Mac OS X, então don8217t segurar 8211 fazer o caso para o seu chefe para a melhor estação de trabalho que você pode pagar e uma atualização para um pacote de estatísticas que você pode desfrutar. Na ação é uma grande análise e muito prático. Eu costumava trabalhar com todos os pacotes estatísticos, incluindo SAS e SPSS. No entanto eu mudo para Stata em torno de 2008 e minha necessidade de usar vários pacotes reduziu drasticamente devido ao suporte on-line vasto e robusto Statas e um trove de informações para lidar com grandes conjuntos de dados. Eu tenho um laptop hP com 8 processadores e 32 GB de RAM e executando qualquer análise estatística em grandes dados tem sido apenas brisa. Grande análise aqui. 8221 A ajuda on-line da R é uma fossa cheia de gente rude e zombadora8221. Eu ri alto nisso. Você acabou de caracterizar os últimos dois anos da minha vida lidando com a comunidade R. Eu sou novo para Stata, mas até agora, estou encontrando muito superior para as minhas necessidades. Como você disse, é muito mais rápido, eo apoio é muito melhor. Eu posso ter que usar R ocasionalmente, mas eu estou esperando para usar Stata tanto quanto possível, mais eu estou cansado de saltar entre pacotes de software a cada poucos meses. Pergunta rápida: Você se deparou com qualquer plugins disponíveis para tirar o modelo de saída de um modelo de vários níveis em STATA para marcar uma população no SQL Server I8217ve estado à procura de informações sobre como fazer isso. Se meu modelo precisa ser re-executado semanalmente / mensalmente, suponho que o cliente que estou trabalhando com o meu comprar uma cópia do Stata se that8217s a única maneira. Obrigada pelo conselho. Obrigado por comentar Rachel M. Eu tenho pena de você se você tivesse que gastar dois anos lidando com a comunidade R 8230 Sua pergunta rápida é uma desagradável Eu realmente não sei nada sobre como tirar o modelo de saída da Stata em um formato automaticamente exportável, e eu Acho que isso pode ser uma das desvantagens de Stata8217s em comparação com R. Existe alguma maneira MATA poderia ser programado para exportar a equação Eu realmente duvido que há uma maneira de fazer as funções de prever trabalhar fora do Stata, mas você pode ser capaz de pelo menos Exportar os coeficientes do modelo de uma forma que o SQL Server pode reconhecer. Eu me sinto muito mal por você se você passou os últimos dois anos trabalhando com R, a comunidade R e SQL. As coisas que fazemos para viver 8230 Tenho postado um pouco de conselhos sobre como trabalhar com arquivos Stata muito grande em nber. org/stata/efficient com base em nossa experiência no NBER com dados de registro de faturamento do Medicare 8211 centenas de milhões de registros. Obrigado pelo seu comentário feenberg. Eu gosto deste pedaço de texto do link: É um truísmo que os computadores são baratos e as pessoas são caras. No entanto, as pessoas à espera de computadores também são caras e, muitas vezes, um pouco de reflexão sobre a programação pode render dividendos em resultados mais rápidos, especialmente quando os programas são executados repetidamente em conjuntos de dados com dezenas ou centenas de milhões de observações e demoram dias ou semanas para serem concluídos. Quando eu comecei a trabalhar em estatísticas acho que foi mais o oposto, ou pelo menos que os computadores eram mais caros do que o software. Você já descobriu que existem conjuntos de dados no NBER que Stata moderno pode lidar com conceitos mais recentes8230

No comments:

Post a Comment