Monday 7 August 2017

Função Média Móvel Em 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, isto é 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 é esse o caso, eu preciso de algum tipo de média móvel que me permita calcular o valor médio e padrão nos últimos 5 anos. Então, se uma empresa tem informações por 7 anos, preciso de algum tipo de código que avaliará o avg e stdev, 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 como isso, eu realmente não tenho idéia, vou tentar descobrir, mas vale a pena publicá-lo se não encontrar. O código 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. Esses exemplos de arquivos e exemplos de código são fornecidos pelo SAS Institute Inc., tal como está sem garantia de qualquer tipo, expressa ou implícita, incluindo, entre outras, as garantias implícitas de comercialização e adequação para um propósito específico. Os destinatários reconhecem e concordam que o SAS Institute não será responsável por quaisquer danos decorrentes do uso deste material. Além disso, o SAS Institute não fornecerá suporte para os materiais aqui contidos. Esses exemplos de arquivos e exemplos de código são fornecidos pelo SAS Institute Inc., tal como está sem garantia de qualquer tipo, expressa ou implícita, incluindo, entre outras, as garantias implícitas de comercialização e adequação para um propósito específico. Os destinatários reconhecem e concordam que o SAS Institute não será responsável por quaisquer danos decorrentes do uso deste material. Além disso, o SAS Institute não fornecerá suporte para os materiais aqui contidos. Calcule a média móvel de uma variável através de um conjunto de dados completo, nas últimas N observações em um conjunto de dados ou nas últimas N observações dentro de um grupo BY. É um iniciante do SAS e estou curioso se a seguinte tarefa pode ser feita muito Mais simples, como é atualmente 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 do calendário (nos últimos 4 anos). Os dados são ordenados pelo Usuário ASC e Data ASC, os dados de amostra são assim: agora eu quero calcular uma média móvel de cinco dias para o Money. Eu comecei com o apprach muito 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 for executado em um novo usuário. Aron teria alguns valores atrasados ​​de Anna, que, claro, não deveria acontecer. Agora, minha pergunta: 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 tal comutador, mas: Isso pode ser feito de maneira mais fácil. POR Cláusula de qualquer maneira 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 valores faltantes (e também sobre observações iniciais e finais). 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ê quiser 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 3 de dezembro 13 às 15:29

No comments:

Post a Comment