Friday 13 October 2017

Moving Average Stata Command


Esta estrutura de dados é completamente imprópria para a finalidade. Assumindo um identificador id 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 subsequente seria algo entre estranho e impossível. EDIT III dar um loop de amostra, enquanto não se deslocam 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 suponho que é apenas um erro de digitação. Suponhamos que tenhamos 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 00, ou em falta. Caso contrário, se algum valor estiver faltando, adicionamos 0 ao numerador e 0 ao denominador, o que equivale a 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, nós substituiríamos as linhas acima por um laço, que é o que faz egen. 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 as séries temporais ver séries 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. Isso 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 automaticamente faz a coisa certa para os dados do painel: os valores iniciais e retardatários são elaborados dentro dos 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 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. Leva-se a defasagens negativas: nesse caso -11 se expande para -1 0 1 ou chumbo 1, atraso 0, atraso 1. Os coeficientes, outro número, multiplicam os itens correspondentes retardados 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 aos coeficientes de 13 13 13 e o coeficiente (1 2 1) normalize seja equivalente aos coeficientes de 14 12 14 Você deve especificar não apenas 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 obrigar 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 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 Stata 7 atualizado por ssc inst tsgraph. O 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 conseqüência de alguma condição if, as observações 1-42 estão incluídas, mas não as observações 43 sobre. Mas a média móvel de 42 dependerá, entre outras coisas, do valor de 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 das pessoas iria para a interpretação fraca, mas se isso está correto, egen, filter () não suporta se. Você sempre pode ignorar o que você donrsquot quer ou mesmo definir valores indesejados para desaparecer depois, usando substituir. Uma nota sobre os 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 não existem os retornos e as derivações, 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 contraste, 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á ausente. 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 levada a suportar. Muitas vezes podemos estar interessados ​​em gerar uma média espacial móvel de um Característica X. Podemos usar essa média móvel para ajudar a controlar a heterogeneidade na população que pode estar relacionada à distribuição espacial das observações. Para fazer isso precisamos ter um método de geração de 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 a média 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 que 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. (X) (espalhamento latt X) 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. Forv i1Nobs Calcule a distância de todos os pontos de obs i substitua dist ((latt-latti) 2 (longg-longgi) 2) .5 Calcule a média de X se a distância estiver dentro do intervalo de interesse egen tempx mean (X) if distltmeanrange Substituir temp Xx 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 de localização sobre o valor esperado de X. Announcement É o meu primeiro post e vou Tente ser o mais claro possível. O link para o banco de dados principal está no final do post. Contexto Estou usando o StataSE 12.0 no Windows 10. Eu comecei com o Stata há apenas algumas semanas e estou tentando aprender sozinho uma tarefa em poucos dias (porque cada tabela ou figura me levou dias e dias) : Replicating the paper quotDoes Compulsory School Attendance afeta Schoolig e Earningsquot: web. stanford. edu pistaangrist. pdf que consiste em mostrar que as pessoas nascidas nos últimos trimestres dos anos têm mais educação em média do que aqueles nascidos no primeiro trimestre devido à escolaridade obrigatória Leis. 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 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 (quarto 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. liveredirresi. Ntphoto2cpng), eu preciso começar com a coorte nascida em 1930, 3 º trimestre e calcular o 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 dada coorte), mesmo para os nascidos em 1930, 4º trimestre (Um quarto após a coorte dada), e mesmo para aqueles nascidos em 1931, 1o quarto (2 quartos após a coorte dada). 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. liveredirresid6919D329B3BF1EF23227ampauthkeyAO2cxEN 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 ia publicar aqui) Mas ainda não descobrir como dizer Stata: quotfor cada YOBQn. Calcular a 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. Primeiro você 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): Statamanuals14degen. Tfolder2cdta statamanuals14gsw11.pdf statamanuals14u11.p. Languagesyntax statamanuals14u13.p. Sua subscrição onedrive. liveredirresi. Intfile2cpdf Eu deveria tsset os dados antes tssmooth, mas eu não ter passado esta fase 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. liveredirresi. Tfolder2cdta Nota: Eu tenho o do-file para os mais importantes outras figuras e tabelas do artigo, exceto a tabela I, mas este arquivo provavelmente não é necessário apenas para info: onedrive. liveredirresi. 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 Todas as pessoas nascidas no mesmo ano e no mesmo trimestre, classificam-se aumentando os anos e os trimestres e calculam o número médio de anos de educação por QOB de YOB. Sort: egen medstay1 mean (EDUC) gerar uma nova variável YOBNew porque o comando yq requer o primeiro argumento para estar entre 1000 e 9999 e os nossos dados para YOB no Censo de 1980 está entre 30 e 49 em vez de 1930 e 1949 gen YOBNewYOB replace YOBNew YOB1900 se CENSUS80 gerar uma variável de tempo que tem o formato requerido na ajuda tsset gen tpsyq (YOBNew, QOB) formato 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 esse 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) Espero que alguém possa ajudar.

No comments:

Post a Comment