Wednesday 11 October 2017

Movendo O Comando Stata Médio


Esta estrutura de dados é completamente imprópria para a finalidade. Assumindo um id identificador você precisa remodelar. por exemplo. Em seguida, uma média móvel é fácil. Use tssmooth ou simplesmente gere. por exemplo. Mais sobre por que sua estrutura de dados é bastante imprópria: não só o cálculo de uma média móvel precisa de um loop (não necessariamente envolvendo egen), mas você estaria criando várias novas variáveis ​​extras. Usá-los em qualquer análise subseqüente seria algo entre estranho e impossível. EDIT III dar um loop de amostra, enquanto não se deslocando da minha posição que é má técnica. Eu não vejo uma razão por trás de sua convenção de nomenclatura em que P1947 é um meio para 1943-1945 Eu suponho que é apenas um erro de digitação. Vamos supor que temos dados para 1913-2012. Por meio de 3 anos, perdemos um ano em cada extremidade. Isso poderia ser escrito de forma mais concisa, à custa de uma enxurrada de macros dentro de macros. Usando pesos desiguais é fácil, como acima. A única razão para usar o egen é que ele não desiste se houver faltas, o que o acima fará. Por uma questão de exaustividade, note que é fácil lidar com falhas sem recorrer a egen. E o denominador Se todos os valores estiverem em falta, este reduz-se a 0/0, ou em falta. Caso contrário, se algum valor estiver faltando, adicionamos 0 ao numerador e 0 ao denominador, que é o mesmo que ignorá-lo. Naturalmente, o código é tolerável como acima para médias de 3 anos, mas para esse caso ou para a média durante mais anos, que iria substituir as linhas acima por um loop, que é o que egen does. Stata: Análise de Dados e Software Estatístico Nicholas J , E suas limitações O comando mais óbvio de Statarsquos para calcular médias móveis é a função ma () de egen. Dada uma expressão, cria uma média móvel - period dessa expressão. Por padrão, é tomado como 3. deve ser ímpar. No entanto, como a entrada manual indica, egen, ma () não pode ser combinado com varlist:. E, por esse motivo, não é aplicável aos dados do painel. Em qualquer caso, ele está fora do conjunto de comandos especificamente escrito para séries de tempo ver série de tempo para obter detalhes. Abordagens alternativas Para calcular médias móveis para dados de painel, existem pelo menos duas opções. Ambos dependem do conjunto de dados ter sido tsset previamente. Isto vale muito a pena fazer: não só você pode salvar a si mesmo repetidamente especificando variável de painel e variável de tempo, mas Stata se comporta inteligentemente, dado quaisquer lacunas nos dados. 1. Escreva sua própria definição usando generate Usando operadores de séries temporais como L. e F.. Dar a definição da média móvel como o argumento para uma declaração de geração. Se você fizer isso, você não estará, naturalmente, limitado às médias móveis ponderadas (não ponderadas) centradas calculadas por egen, ma (). Por exemplo, as médias móveis ponderadas de três períodos seriam dadas por e alguns pesos podem ser facilmente especificados: Você pode, naturalmente, especificar uma expressão como log (myvar) em vez de um nome de variável como myvar. Uma grande vantagem dessa abordagem é que a Stata faz automaticamente a coisa certa para os dados do painel: os valores iniciais e retardatários são elaborados nos painéis, exatamente como a lógica determina que eles devam ser. A desvantagem mais notável é que a linha de comando pode ficar bastante longa se a média móvel envolver vários termos. Outro exemplo é uma média móvel unilateral baseada apenas em valores anteriores. Isso poderia ser útil para gerar uma expectativa adaptativa do que uma variável será baseada puramente em informações até à data: o que alguém poderia prever para o período atual com base nos últimos quatro valores, usando um esquema de ponderação fixo Especialmente comumente usado com timeseries trimestrais.) 2. Use egen, filter () de SSC Use o filtro de função egen escrito pelo usuário () do pacote egenmore em SSC. No Stata 7 (atualizado após 14 de novembro de 2001), você pode instalar este pacote após o qual a ajuda egenmore aponta para detalhes sobre filter (). Os dois exemplos acima seriam renderizados (nesta comparação, a abordagem de gerar é talvez mais transparente, mas veremos um exemplo do oposto em um momento). Os retornos são um numlist. Sendo os retornos negativos: neste caso, -1/1 se expande para -1 0 1 ou chumbo 1, atraso 0, atraso 1. Os coeficientes, outro número, multiplicam os correspondentes itens atrasados ​​ou principais: neste caso, esses itens são F1.myvar. Myvar e L1.myvar. O efeito da opção de normalização é escalar cada coeficiente pela soma dos coeficientes para que o coeficiente (1 1 1) normalize seja equivalente a coeficientes de 1/3 1/3 1/3 e o coeficiente (1 2 1) normalize seja equivalente A coeficientes de 1/4 1/2 1/4. Você deve especificar não só os atrasos, mas também os coeficientes. Como egen, ma () fornece o caso igualmente ponderado, a razão principal para egen, filter () é suportar o caso desigualmente ponderado, para o qual você deve especificar coeficientes. Poderia também ser dito que obrigando os usuários a especificar coeficientes é uma pequena pressão extra sobre eles para pensar sobre quais coeficientes eles querem. A principal justificativa para pesos iguais é, suponhamos, simplicidade, mas pesos iguais têm propriedades de domínio de frequência ruim, para mencionar apenas uma consideração. O terceiro exemplo acima pode ser qualquer um dos quais é quase tão complicado quanto a abordagem gerar. Há casos em que egen, filter () dá uma formulação mais simples do que gerar. Se você quer um filtro binomial de nove períodos, que os climatologistas acham útil, então parece talvez menos horrível do que, e mais fácil de obter do que, Assim como com a abordagem de geração, egen, filter () funciona corretamente com dados de painel. Na verdade, como dito acima, depende do conjunto de dados ter sido tsset previamente. Uma dica gráfica Depois de calcular suas médias móveis, você provavelmente vai querer olhar para um gráfico. O comando tsgraph escrito pelo usuário é inteligente sobre conjuntos de dados tsset. Instale-o em um STATAT 7 atualizado por ssc inst tsgraph. Que sobre subconjunto com se nenhum dos exemplos acima fazer uso de se restrições. Na verdade egen, ma () não permitirá se a ser especificado. Ocasionalmente as pessoas querem usar se ao calcular médias móveis, mas seu uso é um pouco mais complicado do que é normalmente. O que você esperaria de uma média móvel calculada com if. Vamos identificar duas possibilidades: Fraca interpretação: Eu não quero ver nenhum resultado para as observações excluídas. Interpretação forte: Eu nem quero que você use os valores para as observações excluídas. Aqui está um exemplo concreto. Suponha como uma conseqüência de alguma condição if, as observações 1-42 são incluídas, mas não observações 43 sobre. Mas a média móvel para 42 dependerá, entre outras coisas, do valor para a observação 43 se a média se estender para trás e para a frente e for de comprimento pelo menos 3, e dependerá também de algumas das observações 44 em diante em algumas circunstâncias. Nossa suposição é que a maioria de povos iria para a interpretação fraca, mas se aquele está correto, egen, filter () não suporta se qualquer um. Você sempre pode ignorar o que você donrsquot quer ou mesmo definir valores indesejados para desaparecer depois usando substituir. Uma nota sobre resultados faltando nas extremidades da série Como as médias móveis são funções de defasagens e derivações, egen, ma () produz faltando onde os atrasos e as derivações não existem, no início e no final da série. Uma opção nomiss força o cálculo de médias móveis mais curtas e não centralizadas para as caudas. Em contrapartida, nem gerar nem egen, filter () faz, ou permite, nada de especial para evitar resultados em falta. Se algum dos valores necessários para o cálculo estiver faltando, então esse resultado está faltando. Cabe aos usuários decidir se e o que a cirurgia corretiva é necessária para essas observações, presumivelmente depois de olhar para o conjunto de dados e considerar qualquer ciência subjacente que pode ser trazida para bear. Announcement É o meu primeiro post e vou tentar ser tão claro que possível. O link para o banco de dados principal está no final da postagem. Contexto Estou usando o Stata / SE 12.0 no Windows 10. Eu comecei com o Stata há apenas algumas semanas e estou tentando aprender por conta própria para uma atribuição devido em poucos dias agora (porque cada tabela ou figura me levou dias e Dias): a replicação do papel exige que as pessoas nascidas nos últimos trimestres tenham mais educação em média do que as que nasceram no primeiro Devido às leis de escolaridade obrigatória. Os primeiros números desenham um gráfico do número médio de anos de educação (variável EDUC) para todas as pessoas nascidas de um determinado ano (variável YOB para o ano de nascimento) durante um determinado trimestre (QOB). Há uma tendência geral de aumento e para detrend os dados, eles usam uma média móvel (figura IV), que é onde eu tenho sido bloqueado para os últimos 5 dias. Problema No banco de dados, existem 27 variáveis ​​entre as quais v4 renomeado EDUC, v27 renomeado YOB (ano de nascimento) e v18 renomeado QOB (trimestre de nascimento). O que é necessário para a média móvel é, para cada conjunto de pessoas nascidas no ano c e trimestre j, calculando o número médio de anos de educação não para este ano e trimestre, mas para o trimestre imediatamente anterior, 2 quartos antes, um quarto Mais tarde e 2 quartos mais tarde (explicado p. 985 do papel). Por exemplo, se eu olhar para os homens nascidos entre 1930 e 1939 como nesta figura (figura IV do artigo: onedrive. live/redirresi. Ntphoto2cpng), eu preciso começar com a coorte nascida em 1930, 3º trimestre e calcular a Número médio de anos de escolaridade dos nascidos em 1930, 2º trimestre (nascido um quarto antes da dada coorte), mesmo para os nascidos em 1930, 1º trimestre (nascido 2 trimestres antes da coorte), mesmo para os nascidos em 1930, 4º trimestre (um quarto após a coorte), e o mesmo para os nascidos em 1931, 1º trimestre (2 trimestres após a coorte). Em seguida, a média móvel é obtida adicionando esses 4 valores e dividindo por 4. Todo esse processo deve ser repetido para cada coorte entre 1930, 3º trimestre e 1939, 2º trimestre. Do-File Para o do-file (onedrive. live/redirresid6919D329B3BF1EF23227ampauthkeyAO2cxEN AGpZMgsMampithintfile2cdo), eu comecei com o modelo das outras figuras e tentei usar loop foreach e muitas outras coisas (não me lembro das mensagens de erro / não sabia que estava indo Para postar aqui), mas ainda não descobrir como dizer Stata: quotfor cada YOBQn. Calcular média (EDUC) de YOBQ n-1, YOBQ n-2, YOBQ n1, YOBQ n2. Para fazer a soma e dividir por 4 depois que deve ser mais fácil. Recebi uma dica excepcional do assistente de ensino: tente o comando tssmooth. Você primeiro terá que criar uma variável de tempo para a qual o comando do grupo egen será muito útil. Mas, de acordo com minha pesquisa sobre quotegenquot e quottssetquot nos manuais de dados e no livro Cameron amp Trivedi, quotEconometrics usando Stataquot (último link): stata / manuals14 / degen. Tfolder2cdta stata / manuals14 / gsw11.pdf stata / manuals14 / u11.p. Languagesyntax stata / manuals14 / u13.p. Itsubscripting onedrive. live/redirresi. Intfile2cpdf Eu deveria tsset os dados antes tssmooth, mas eu não ter passado este estágio desde aparentemente, a notação n não é permitido com quotegenquot (erro r (101) quotweights não allowedquot) e ainda estou muito confuso com a forma de combinar egen, tsset E tssmooth. Seria ótimo se alguém pudesse me ajudar com a forma de resolver os quotweights não allowedquot erro e como combinar os comandos quotegenquot, quottssetquot e quottssmoothquot. Muito obrigado Postscript: aqui está o banco de dados pela maneira onedrive. live / redirresi. Tfolder2cdta Nota: Eu tenho o do-file para as outras figuras e tabelas mais importantes do artigo, exceto a tabela I, mas este arquivo provavelmente não é necessário / apenas para info: onedrive. live/redirresi. Hintfile2cdo Última edição por Amarylis Durand 25 Mar 2016, 01:55. 25 Mar 2016, 22:50 Aqui está uma versão mais curta da minha pergunta: como evitar o erro abaixo (r451 em negrito) e como dizer Stata que a média móvel de quotmedstay1quot deve ser calculada para cada valor de tps / por YOB QOB Para todos os nascidos no mesmo ano e no mesmo trimestre, classificar por anos e trimestres crescentes e calcular o número médio de anos de educação por YOB QOB. Sort: egen medstay1 mean (EDUC) / gerar uma nova variável YOBNew porque o comando yq exige que o primeiro argumento esteja entre 1000 e 9999 e os nossos dados para YOB no Censo de 1980 estão entre 30 e 49 em vez de 1930 e 1949 / gen YOBNewYOB Substitua YOBNew YOB1900 se CENSUS80 / gerar uma variável de tempo que tem o formato requerido no formato tsets / gen tpsyq (YOBNew, QOB) tq tps / a seguinte instrução retorna r451. Repetidos valores de tempo no painel, provavelmente porque há milhares de pessoas nascidas durante o mesmo ano e mesmo trimestre, obviamente com o mesmo número médio de anos de educação. Como evitar este erro / tsset medstay1 tps / instrução para ter a média móvel MA, mas eu quero o movimento da média de medstay1 a ser calculado para cada valor do quivis timevariable. Que comando me permitiria fazer isso ou é feito automaticamente / tssmooth ma MA medstay1. Window (2 0 2) Eu espero que alguém possa ajudar. Em Stata, como faço para criar uma nova variável com base em dados existentes Seguem-se exemplos de como criar novas variáveis ​​no Stata usando os comandos gen (short for generate) e egen: To Crie uma nova variável (por exemplo, newvar) e defina seu valor em 0. use: Para criar uma nova variável (por exemplo, total) a partir da transformação de variáveis ​​existentes (por exemplo, a soma de v1, v2, v3 e v4), use: , Use egen com a opção rowtotal embutida: O comando egen trata os valores ausentes como 0. Para criar uma variável (por exemplo, avg) que armazena a média de quatro variáveis ​​(v1, v2, v3 e v4), use: O / (barra) para denotar a divisão e um (asterisco) para a multiplicação. Alternativamente, use o egen com a opção built-in rowmean: Stata também permite que você aproveite as funções internas para transformações variáveis. Por exemplo, para obter o log natural de v1 e criar uma nova variável (por exemplo, v1log), use: Para obter ajuda adicional, consulte os arquivos de ajuda no Stata (para cada um dos tópicos a seguir, digite o comando de ajuda correspondente): Recém-preso em algo que estou trabalhando. E assim eu realmente preciso de sua preciosa ajuda. Eu tenho um conjunto de dados de preços de fechamento de um estoque (nbmps) em que eu quero calcular as médias móveis e as bandas superior e inferior, como o indicador de banda bollinger. Eu encontrei em algum lugar algumas dicas sobre o que eu estou tentando fazer e eu escrever o meu código da seguinte forma: gen moveave1 (F1.nbmpsnbmpsL1.nbmps) / 4 gen upperband moveave11.04 gen banda inferior moveave 10.96 Heres o problema: linha nbmps moveave1 uppperband lowerband Dados Quando eu traço o desenho mostra-me 4 linhas (1 de preços e sua ok) e os outros 3 são dar ou tomar igual, eles não diferem em posição, eles são sobrepostos. Eu li que geralmente para gerar a banda superior alguém usar 0.04SMA. Mas eu não sei, mesmo porque eu sou um usuário novato de stata, então talvez eu estou escrevendo algo errado. Todas as respostas são bem-vindas Obrigado pela sua colaboração É difícil ver que você tem um problema real aqui. Uma média móvel com pesos 1: 2: 1 (Hanning) pode muito bem estar perto dos dados originais. Realmente não suavização muito. Da mesma forma, suas variáveis ​​extras são por design apenas 4 maiores e 4 menores do que o bom, então por que ficar surpreso que eles estão próximos EDIT: Você omitiu o fator 2 sobre o valor médio. Dividir a soma de 3 valores por 4 não faz nenhum sentido de outra maneira. Última edição por Nick Cox 03 Set 2016, 08:58. 03 Set 2016, 08:52 HI Chris. Você pode usar a função de filtro do comando egenmore por Nic Cox. Instale o egenmore do ssc (ssc install egenmore). Se seu conjunto de dados tem uma variável chamada preço e outra variável de tempo chamado período, você pode fazer o seguinte: tsset period egen mafilter (preço), defasagens (0/3) c (0,25 0,25 0,25 0,25) tsline period ma Agora você pode criar outros 2 variáveis ​​para as faixas superior e inferior adicionando / subtraindo qualquer fator desejado. Se você quiser usar o desvio padrão para as bandas superior / inferior, você pode usar a função sd de egen: egen sdsd (price) Espero que esta ajuda. Obrigado pelas respostas. Como você pode notar, provavelmente eu cometi alguns erros no cálculo das bandas. Portanto, se theres um pacote que posso usar para excluir a minha própria culpa é melhor. Eu vou tentar o que Alberto disse sobre o comando egenmore por Nick Cox, e eu vou compartilhar com vocês meus resultados. Obrigado a ambos novamente para a ajuda. PS: egen mafilter (preço), defasagens (0/3) c (0,25 0,25 0,25 0,25) O que a parte em negrito significa Pps: Nick você estava certo i dividido por 4 que era nosense, provavelmente i misclick no teclado Última edição por Chris Nova 04 Set 2016, 04:01.

No comments:

Post a Comment