Movendo Média Usando Sas


O código de exemplo na guia Código Completo ilustra como calcular a média móvel de uma variável através de um conjunto de dados inteiro, nas últimas N observações em um conjunto de dados ou nas últimas N observações dentro de um grupo BY. Os exemplos de código são fornecidos pelo SAS Institute Inc como é sem garantia de qualquer tipo, expressa ou implícita, incluindo mas não limitado às garantias implícitas de comercialização e aptidão para uma finalidade específica. Os beneficiários reconhecem e concordam que SAS Institute não será responsável por qualquer Quaisquer danos decorrentes da utilização deste material Além disso, o SAS Institute não fornecerá suporte para os materiais contidos aqui. Esses arquivos de amostra e exemplos de código são fornecidos pelo SAS Institute Inc como é sem garantia de qualquer tipo, expressa ou implícita, Incluindo mas não se limitando às garantias implícitas de comercialização e aptidão para uma finalidade específica. Os beneficiários reconhecem e concordam que o SAS Institute não deve ser responsabilizado Além disso, o SAS Institute não fornecerá suporte para os materiais aqui contidos a média móvel de uma variável através de um conjunto de dados inteiro, sobre as últimas N observações em um conjunto de dados, ou Sobre as últimas N observações dentro de um grupo BY. Começando na versão 6 08 do SAS System, PROC EXPAND no software SAS ETS pode ser usado para fazer uma variedade de transformações de dados Estas transformações incluem leads, lags, médias ponderadas e não ponderadas, Somas móveis e somas cumulativas, para nomear algumas Muitas novas transformações foram adicionadas na Versão 6 12, incluindo especificações separadas para médias centradas e para trás. Essas novas transformações tornaram necessário modificar a sintaxe de algumas das transformações suportadas antes da Versão 6 12 Exemplos de como especificar a sintaxe para médias movimentadas centradas e para trás usando a Versão 6 11 e anteriores e a Versão 6 12 e posterior são dadas abaixo. PROC EXPAN D pode calcular uma média móvel centrada ou uma média móvel para trás Uma média móvel centrada num período de 5 é calculada pela média de um total de 5 valores consecutivos da série o valor do período corrente para além dos dois valores imediatamente anteriores e dois valores imediatamente a seguir O valor atual A média móvel de retrocesso de 5 períodos é calculada pela média do valor do período atual com os valores dos 4 períodos imediatamente anteriores. A seguinte sintaxe ilustra como usar a especificação TRANSFORM MOVAVE n para calcular uma média móvel centrada em 5 períodos usando Release 6 11 ou anterior. Para calcular uma média de retrocesso de n períodos utilizando a Liberação 6 11 ou anterior, utilize a especificação TRANSFORM MOVAVE n LAG k, onde k n-1 2 se n é ímpar ou onde k n-2 2 se N é mesmo Por exemplo, a sintaxe a seguir ilustra como calcular uma média de movimentação para trás de 5 períodos usando a Versão 6 11 ou anterior. A seguinte sintaxe ilustra como usar o TRANSFORMAR CMOVAVE n spe Para calcular uma média móvel centrada no período de 5 períodos usando a Liberação 6 12 ou posterior. A seguinte sintaxe similar ilustra como usar a especificação TRANSFORM MOVAVE n para calcular uma média móvel ascendente de 5 períodos utilizando a Liberação 6 12 ou posterior. Para mais informações, Consulte Operações de Transformação no capítulo EXPAND do Guia do Usuário do SAS ETS. Se você não tiver acesso ao SAS ETS, poderá calcular uma média móvel na etapa DATA, conforme ilustrado neste programa de exemplo. SAS iniciante e estou curioso se a seguinte tarefa pode ser feito muito mais simples, pois é atualmente na minha cabeça. Eu tenho o seguinte metadados simplificado em uma tabela chamada userdatemoney. User - Data - Money. with vários usuários e datas para cada Dia de calendário para os últimos 4 anos Os dados são encomendados pelo usuário ASC e data ASC, os dados de amostra parece este. Agora quero calcular uma média móvel de cinco dias para o dinheiro que comecei com o apprach muito popular com a função lag Como this. as você vê, o problema com este método ocorre se lá se a etapa de dados executa em um novo usuário Aron iria obter alguns valores defasados ​​de Anna, que naturalmente não deve acontecer. Now minha pergunta tenho certeza que você pode lidar com o Usuário, adicionando alguns campos extras como laggeduser e redefinindo as variáveis ​​N, Soma e Média se você notar tal switch mas. Pode isso ser feito de uma maneira mais fácil Talvez usando a Cláusula BY de qualquer maneira Obrigado por suas idéias e ajuda. Eu acho que a maneira mais fácil é usar PROC EXPAND. E como mencionado no comentário de John, é importante lembrar sobre valores ausentes e sobre observações de começo e término, bem como eu adicionei SETMISS opção para o código, como você deixou claro que Você quer zerar valores em falta, não ignorá-los padrão comportamento MOVAVE E se você quiser excluir as primeiras 4 observações para cada usuário, uma vez que eles não têm pré-história suficiente para calcular a média móvel 5, você pode usar a opção TRIMLEFT 4 dentro TRANSFORMOUT. answered Dez 3 13 Em 15 29.

Comments