Thursday 20 July 2017

Moving Average Sas By Proc Expand


Eu sou um iniciante do SAS e estou curioso se a seguinte tarefa pode ser feita muito mais simples, pois atualmente está na minha cabeça. Eu tenho os seguintes metadados (simplificados) em uma tabela chamada userdatemoney: Usuário - Data - Dinheiro com vários usuários e datas para cada dia de calendário (nos últimos 4 anos). Os dados são ordenados pelo Usuário ASC e Data ASC, os dados da amostra são assim: agora eu quero calcular uma média móvel de cinco dias para o Money. Eu comecei com o apprach bastante popular com a função lag () como esta: como você vê, o problema com este método ocorre se houver se o passo de dados se deparar com um novo usuário. Aron obteria alguns valores retardados de Anna, o que, é claro, não deveria acontecer. Agora, minha pergunta: eu tenho certeza de que você pode lidar com a mudança do usuário, adicionando alguns campos extras, como o laggeduser e redefinindo as variáveis ​​N, Soma e Média, se você notar essa mudança, mas: Isso pode ser feito de maneira mais fácil. POR Cláusula de alguma forma Obrigado por suas idéias e ajuda, acho que a maneira mais fácil é usar PROC EXPAND: E como mencionado no comentário de Johns, é importante lembrar sobre os valores faltantes (e sobre as observações iniciais e finais também). Eu adicionei a opção SETMISS ao código, como você deixou claro que deseja esconder valores faltantes, não ignorá-los (comportamento MOVAVE padrão). E se você deseja excluir as primeiras 4 observações para cada usuário (uma vez que não têm pré-histórico suficiente para calcular a média móvel 5), você pode usar a opção TRIMLEFT 4 dentro de TRANSFORMOUT (). Respondido em 3 de dezembro às 15: 29. Começando na Versão 6.08 do Sistema SAS, o PROC EXPAND no software SAS ETS 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 de 5 períodos com a versão 6.12 ou posterior. Para obter mais informações, consulte Operações de transformação no capítulo EXPAND do Guia de usuários do SAS ETS. Se você não tiver acesso ao SAS ETS, você pode calcular uma média móvel no passo DATA conforme ilustrado neste programa de exemplo. Sistema operacional e informações de versão

No comments:

Post a Comment