Wednesday, 8 November 2017

Gen Dummy In Stata Forex


O meu conjunto de dados inclui duas variáveis ​​principais X e Y. A variável X representa códigos distintos (por exemplo, 001X01, 001X02, etc.) para vários itens de computador com diferentes marcas. A variável Y representa o imposto cobrado por cada código da variável X (por exemplo, 15 15 para 001X01) em uma loja. Eu criei categorias para esses itens de computador usando variáveis ​​dummy (por exemplo, a variável dummy HD para Hard-Drives, toma valor de 1 quando a variável X representa uma HD, etc.). Eu tenho uma lista de mais de 40 variáveis ​​(duas delas representando X e Y. e o resto é um monte de variáveis ​​falsas para as diferentes categorias que eu criei para itens de computador). Gostaria de exibir as médias de todas essas categorias usando um loop no Stata, mas não tenho certeza de como fazer isso. Por exemplo, o código: me dá o Imposto médio para a categoria que representa Hard Drives. Como posso usar um loop no Stata para exibir automaticamente todos os Impostos médios cobrados para cada categoria, eu faria isso sem problemas, mas eu quero repetir esse processo por vários anos, então eu gostaria de usar um loop para cada um Ano para chegar a esse resultado. Meu objetivo é criar um arquivo Excel separado com cada uma das categorias de computadores que Ive criou (38 total) e o imposto médio para cada categoria por ano. Perguntou 22 de fevereiro às 13h13 Por que se preocupar com o loop e criar as variáveis ​​do indicador Se eu entender corretamente, seu conjunto de dados inicial permite o uso de um colapso simples: para levar para o Excel, você pode tentar exportar excel ou colocar excel. Execute o colapso da ajuda e ajude a exportar para obter detalhes. Porque você insiste, abaixo é um exemplo que dá o mesmo resultado usando loops. Eu assumo a mesma entrada de dados que antes. Alguns testes usando este banco de dados de exemplo com expandir 1000000 mostram que a velocidade é praticamente a mesma. Mas quase com certeza. Você (incluindo seu futuro você) e seus leitores preferirão o colapso. É muito mais claro, mais limpo e conciso. É ainda mais bonito. A Stata possui recursos que o tornam bastante diferente de outros idiomas. Uma vez que você começar a segurá-lo, você encontrará que muitas coisas feitas com loops em outros lugares, podem ser feitas sem loop em Stata. Em muitos casos, o último estilo será preferido. Veja os arquivos de ajuda correspondentes usando o ltcommandgt de ajuda e se você não está familiarizado com resultados salvos (por exemplo, r (média)), digite help return. Muito obrigado pela sua resposta. Meus dados realmente não possuem a variável CATEG, apenas CODE amp TAX, o código descreve um item (por exemplo, hd), mas todos os códigos são únicos, mesmo que pertençam à mesma categoria (então eu tenho como 50 códigos diferentes - todos eles São para discos rígidos). Eu criei uma variável fofa para quotcategorizequot os itens. Além disso, NÃO ESTOU usando todos os CÓDIGOS, alguns dos dados incluem peças de computador que eu não estou interessado. Ndash user3339434 22 de fevereiro às 15:36 Colapso definitivamente faz o que eu procuro, eu só tenho que fazer algumas modificações menores (por exemplo, criando uma variável de categoria com base nas variáveis ​​fofas). Obrigado Roberto Ferrer. Ainda adoraria aprender a usar loops em uma situação como essa, qualquer ajuda será apreciada. Ndash user3339434 22 de fevereiro às 15:45 Não há nenhuma vantagem para criar variáveis ​​de indicadores (você diz falso) aqui quando a mesma informação já está disponível em sua variável categórica X (então, por que você acha que precisa criar uma não está desmarcada). Como Roberto Ferrer ressalta, nenhum loop é necessário aqui, mas a técnica de loop disponível é proeminentemente documentada, e. Statasupportfaqsdata-managementhellip ndash Nick Cox 22 de fevereiro 14 às 13:40 Um suplemento a Robertos excelente resposta: Após o colapso. Você precisará de um loop para exportar os resultados para se destacar. Eu prefiro usar códigos numéricos para variáveis, como sua variável de categoria. Em seguida, atribuo-lhes etiquetas de valor. Heres uma versão do código de Robertos que faz isso e que, para uma correspondência mais próxima ao seu problema, adiciona uma variável de ano. O comando delim possibilita listar facilmente cada código em uma linha separada. A função Thelabel na declaração de exportação é uma função de macro estendida para inserir um rótulo de valor no nome do arquivo. Respondeu 22 de fevereiro às 17: 24 Estou tentando gerar uma variável dummy para cada ano de 1996 a 2012 (inclusive), de modo que o manequim de 1996 deve ser igual a 1 se for 1996 e 0, senão usando o comando foreach em Stata para reduzir No tempo (pelo menos para projetos futuros). O que está acontecendo atualmente é que o manequim de 1996 está sendo produzido, mas nenhum outro é gerado. Eu acho que isso tem a ver com a forma como eu estou definindo j. Mas não consigo descobrir a formatação para alcançar os resultados que eu quero. Olhei online e nos arquivos de ajuda do Stata e não consigo encontrar nada sobre esse tópico específico. Aqui está o que eu tenho até agora: continuarei a tentar descobrir isso sozinho, mas se alguém tiver uma sugestão, ficaria muito agradecido. Pediu 2 de maio 14 às 21:34 Vamos olhar esta linha por linha. Você definiu uma macro var local com o ano de conteúdo. Isso é legal, mas você nunca se refere a essa macro local neste código, então a definição é inútil. Você definiu uma macro j local com conteúdo 1996. Isso é legal. Você abre um loop e define o índice do loop para ser j. Isso significa que, dentro do loop, qualquer referência à macro j local será interpretada em termos da lista de argumentos que você fornece. (A definição anterior de j é irrelevante no loop e, portanto, não tem efeito no resto do seu código.) Você especifica que o loop está acima de uma lista de variáveis ​​aqui. Observe que a palavra-chave var aqui é curta para varlist e não tem absolutamente nada para fazer a macro local var var que você acabou de definir. A lista de variáveis ​​consiste no ano de nome de variável único. Esta declaração será interpretada, a única vez que o loop é executado, como as referências à macro local j são substituídas pelo seu conteúdo, o ano do nome da variável. Ano ano é verdade para cada observação. O efeito é um novo dyear variável que é 1 em cada observação. Isso não é um indicador ou uma variável dummy como você deseja. Se você olhar para o seu conjunto de dados com cuidado, você verá que não é uma variável dummy para o ano de 1996. Você está tentando incrementar a macro j local em 1. Mas você apenas configurou a macro j local para conter o ano da string. Que é um nome de variável. Mas você não pode adicionar 1 a uma string e, portanto, a mensagem de erro será a falta de correspondência do tipo. Você não denuncia esse erro, o que é uma surpresa. É um pouco sutil, como no comando anterior o contexto de gerar permite a interpretação da referência ao ano como uma instrução para calcular com o ano variável. Que é naturalmente numérico. Mas os comandos locais são tudo sobre manipulação de string, que pode ou não ter uma interpretação numérica, e seu comando é equivalente, antes de tudo, a instruir Stata para adicionar o que desencadeia um erro de incompatibilidade de tipo. Afastando-se do seu código: considere um loop Isto está mais perto do que você quer, mas torna mais claro outro bug em seu código. Isso criaria variáveis ​​d1996 para d2012, mas cada uma será 1 no ano especificado, mas faltando o contrário, o que não é o que você deseja. Você poderia corrigir isso, adicionando uma linha adicional no loop, mas uma maneira muito mais limpa de fazê-lo é que a linha única é avaliada como 1 quando verdadeira e 0 quando falso, o que é o que deseja. Tudo isso é técnica padrão documentada em U ou P. Como Roberto Ferrer apontou, no entanto, os usuários Stata experientes não definiriam manequins dessa maneira, pois tabular oferece uma opção para fazê-lo sem um loop. Um tutorial que reúne comentários em macros locais, foreach e forvalues ​​loops está dentro de stata-journalsjpdf. htmlarticlenumpr0005 dentro de Stata teria apontado isso como uma das várias peças que você pode ler. O loop não é necessário. Experimente o comando tabular com a opção gen (). Veja ajuda tabular um único caminho. Veja também ajuda xi e ajude as variáveis ​​do fator. Você está tentando percorrer os distintos valores do ano, mas a sintaxe não está correta. Você está fazendo um ciclo de uma lista de variáveis ​​com apenas um elemento: ano. Os níveis de comando de você fornecem os valores distintos, mas, como eu disse, o loop não é necessário.

No comments:

Post a Comment