Esta estrutura de dados é bastante imprópria para o propósito. Assumindo um ID de identificador, você precisa reformular. por exemplo. Então, uma média móvel é fácil. Use tssmooth ou apenas gerar. por exemplo. Mais sobre por que sua estrutura de dados é bastante imprópria: não apenas 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. Usando aqueles em qualquer análise subseqüente seria em algum lugar entre estranho e impossível. EDIT Ill dar um loop de amostra, enquanto não se move da minha postura que é técnica pobre. Eu não vejo uma razão por trás de sua convenção de nomenclatura em que P1947 é uma média para 1943-1945 eu suponho que é apenas um erro de digitação. Vamos supor que temos dados para 1913-2012. Por um período de 3 anos, perdemos um ano em cada final. Isso poderia ser escrito de forma mais concisa, à custa de uma enxurrada de macros dentro de macros. Usar pesos desiguais é fácil, como acima. A única razão para usar egen é que ele não desista se houver falhas, o que o acima fará. Por uma questão de completude, note que é fácil lidar com as falhas sem recorrer ao egen. e o denominador Se todos os valores estiverem faltando, isso reduz para 0/0 ou está faltando. Caso contrário, se algum valor estiver faltando, adicionamos 0 ao numerador e 0 ao denominador, o 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 ao longo de mais anos, substituiríamos as linhas acima por um loop, que é o que egen faz. Stata: Análise de Dados e Software Estatístico Nicholas J Cox, Universidade de Durham, Reino Unido Christopher Baum, Boston College egen, ma () e suas limitações Statarsquos comando mais óbvio para calcular médias móveis é a função ma () de egen. Dada uma expressão, ela cria uma média móvel de - período dessa expressão. Por padrão, é considerado como 3. deve ser ímpar. No entanto, como indica a entrada manual, egen, ma () pode não ser combinado com varlist:. e, por essa razão, não é aplicável aos dados do painel. Em qualquer caso, está fora do conjunto de comandos escritos especificamente para séries temporais, veja séries temporais para detalhes. Abordagens alternativas Para calcular as médias móveis dos dados do painel, existem pelo menos duas opções. Ambos dependem do conjunto de dados que foi previamente definido. Isso vale muito a pena: não só você pode salvar a si mesmo repetidamente, especificando a variável do painel e a variável de tempo, mas o Stata se comporta de maneira inteligente, considerando quaisquer lacunas nos dados. 1. Escreva sua própria definição usando gerar Usando operadores de séries temporais, como L. e F.. dê a definição da média móvel como o argumento para gerar uma declaração. Se você fizer isso, você está, naturalmente, não limitado às médias móveis centradas igualmente ponderadas (não ponderadas) calculadas por egen, ma (). Por exemplo, médias móveis de três períodos igualmente ponderadas seriam dadas por e alguns pesos podem ser facilmente especificados: Você pode, obviamente, especificar uma expressão como log (myvar) em vez de um nome de variável como myvar. Uma grande vantagem dessa abordagem é que o Stata automaticamente faz a coisa certa para os dados do painel: os valores iniciais e finais são trabalhados dentro dos painéis, assim como a lógica determina que eles devem 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 pode ser útil para gerar uma expectativa adaptativa do que uma variável será baseada puramente em informações até o momento: 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 usado com timeseries trimestrais.) 2. Use egen, filter () do SSC Use o filtro de função egen gravado pelo usuário () do pacote egenmore no SSC. No Stata 7 (atualizado após 14 de novembro de 2001), você pode instalar este pacote depois de qual ajuda egenmore aponta para detalhes no filter (). Os dois exemplos acima seriam renderizados (nessa comparação, a abordagem de geração é talvez mais transparente, mas veremos um exemplo do oposto em um momento). Os atrasos são um numlist. leads são lags negativos: nesse caso, -1/1 se expande para -1 0 1 ou lead 1, lag 0, lag 1. Os coeficientes, outro numlist, multiplicam os itens atrasados ou principais correspondentes: nesse caso, esses itens são F1.myvar. myvar e L1.myvar. O efeito da opção normalizar é escalar cada coeficiente pela soma dos coeficientes de modo que coef (1 1 1) normalize é equivalente a coeficientes de 1/3 1/3 1/3 e coef (1 2 1) normalizar é equivalente para coeficientes de 1/4 1/2 1/4. Você deve especificar não apenas os atrasos, mas também os coeficientes. Como egen, ma () fornece o caso igualmente ponderado, a principal justificativa para egen, filter () é suportar o caso com ponderação desigual, para o qual você deve especificar coeficientes. Pode-se dizer também que obrigar os usuários a especificar coeficientes é um pouco mais de pressão para pensar sobre quais coeficientes eles querem. A principal justificativa para pesos iguais é, nós achamos, simplicidade, mas pesos iguais têm péssimas propriedades no domínio da frequência, para mencionar apenas uma consideração. O terceiro exemplo acima pode ser qualquer um dos dois, tão complicado quanto a abordagem de geração. Há casos em que egen, filter () fornece uma formulação mais simples do que gerar. Se você quer um filtro binomial de nove termos, que os climatologistas acham útil, então parece talvez menos horrível do que, e mais fácil de acertar do que, assim como na abordagem gerar, egen, filter () funciona corretamente com dados em painel. De fato, como dito acima, depende do conjunto de dados ter sido previamente definido. 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 Stata 7 atualizado por ssc inst tsgraph. E sobre o subconjunto com Se nenhum dos exemplos acima fizer uso de restrições. De fato, eg, ma () não permitirá se ser especificado. Ocasionalmente, as pessoas querem usar quando calculam as médias móveis, mas seu uso é um pouco mais complicado do que costuma ser. O que você esperaria de uma média móvel calculada com if? Vamos identificar duas possibilidades: Interpretação fraca: 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 consequência de alguma condição if, que as observações 1-42 sejam incluídas, mas não as observações 43 em diante. Mas a média móvel para 42 dependerá, entre outras coisas, do valor da observação 43 se a média se estender para trás e para frente e for pelo menos 3, e dependerá de forma semelhante de algumas das observações 44 em algumas circunstâncias. Nosso palpite é que a maioria das pessoas iria para a interpretação fraca, mas se isso é correto, egen, filter () não suporta se qualquer um deles. Você sempre pode ignorar o que você não quer ou até mesmo definir valores indesejados para perder depois usando substituir. Uma nota sobre resultados perdidos nas extremidades das séries Como as médias móveis são funções de atrasos e leads, egen, ma () produz falta onde as defasagens e os leads não existem, no início e no fim da série. Uma opção de opção força o cálculo de médias móveis mais curtas e não centradas para as caudas. Em contraste, nem gerar nem egen, filter () faz, ou permite, qualquer coisa especial para evitar a perda de resultados. Se algum dos valores necessários para o cálculo estiver faltando, esse resultado estará ausente. Cabe aos usuários decidir se e quais cirurgias corretivas são necessárias para tais observações, presumivelmente depois de olhar para o conjunto de dados e considerar qualquer ciência subjacente que possa ser trazida para suportar. Anúncio É meu primeiro post e tentarei ser tão claro que possível. O link para o banco de dados principal está no final do post. Contexto Estou usando o Stata / SE 12.0 no Windows 10. Comecei com o Stata há apenas algumas semanas e estou tentando aprender sozinho para uma tarefa em alguns dias (porque cada tabela ou figura me levou dias e dias): replicando o artigo “Afetividade Escolar Obrigatória Afeta Schoolig e Ganhos”: web. stanford. edu/ pista / angrist. pdf que consiste em mostrar que as pessoas nascidas nos últimos trimestres dos anos têm mais educação em média do que aquelas nascidas no primeiro ano. trimestres 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 (EDUC variável) para todas as pessoas nascidas num determinado ano (variável YOB por ano de nascimento) durante um determinado trimestre (QOB). Há uma tendência geral crescente e, em detrimento dos dados, eles usam uma média móvel (figura IV), que é onde eu fui bloqueado nos ú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 no trimestre j, calcular o número médio de anos de educação não para este ano e trimestre, mas para o trimestre anterior, 2 trimestres antes, um quarto mais tarde e 2 trimestres depois (explicado p. 985 do jornal). 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, terceiro trimestre e computar média de anos de escolaridade dos nascidos em 1930, 2º trimestre (nascidos um quarto antes da dada coorte), mesmo para os nascidos em 1930, 1º trimestre (nascidos 2 quartos antes da dada coorte), mesmo para os nascidos em 1930, 4º trimestre (um quarto após a coorte dada), e o mesmo para os nascidos em 1931, 1º trimestre (2 trimestres após a coorte dada). Em seguida, a média móvel é obtida adicionando esses 4 valores e dividindo por 4. Todo este 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), comecei com o modelo das outras figuras e tentei usar foreach loop e muitas outras coisas (não me lembro das mensagens de erro / não sabia que ia para postar aqui) mas ainda não descubra como dizer ao Stata: quotfor each YOBQn. calcular média (EDUC) de YOBQ n-1, YOBQ n-2, YOBQ n1, YOBQ n2quot. Para fazer a soma e dividir por 4 depois disso, deve ser mais fácil. Recebi uma dica excepcional do assistente de ensino: "experimente o comando tssmooth". Primeiro você terá que criar uma variável de tempo para a qual o comando egen group será muito útil. Mas, de acordo com minha pesquisa sobre quotegen e quottsset, nos manuais de dados e no livro Cameron amp Trivedi, quotEconometrics using 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 de tssmooth mas eu não consegui passar dessa fase já que aparentemente, a notação n não é permitida com quotegenquot (erro r (101) quotweights not allowedquot) e ainda estou muito confuso com como combinar egen, tsset e tssmooth. Seria ótimo se alguém pudesse me ajudar com a forma de resolver o erro "os ganhos não permitidos" e como combinar os comandos quotegenquot, quottssetquot e quottssmoothquot. Muito obrigado Postscript: aqui é o banco de dados pelo caminho 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 de Março de 2016 às 01:55. 25 de março de 2016, 22:50 Aqui está uma versão mais curta da minha pergunta: como evitar o erro abaixo (r451 em negrito) e como dizer ao Stata que a média móvel de quotmedstay1quot deve ser calculada para cada valor de tps / por YOB QOB para todos os que nasceram no mesmo ano e no mesmo trimestre, classificando por anos e trimestres e calculando o número médio de anos de educação / por YOB QOB. sort: egen medstay1 significa (EDUC) / gera uma nova variável YOBNew porque o comando yq requer que o primeiro argumento esteja entre 1000 e 9999 e 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 CENSO80 / gerar uma variável de tempo que tenha o formato requerido no formato de ajuda tsset / gen tpsyq (YOBNew, QOB) tq tps / a seguinte instrução retorna r451. valores de tempo repetidos no painel, provavelmente porque há milhares de pessoas nascidas no mesmo ano e no mesmo trimestre, obviamente com o mesmo número médio de anos de estudo. Como evitar esse erro / tsset medstay1 tps / instrução para ter o MA médio móvel, mas eu quero que o movimento da média de medstay1 seja calculado para cada valor dos quottps de variação de tempo. Qual comando me permitiria fazer isso ou é feito automaticamente / tssmooth ma MA medstay1. janela (2 0 2) Espero que alguém possa ajudar.
No comments:
Post a Comment