Tuesday 19 December 2017

Stata moving average egen


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 apenas gerar. 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-2017. 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, claro, 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 de que uma variável será baseada puramente em informações até à data: o que alguém poderia prever para o período atual baseado 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 os dados do 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 deseja ou mesmo definir valores indesejados para desaparecer depois usando replace. 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 levado a bear. In 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: Para criar uma nova variável (eg newvar) e definir seu valor para 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: Alternativamente, use egen com a opção rowtotal embutida: O comando egen trata os valores ausentes como 0. Para criar uma variável Avg) que armazena a média de quatro variáveis ​​(por exemplo, v1, v2, v3 e v4), use: Use o / (barra) para denotar divisão e um (asterisco) para 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): Meu primeiro post e vou tentar ser o mais claro 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. Eu comecei com o Stata há apenas algumas semanas e estou tentando aprender por minha conta para uma tarefa em poucos dias (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 2017, 01:55. 25 Mar 2017, 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 requer 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. (2 0 2) Espero que alguém possa ajudar. Muitas vezes podemos estar interessados ​​em gerar uma média móvel espacial de uma característica X. Podemos usar essa média móvel para ajudar a controlar a heterogeneidade na população que pode estar relacionada com a espacial Distribuição de observações. Para fazer isso precisamos ter um método de gerar uma média espacial. Eu código isso manualmente porque eu não tenho experiência com dados espaciais no Stata e não sei o que o comando embutido é (supondo que haja um). Se você está apenas procurando o meio espacial, então você pode favorecer o comando embutido. No entanto, este método é flexível e facilmente modificável se, por exemplo, você gostaria de usar medidas além da fórmula distância Euclides 2D e prefiro preferir a fórmula 3D ou fórmula nD realmente. Da mesma forma, a estatística média móvel pode ser facilmente substituída por variância móvel ou qualquer outra estatística que possa ser gerada através do comando egen. Assim, este exercício pode ser útil para examinar, mesmo se redundante. Global Nobs 1000 clear set obs Nobs Gerar coordenadas 2D gen latt runiform () 100 gen longg runiform () 100 Gerar a variável de interesse. A variável terá um componente aleatório e um componente espacialmente dependente. Podemos ver que, embora haja uma tendência geral para valores maiores como longitude ou aumento de latitude, é difícil identificar qualquer padrão forte. Agora vamos calcular a média móvel de X para cada observação. (Provavelmente há um comando para isso que eu não sei). Gen Xave. Gen dist. Calcula a média de X se a distância estiver dentro do intervalo de interesse egen tempx mean (X) Se distltmeanrange substituir Xave tempx se ni gota tempx dois (scatter latt Xave) (scatter longg Xave) Agora, olhando para a média móvel podemos facilmente identificar visualmente o efeito da localização sobre o valor esperado de X.

No comments:

Post a Comment