Sunday 22 October 2017

Stata generate moving average variable no Brasil


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. 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 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 o egen faz. 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, fica fora do conjunto de comandos especificamente escritos para séries temporais, veja as séries temporais para 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 de forma inteligente, dada qualquer lacuna 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 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 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 faltantes 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 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 trazida para bear. Announcement 15 Aug 2017, 00:13 É difícil de colocar isso Questão específica em algumas linhas, por favor, tenha paciência comigo quando eu explicar o que exatamente eu quero eo que eu tentei. Eu tenho um conjunto de dados de seção transversal que tem uma variável de distritos (nomes e nomes codificados), porcentagem de minoria étnica, e um índice de bem-estar desta minoria, entre outras variáveis. Gostaria de criar um gráfico de dispersão com porcentagem de minoria étnica no eixo X eo índice no eixo Y para ver como o índice muda quando a minoria percentual aumenta. Além disso, eu quero criar uma linha que iria conter médias em todos os distritos para cada valor percentual inteiro da população minoritária, ou seja, a média de todos os distritos para 0-1 população minoritária, 1-2, etc Eu gerou uma nova variável usando: Egen newvarcut (oldvar), em (0,1,2, 100) e então usado este newvar para gerar índice médio para cada ano: bysort newvar: egen (meanindex) mean (oldindex) No entanto, quando eu adiciono quotline meanindex oldvarquot I get Uma tendência média que é irregular (os dados são classificados por oldvar). Eu quero suavizar isso e gerar uma média móvel de valores médios de índice em toda, digamos, 5 por cento da população minoritária (2 lags, 2 leads e a porcentagem de observação). Eu tentei tssmooth ma, mas eu teria que declarar meu dataset uma série de tempo um. Ele não aceitaria oldvar como uma variável de tempo reclamando que há valores de tempo quotrepeated na amostra, r (451) quot. Se eu adicionar o distrito como uma variável de painel forçando um único ponto de tempo para cada painel, tssmooth ainda não funcionará dizendo que quotwindow () inválido - numlist inválido tem elementos fora do intervalo permitido, r (125) quot Eu tentei diferentes parâmetros de janela com O mesmo resultado. Eu tentei manualmente recodificar os dados para manter apenas uma observação de meanindex para cada porcentagem inteira da população de minoria, mas tssmooth ma retornaria o mesmo erro. Eu acho que, enquanto eu tiver apenas observação única de cada distrito para a variável quottimequot de população minoritária, tssmooth (ou equivalente manual) não vai funcionar. A única maneira que eu posso criar essa média móvel é se eu manter apenas as observações com uma observação meanindex por cada percentagem inteira, reduzindo assim o conjunto de dados para conter apenas valores médios, um por toda a percentagem da população minoritária. Mas então eu não posso criar um gráfico de dispersão com distritos reais porque eles não estão no conjunto de dados por mais tempo. Eu tentei tudo o que posso pensar, mas nada parece funcionar. No entanto, a questão de acrescentar uma média suavizada tendência em x-eixo deve ser bastante trivial. Gostaria de receber qualquer conselho sobre esta questão. Última edição por Mikhail Balaev 15 Aug 2017, 00:19.

No comments:

Post a Comment