Sunday 7 July 2019

Compute growth rate in stata forex


Eu quero calcular as taxas de crescimento em Stata para observações com a mesma ID. Meus dados se assemelham a isto de forma simplificada: Agora eu quero calcular para cada ID taxas de crescimento de variáveis ​​af de 2018 a 2017: Por exemplo, ID 10 e variável a seria: (3-2) / 2, para a variável b . (5-4) / 4, etc. e armazenar os resultados em novas variáveis ​​(por exemplo, crescimento, crescimento, etc). Como eu tenho mais de 120k observações e cerca de 300 variáveis, existe uma maneira eficiente de fazê-lo (loop) Meu código parece o seguinte (simplificado): FYI: variáveis ​​a-f são numéricas. Mas Stata diz: local não encontrado e não tenho certeza se o código está correto. Eu também tenho que classificar para o primeiro ano pediu agosto 25 15 at 8:31 Que código você tentou Querendo código e ter nenhum não é um problema de programação para estouro de pilha. Ndash Nick Cox Aug 25 15 em 9:04 Obrigado por lembrar. Eu coloquei no post original. Ndash Jay G Aug 25 15 at 9:15 1 Resposta O erro específico em é um erro na sintaxe de foreach. Que aqui espera sintaxe como foreach x de variáveis ​​locais. Dado o seu uso anterior de uma macro local. Com a palavra - chave em. Foreach toma a palavra local literalmente e aqui procura uma variável com esse nome: daí a mensagem de erro. Esta é a sintaxe foreach básica: veja a sua ajuda. Este código é problemático por outras razões. A classificação no ID não garante a ordem de classificação correta, aqui a ordem do tempo por ano. Para cada identificação distinta. Se as observações são misturadas dentro de ID. Os resultados serão lixo. O código assume que todos os valores de tempo estão presentes, caso contrário o intervalo de tempo entre as observações pode ser desigual. Uma maneira mais limpa de obter taxas de crescimento é uma vez que você tem tsset (ou xtset) os operadores série de tempo pode ser usado sem medo: a classificação correta é automática e os operadores são inteligentes sobre lacunas nos dados (por exemplo, saltos de 1982 a 1984 em dados anuais ). Para mais variáveis ​​o loop poderia ser onde ltwhatevergt poderia ser um general (numérico) varlist. EDIT: A questão mudou desde o primeiro lançamento e os juros são declarados no cálculo das taxas de crescimento somente de 2018 a 2017, com a implicação no exemplo de que apenas esses anos estão presentes. O código mais geral acima, naturalmente, continuará a trabalhar para o cálculo dessas taxas de crescimento. Taxas de crescimento e tempo de duplicação O US Census Bureau tem contagens de população para os EU de 1790 a 2018. Eu tenho as contagens até 2000 a partir da Tabela 4 neste relatório do Censo A Tabela 2 teve contagens ligeiramente diferentes para 1830 e 1940), e adicionou a contagem 2018 de Wikipedia. Esses dados estão em um arquivo ascii chamado uspop1790to2018.dat na seção de conjuntos de dados do site do curso. O arquivo tem duas colunas que representam o ano ea população. A primeira tarefa é ler os dados. Lemos a população quanto tempo para garantir que obtemos todos os dígitos. Vamos plotar a população em milhões (caso contrário, obter rótulos ruins) usando absolutas e escalas log. Taxas de crescimento Qual foi a taxa de crescimento no último período intercensal Vamos listar as contagens de população para os dois últimos censos. Nós especificamos um formato para que Stata não liste grandes números usando a notação científica 14.0fc diz Stata para usar até 14 dígitos sem decimal, usando uma vírgula para indicar milhares Assim, a população dos EUA cresceu 27.323.632 entre 2000 e 2018. Verifique que no anterior Período intercensal cresceu 32.712.048. Se dividimos o aumento populacional pela população no início do período intercensal, ou simplesmente tomamos a proporção e subtraímos uma, obtemos Assim, a população cresceu 9,7 em dez anos. Você acha que isso é 0,97 por ano, mas isso é apenas aproximado porque não compõe o crescimento ao longo dos dez anos. Se começarmos com uma população P1 e composto k vezes por ano a uma taxa r por dez anos, a população crescerá para P2 P1 (1r / k) (10k). Resolvendo para r dá uma taxa de crescimento de r k (P2 / P) (1 / (10k)) - 1. Heres a taxa que obtemos usando valores diferentes de k Um valor unitário de k significa composição anual, 12 significa mensal e 365 significa diariamente. Poderíamos continuar agravando cada minuto, ou cada segundo, mas você pode ver que nosso cálculo está se aproximando rapidamente de um limite. A partir do cálculo elementar, sabemos que, como k - infin, nossa equação se torna P2 P1 exp (10 r). E resolvendo para r dá log (P2 / P1) / 10. De modo que o valor limite é Esta é uma taxa média anualizada de crescimento. Observe que pelo tempo que combinamos a cada dois meses já tínhamos o valor correto para cinco casas decimais. Crescendo mais lentamente Podemos agora calcular a taxa de crescimento de toda a história (censitária) dos EUA. Tratamos todos os censos com dez anos de diferença, embora isso não seja exatamente verdadeiro: ao longo do tempo, o recenseamento mudou de agosto para junho e depois para abril (Exceto para 1920, que foi feito em janeiro). Se você quiser fazer um cálculo mais preciso as datas necessárias estão na referência dada no topo. Observe o uso de n-1 para referir-se ao valor anterior, gerando um valor ausente para a primeira linha Agora, nós traçamos as taxas ao longo do tempo. Como a taxa de crescimento se refere ao período entre dois censos, faz sentido plotar contra os pontos médios dos anos do censo, excluindo o último. O gráfico é mostrado abaixo, combinado com um gráfico do tempo de duplicação. Vemos que a taxa de crescimento foi de cerca de 3 por cerca de metade do século 19, declinou de forma constante por quase 100 anos com um mergulho antes da guerra, recuperou com o baby boom pós-guerra e, em seguida, retomou seu declínio. Tempo de duplicação A uma taxa de crescimento instantânea r. O tempo de duplicação é log (2) / r. A população dos Estados Unidos dobrava a cada 22-24 anos na primeira metade do século XIX, mas o tempo de duplicação aumentou constantemente (exceto para um pico de antes da guerra) e agora leva 75 anos para dobrar. Verificar que no período intercensal anterior a taxa de crescimento foi de 0,0124 eo tempo de duplicação foi de 56 anos. Cópia 2017 Germaacuten Rodriacuteguez, Princeton UniversityAnnunção Isto é explicado no conselho que você foi solicitado a ler antes de postar. Por seu borne 73rd, você deve (por favor) ter lido o conselho do FAQ Finalmente, nós pedimos que no general você não afixa. dta ou limas de. zip tampouco. Isso ocorre porque, como acima, ele obriga os membros a acionar Stata (e / ou algum outro programa) com o arquivo para ver o problema, o que pode ser difícil ou demorado se você tiver um grande ou complicado dataset membros podem ter versões de Stata mais cedo do que o seu, de tal forma que eles não conseguem ler seus arquivos. dta. De qualquer forma, os tópicos tornam-se mais difíceis de entender se dependem de pessoas que lêem em um conjunto de dados: o código curto e os exemplos de dados são muito mais fáceis de trabalhar, como explicado acima. Está aqui uma amostra de seus dados como você é pedido para mostrá-los. Percebemos imediatamente dois problemas. Primeiro, o ano é armazenado como 95, 98, 99, quando antes de 2000. Você entende isso, nós entendemos isso facilmente Stata não tem chance de ver isso por si mesmo. Assim, este precisa de fixação: Em segundo lugar, os dados são irregularmente espaçados. Isso é solúvel, mas precisa de cuidados. Eu defino taxa de crescimento como mudança / (duração original)). Você pode querer outras definições, p. Para multiplicar por 100. Você não especificou se você quer a taxa de crescimento entre cada data, ou a taxa de crescimento anual média (desde que todo o seu período de vezes não são do mesmo comprimento) Além disso, você quer que em uma única variável ou não De qualquer forma, você poderia começar por: se você quiser taxa média de crescimento anual, você simplesmente peso da fração pelo número inverso de anos Estes códigos irá criar uma variável, cujas observações indicam a taxa de crescimento (média) até o ano em curso (a partir de Os limites que você queria). 24 Oct 2017, 11:23 Nick, eu realmente não acho que a apresentação dos anos iria gerar problemas, então eu ignorei essa diferença. No entanto, seguindo sua orientação, estabelecemos um padrão para a variável. Como para a diferença de comprimento dos períodos, este era realmente o problema que eu vi como mais complicado resolver. Eu fiz o cálculo das taxas de crescimento manualmente para verificar com a sintaxe dos resultados que você sugeriu, mas os resultados foram diferentes, então tentei a sintaxe sugerida por Charlie e isso obteve resultados semelhantes aos obtidos pelo cálculo manual. Mais uma vez obrigado por suas contribuições e orientação. Comentário 24 Oct 2017, 13:22 Girlan, eu deveria avisá-lo que eu segundo Nick na edição do ano, eu não percebi, mas ele está certo. Estas condições são apenas para atender aos seus dados (então não uma fórmula geral): Aqui eu notei que se dois anos são seguidores (por exemplo, 2002 e 2003) você não queria a taxa de crescimento entre essas duas datas, mas 2002 foi o fim de 99- 2002 e 2003 é o início do período 2003-2006. Então eu peço Stata não calcular a taxa de crescimento se os dois anos são consecutivos (esta é a primeira parte.) Fazendo isso você cobrir todos os anos não desejados, com exceção de 2017, porque iria calcular a taxa de crescimento de 2009-2017, Que você não indicou querer, assim que eu adiciono o amp ano2017 condição. Algumas observações. Eu escrevi quotanoquot não quotyearquot desde que sua variável específica é fria dessa forma, então mantenha a denominação em linha com o seu conjunto de dados. Então, eu não entendo o que você obtém fazendo computação quotmanualquot taxa de crescimento, não há tais coisas como fórmula aproximada para isso. A taxa de crescimento anual média é a fórmula que eu dei a você, não qualquer outro. Finalmente, fico pensando sobre a comparação da taxa de crescimento total entre o período de vezes que não compartilham o mesmo comprimento. Eu não sei muito sobre seu tópico, mas acho que é provável que cause problemas. Espero que isso seja mais claro agora, Best, Charlie Comentário 24 Oct 2017, 14:34 Obrigado, Charlie para esclarecimento. Eu só me enganando quando eu escrevo uma nova mensagem e escrevi um termo de ano, não quotyearquot como mostrado no meu banco de dados e como você corretamente declarou na sua sintaxe. Como eu fiz a maneira manual de Cálculos para comparar com os resultados apresentados por Stata entender este quotmanualquot como eu fiz os cálculos em Excel. No que diz respeito à comparação das taxas de crescimento, isso não será feito, então eu acho que não haverá grandes problemas no meu trabalho. O ideal para mim foi ter dados de ano 2018 em vez de 2009, no entanto, a pesquisa que estou me referindo não foi realizada em 2018. Finalmente, descobri que dois anos consecutivos seria quotyear e quotyear n-1quot e não quotyearquot e quotyear N-1 1 Eu não entendo este quot1quot. Se eu tivesse dados para o ano de 2018, a sintaxe que você produziu seria a mesma que eu deveria usar Mais uma vez, obrigado. A sintaxe especifica que os dois anos seguintes (nas linhas n-1 e n) não devem ser consecutivos, então n não deve ser igual a (n-1) 1 Isso ocorre porque no seu exemplo, dois anos seguintes são dois limites De diferentes períodos de tempo que você queria estudar, mas um único ano não lhe interessa. Você poderia remover esta condição, e ver o que acontece, você terá a taxa de crescimento entre 2002 e 2003 que indica, que você não pediu. Sem o quot1quot, o código simplesmente verificar se duas observações seguintes de ano variáveis ​​correspondem ao mesmo valor, mas isso não aparece em seus dados, então eu não verificar para isso. Para cobrir também este problema, você poderia tentar: Para as diferenças entre duas seguintes observações de ano sendo superior a um (e assim a zero). No entanto, aqui você terá que recodificar os anos pré-2000 em 19xx para não levar a erros. Espero que isso seja mais claro agora, Best, Charlie

No comments:

Post a Comment