Thursday 24 August 2017

Compute Moving Average Sas


Eu incluí uma captura de tela para ajudar a esclarecer meu problema: estou tentando calcular algum tipo de média móvel e desvio padrão móvel. A coisa é que eu quero calcular os coeficientes de variação (stdevavg) para o valor real. Normalmente isso é feito calculando o stdev e o avg nos últimos 5 anos. No entanto, às vezes, haverá observações no meu banco de dados para o qual não tenho informações dos últimos 5 anos (talvez apenas 3, 2 etc). É por isso que eu quero um código que irá calcular o avg e stdev, mesmo que não haja informações durante os 5 anos inteiros. Além disso, como você vê nas observações, às vezes eu tenho informações durante mais de 5 anos, quando este é o caso, eu preciso de algum tipo de média móvel que me permita calcular o avg e stdev nos últimos 5 anos. Então, se uma empresa tem informações por 7 anos, preciso de algum tipo de código que calculará o avg e stdev para, digamos, 1997 (em 1991-1996), 1998 (em 1992-1997) e 1999 (1993-1998). Como não estou muito familiarizado com os comandos sas, deve parecer (muito muito grosso) como: Ou algo assim, eu realmente não tenho idéia, vou tentar descobrir, mas vale a pena publicá-lo se eu não o encontrar. Começo Versão 6.08 do Sistema SAS, o PROC EXPAND no software SASETS pode ser usado para fazer uma variedade de transformações de dados. Essas transformações incluem: leads, atrasos, médias móveis ponderadas e não ponderadas, somas em movimento e somas cumulativas, para citar alguns. Muitas novas transformações foram adicionadas na versão 6.12, incluindo especificações separadas para médias movidas centradas e para trás. Essas novas transformações tornaram necessário modificar a sintaxe para algumas das transformações suportadas antes da versão 6.12. Exemplos de como especificar a sintaxe para médias móveis centradas e para trás, usando o Release 6.11 e versões anteriores e a versão 6.12 e posterior, são fornecidos abaixo. PROC EXPAND pode calcular uma média móvel centrada ou uma média móvel para trás. Uma média móvel centrada em 5 períodos é calculada pela média de 5 valores consecutivos da série (o valor do período atual além dos dois valores imediatamente precedentes e dois valores imediatamente após o valor atual). Uma média móvel retroativa de 5 períodos é calculada pela média do valor do período atual com os valores dos 4 períodos imediatamente anteriores. A sintaxe a seguir ilustra como usar a especificação TRANSFORM (MOVAVE n) para calcular uma média móvel centralizada de 5 períodos usando a Versão 6.11 ou anterior: Para calcular uma média móvel de atraso n com a Versão 6.11 ou anterior, faça uso da TRANSFORM (MOVAVE N LAG k), onde k (n-1) 2 se n for estranho ou onde k (n-2) 2 se n for igual. Por exemplo, a seguinte sintaxe ilustra como calcular uma média móvel de 5 períodos com a versão 6.11 ou anterior. A seguinte sintaxe ilustra como usar a especificação TRANSFORM (CMOVAVE n) para calcular uma média móvel centrada em 5 períodos usando a Versão 6.12 ou Mais tarde: A seguinte sintaxe semelhante ilustra como usar a especificação TRANSFORM (MOVAVE n) para calcular uma média móvel retroativa de 5 períodos usando a Versão 6.12 ou posterior: para obter mais informações, consulte Operações de transformação no capítulo EXPAND do Guia do Usuário SASETS. Se você não tiver acesso a SASETS, você pode calcular uma média móvel na etapa DATA conforme ilustrado neste programa de exemplo. Sistema operacional e informações de versão Comporta uma média móvel no SAS Esta publicação foi gentilmente contribuída pelo The DO Loop - vá lá para comentar e ler a publicação completa. Uma questão comum sobre os fóruns de discussão do SAS é como calcular uma média móvel no SAS. Este artigo mostra como usar PROC EXPAND e contém links para artigos que usam o passo DATA ou macros para calcular médias móveis em SAS. Em uma publicação anterior, expliquei como definir uma média móvel e forneceu um exemplo, que é mostrado aqui. O gráfico é um gráfico de dispersão do preço de fechamento mensal das ações da IBM em um período de 20 anos. As três curvas são médias móveis. A curva 8220MA8221 é uma média móvel de cinco pontos (à direita). A curva 8220WMA8221 é uma média móvel ponderada com os pesos 1 a 5. (Ao calcular a média móvel ponderada no tempo t. O valor yt tem peso 5, o valor y t-1 tem peso 4, o valor y t-2 tem peso 3 e assim por diante.) A curva 8220EWMA8221 é uma média móvel ponderada exponencialmente com o fator alisador alfa 0.3. Este artigo mostra como usar o procedimento EXPAND no software SASETS para calcular uma média móvel simples, uma média móvel ponderada e uma média móvel ponderada exponencialmente em SAS. Para uma visão geral do PROC EXPAND e de seus muitos recursos, recomendo ler o breve artigo 8220Stupid Human Tricks com PROC EXPAND8221 de David Cassell (2010). Como nem todos os clientes SAS possuem uma licença para o software SASETS, existem links no final deste artigo que mostram como calcular uma média móvel simples no SAS usando o passo DATA. Criar um exemplo de séries temporais Antes de poder calcular uma média móvel no SAS, você precisa de dados. O seguinte chamado para PROC SORT cria um exemplo de séries temporais com 233 observações. Não há valores em falta. Os dados são classificados pela variável de tempo, T. A variável Y contém o preço de fechamento mensal das ações da IBM durante um período de 20 anos. Calcule uma média móvel em SAS usando o PROC EXPAND PROC EXPAND calcula vários tipos de médias móveis e outras estatísticas de rolamento, tais como desvios padrão, correlações e somas cumulativas de quadrados. No procedimento, a declaração ID identifica a variável de tempo, T. Os dados devem ser ordenados pela variável ID. A declaração CONVERT especifica os nomes das variáveis ​​de entrada e saída. A opção TRANSFORMOUT especifica o método e os parâmetros que são utilizados para calcular as estatísticas de rolagem. O exemplo usa três instruções CONVERT: o primeiro especifica que MA é uma variável de saída que é calculada como uma média móvel (para trás) que usa cinco valores de dados (k 5). A segunda declaração CONVERT especifica que WMA é uma variável de saída que é uma média móvel ponderada. Os pesos são padronizados automaticamente pelo procedimento, então a fórmula é WMA (t) (5 yt 4 y t-1 3 y t-2 2 y t-3 1 y t-4) 15. A terceira declaração CONVERT especifica que EWMA É uma variável de saída que é uma média móvel ponderada exponencialmente com o parâmetro 0.3. Observe a opção METHODNONE na instrução PROC EXPAND. Por padrão, o procedimento EXPAND se encaixa curvas de spline cúbico para os valores não-transmissíveis das variáveis. As opções METHODNONE garantem que os pontos de dados brutos sejam usados ​​para calcular as médias móveis, em vez de valores interpolados. Visualizando médias móveis Um uso importante de uma média móvel é sobrepor uma curva em um gráfico de dispersão dos dados brutos. Isso permite que você visualize as tendências de curto prazo nos dados. A seguinte chamada para PROC SGPOT cria o gráfico na parte superior deste artigo: Para manter este artigo tão simples quanto possível, não discuti como lidar com dados faltantes ao calcular as médias móveis. Consulte a documentação para PROC EXPAND para várias questões relacionadas aos dados em falta. Em particular, você pode usar a opção METHOD para especificar como interpolar valores faltantes. Você também pode usar opções de transformação para controlar como as médias móveis são definidas para os primeiros pontos de dados. Crie uma média móvel no SAS usando a etapa DATA Se você não possui o software SASETS, as seguintes referências mostram como usar o passo SAS DATA para calcular médias móveis simples usando a função LAG. A SAS Knowledge Base fornece o artigo 8220Compute a média móvel de uma variável.8221 Premal Vora (2008) compara o passo DATA ao código PROC EXPAND no papel 8220Easy Rolling Statistics com PROC EXPAND.8221 Ron Cody inclui uma macro SAS em vários deles Livros. Por exemplo, a Cody8217s Collection of Popular SAS Programming Tasks e How to Tackle Them fornece uma macro chamada movingAve. Você pode baixar a macro como parte do 8220Example Code e Data8221 para o livro. O passo DATA, que é projetado para lidar com uma observação por vez, não é a melhor ferramenta para cálculos de séries temporais, que naturalmente requerem múltiplas observações (atrasos e leads). Em uma futura postagem no blog, vou mostrar como escrever funções SASIML que calculam médias móveis simples, ponderadas e exponencialmente ponderadas. A linguagem da matriz no PROC IML é mais fácil de trabalhar para cálculos que requerem acesso a múltiplos pontos de tempo. ffTheDoLoopdyIl2AUoC8zA ffTheDoLoopdqj6IDK7rITs ffTheDoLoopicbsotKEf1zY: e5B0sfO55lA: gIN9vFwOqvQ ffTheDoLoopicbsotKEf1zY: e5B0sfO55lA: VsGLiPBpWU ffTheDoLoopicbsotKEf1zY: e5B0sfO55lA: F7zBnMyn0Lo ffTheDoLoopdl6gmwiTKsz0

No comments:

Post a Comment