Sunday, 22 October 2017

Stata 11 Média Móvel


() 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. Smoothing: Lowess Vamos trabalhar com dados da Colômbia WFS Household Survey , Realizado em 1975-76. Eu tabulei a distribuição etária de todos os membros da família e salvei-a em um arquivo ascci, que agora lemos e traçamos: Como você pode ver, a distribuição parece um pouco menos suave do que os dados das Filipinas que estudamos anteriormente. Você pode calcular o índice de Myers para esta distribuição Meios de execução e linhas A maneira mais simples de suavizar um scatterplot é usar uma média móvel. Também conhecido como um meio de corrida. A abordagem mais comum é usar uma janela de 2k 1 observações, k à esquerda e k à direita de cada observação. O valor de k é um trade off entre suavidade de bondade de ajuste. Deve-se ter especial cuidado nos extremos da gama. Stata pode calcular meios de execução via lowess com as opções mean e noweight. Um problema comum com meios de execução é viés. Uma solução é usar pesos que dão mais importância aos vizinhos mais próximos e menos aos mais distantes. Uma função de peso popular é Tukeys tri-cube, definida como w (d) (1-d 3) 3 para d lt 1 e 0 caso contrário, onde d é a distância para o ponto alvo expressa como uma fração da largura de banda. Stata pode fazer este cálculo via lowess com a opção mean se você omitir noweight. Uma solução ainda melhor é usar linhas em execução. Definimos novamente uma vizinhança para cada ponto, tipicamente os vizinhos mais próximos de cada lado, encaixamos uma linha de regressão para os pontos da vizinhança e usamos para prever um valor mais suave para a observação do índice. Isso soa como um monte de trabalho, mas os cálculos podem ser feitos de forma eficiente usando regressão atualizando fórmulas. Stata pode calcular uma linha em execução através lowess se omitir significa, mas incluir noweight. Melhor ainda é usar linhas de corrida ponderadas. Dando mais peso às observações mais próximas, que é o que o lowess mais suave faz. Uma variante segue esta estimativa com algumas iterações para obter uma linha mais robusta. Esta é claramente a melhor técnica na família. Statas lowess usa uma linha ponderada se você omitir média e noweight R implementa o lowess mais suave através das funções lowess () eo loess mais recente (), que usa uma interface de fórmula com um ou mais preditores e padrões diferentes um pouco diferentes. O parâmetro grau controla o grau do polinômio local o padrão é 2 para quadrática, alternativas são 1 para linear e 0 para correndo meios. Ambas as implementações podem usar um estimador robusto, com o número de iterações controladas por um parâmetro iter ou iterações. Escreva loess e lowess no console R para obter mais informações. Em ggplot () você pode sobrepor um lowess mais suave chamando geomsmooth () A figura abaixo mostra os dados colombianos e um lowess mais suave com um intervalo ou largura de banda igual a 25 dos dados. Você pode querer tentar diferentes badwidths para ver como os resultados variam. Preferência de dígitos revisitada Alisar a distribuição de idade fornece uma maneira melhor de avaliar a preferência de dígito do que a mistura de Myers. Vamos calcular o último dígito de idade e tabulá-lo em toda a gama de dados usando as freqüências observadas e um lowess mais suave. As freqüências brutas mostram evidência de preferência por idades terminando em 0 e 5, o que é muito comum, e provavelmente 2 também. Nós agora usamos o suave como peso As freqüências suavizadas mostram que esperamos menos pessoas em dígitos mais altos, mesmo em uma distribuição suave, com mais terminando em 0 do que 9. Agora estamos prontos para calcular um índice de preferência de dígito, definido como metade do Soma de diferenças absolutas entre freqüências observadas e suaves: Vemos que precisaríamos reorganizar 5.5 das observações para eliminar a preferência de dígito. Você pode comparar este resultado com o índice de Myers. Cópia 2017 Germaacuten Rodriacuteguez, Universidade de Princeton Imagine que você tem dados sobre os preços de muitos produtos. Para cada um dos produtos você grava informações de preços semanais. Clear set obs 200 gen prodid n Cada produto tem um preço médio único gen prodprice rpoisson (5) 7 Você tem dados sobre preços semanais por 200 semanas. Expandir 200 bysort prodid: gen tn etiqueta var t Semana Há também alguma variação sazonal variação sazonal .2sin (pit50) Assim como uma tendência geral do tempo tendência gen t.005 A primeira observação não está correlacionada com nada gen preço prodprice2.5 tendência Rpoisson (10) 10 se t1 substituir preço prodprice2 tendência sazonal .7pricen-1 .3rpoisson (10) 10 se t2 substituir preço prodprice tendência sazonal .5pricen-1 .2pricen-2 .3rpoisson (10) 10 se t3 substituir preço prodprice tendência sazonal .3pricen-1 .2pricen-2 .2pricen-3 .3rpoisson (10) 10 se t4 substituir preço prodprice tendência sazonal .3pricen-1 .175pricen-2 .125pricen-3 .1pricen-4 .3rpoisson (10) 10 se tgt4 Criar (Globais para armazenar twograph global forv i 16 twograph global (preço de linha t se prodid i) twograph twoway, legenda (off) título (Verdadeira tendências de preços para os primeiros seis produtos) Agora vamos imaginar que os dados acima gerados é a verdadeira informação de preços que É fundamentalmente inobservável. Em vez disso, você tem várias coleções de dados por semana sobre os preços que cada variam por algum erro addative aleatório. Expand 3 bysort prodid t: gen prodobs n gen preço pricecollect rnormal () 25 No entanto, as informações de preço que você tem tem algumas entradas que 10 foram erroneamente inseridas incorretas. (1, .35) drop if missing1 Criar (1, .35) dropdowns (1, .35) dropdowns (1, .3) Um globabl para armazenar twograph global forv i 16 global twograph (linha priceobs t se prodid i amp prodobs1) twoway twograph, lenda (off) título (Observou tendências de preços para os primeiros seis produtos) manter t priceobs prodid entryerror Estou mantendo erro de entrada no Conjunto de dados como meio de comparação, embora não seja observado diretamente. A questão é: você pode agora com este dados confusos recuperar dados de preços que é semelhante ao original A primeira coisa que devemos explorar é a duplicação de dados gravados. (É fácil ver desvios individuais) É fácil ver desvios individuais, mas não queremos percorrer todos os 200 produtos para identificar individualmente os valores de preço. Nós queremos vir acima com um sistema para identificar outliers. Vamos gerar uma média por produto e tempo bysort prodid t: egen pricemean mean (priceobs) Permite sinalizar qualquer observação que é 120 maior do que a média ou 80 menos do que a média. Vamos ver como ele está funcionando: dois (scatter priceobs t se prodid 1) (scatter priceobs t se prodid 1 amp flag1. Msymbol (lgx)). Title (Alguns dos outliers podem ser identificados apenas olhando para a média) legend (off) corr flag entryerror Nossa bandeira é correlacionada cerca de 45 com os erros de entrada. Isso é bom, mas podemos fazer melhor. Proponho que em vez de usar apenas a média que nós construímos uma média móvel de preços e ver como cada entrada desvia da média. O único problema é que o comando de média móvel requer xtset e que requer apenas uma entrada por período de tempo. Então, eu digo que nós redimensionamos a variável de tempo e adicionamos como se registradas em um horário diferente da semana o número de observação. Precisamos de gerar novos prodobs uma vez que não sabemos qual observação está faltando em cada produto. Bysort prodid t: prodobs gen gen t2 t4 prodobs xtset define o painel painel de dados id e nível série de tempo. Xtset prodid t2 O comando que vamos usar é tssmooth É codificado de tal forma que especificando ma significa média móvel e janela diz Stata quantos períodos de tempo para contar à frente e quantos atrás no movimento aerage. Este comando pode demorar um pouco. Tssmooth ma mapriceobspriceobs, janela (23 0 23) 23 está em vigor 5 semanas à frente e 5 semanas atrás O 0 diz stata não incluir inself nessa média A média móvel dois (scatter priceobs t se prodid 1) 1) (linha pricemean t se prodíd 1). A média móvel é mais estável do que apenas a média do tempo. Vamos tentar sinalizar usando a média móvel queda flag2 flag2 (mapriceobs gt priceobs1.2 mapriceobs lt priceobs.8) dois (scatter priceobs t se prodid 1) (scatter priceobs t se prodid 1 amp flag21. Msymbol (lgx)). Title (A Média Móvel também pode ser útil) legenda (desligado) corr flag2 entryerror Largar os dados sinalizados drop if flag21 Colapso ao nível semanal colapso priceobs, por (prodid t) label var priceobs Preço médio observado para i 16 global twograph (scatter (Observado tendências de preços para os primeiros seis produtos) Os dados estão procurando muito melhor, mas ainda temos claramente alguns outliers indesejados. Poderíamos aproveitar as tendências de produtos cruzados para ajudar a identificar valores atípicos dentro dos preços dos produtos. (Por exemplo, por exemplo, por exemplo, por exemplo, por exemplo, por exemplo, por exemplo, por exemplo, por exemplo, (Se o produto é prodíd 2) (line price 3) se o prodid 2) (linha resid3 t se prodid 3) (priceobs t se prodid 3). Título (Os resíduos são indicadores claros de outliers) legenda (off) Finalmente, vamos deixar cair observações com resíduos que são maiores que 1,5 desvios padrão da média. Qui forv i1200 reg priceobs aveprice se prodid i predict residtemp, residual sum residtemp substituir flag ((residtemp-r (média) gtr (sd) 1.5 residtemp-r (média) drop residtemp Vamos ver como ele está funcionando: dois (scatter priceobs t Se prodid 2) (scatter priceobs t se prodid 2 amp flag1. Msymbol (lgx)) title (Agora apenas tentando remover alguns outliers finais) legenda (desligado) Plotting product 1 pricing relativo a outliers. Line priceobs t se prodid i) Finalmente caindo os outliers queda se flag Um gráfico final global twograph forv i 16 global twograph (scatter priceobs t se prodid i) twoway twograph, lenda (off) título (Observou tendências de preços para os primeiros seis produtos) Tão limpo quanto nosso primeiro gráfico, mas definitivamente muito melhorado.

No comments:

Post a Comment