Monday 7 August 2017

Mudando A Média Usando O Processo Expandir


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 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 em 3 de dezembro às 15: 29 No início da 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 atrasadas usando a Versão 6.11 e versões anteriores e a Versão 6.12 e posterior são fornecidas 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 um total 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 centrada em 5 períodos usando a Versão 6.11 ou anterior: Para calcular uma média móvel em atraso n usando 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 como ilustrado neste programa de exemplo. Sistema operacional e informações de versão As operações que podem ser usadas nas opções TRANSFORMIN e TRANSFORMOUT são mostradas na Tabela 14.1. As operações são aplicadas a cada valor da série. Cada valor da série é substituído pelo resultado da operação. Na Tabela 14.1. Ou x representa o valor da série em um período de tempo particular t antes da aplicação da transformação, representa o valor da série de resultados e N representa o número total de observações. A notação n indica que o argumento n é opcional. O padrão é 1. A janela de notação é usada como o argumento para os operadores de estatísticas em movimento e indica que você pode especificar um número inteiro de períodos n ou uma lista de n pesos em parênteses. A seqüência de notação é usada como argumento para os operadores de seqüência e indica que você deve especificar uma seqüência de números. A notação s indica o comprimento da sazonalidade, e é um argumento obrigatório. Tabela 14.1 Operadores de transformação Operadores de janela de tempo de mudança Alguns operadores calculam estatísticas para um conjunto de valores dentro de uma janela de tempo de mudança, estes são chamados operadores de janela de tempo em movimento. Existem versões centradas e atrasadas desses operadores. Os operadores de janela de tempo em movimento centrados são CMOVAVE, CMOVCSS, CMOVGMEAN, CMOVMAX, CMOVMED, CMOVMIN, CMOVPROD, CMOVRANGE, CMOVRANK, CMOVSTD, CMOVSUM, CMOVTVALUE, CMOVUSS e CMOVVAR. Esses operadores calculam estatísticas dos valores para observações. Os operadores de janela de tempo de mudança de direção são MOVAVE, MOVCSS, MOVGMEAN, MOVMAX, MOVIMENTO, MOVIMENTO, MOVPROD, MOVRANGE, MOVRANK, MOVSTD, MOVSUM, MOVTVALUE, MOVUSS e MOVVAR. Esses operadores calculam estatísticas dos valores. Todos os operadores de janela de tempo em movimento aceitam um argumento especificando o número de períodos a serem incluídos na janela de tempo. Por exemplo, a seguinte instrução calcula uma média móvel de cinco períodos para trás de X. Neste exemplo, a transformação resultante é a seguinte declaração calcula uma média móvel centrada em cinco períodos de X. Neste exemplo, a transformação resultante é Se a janela com um operador de janela de tempo em movimento centrado não é um número ímpar, um valor mais atrasado que o valor do lead está incluído na janela de tempo. Por exemplo, o resultado do operador CMOVAVE 4 é que você pode calcular uma operação de janela de tempo de mudança direta combinando um operador de janela de tempo de mudança de direção com o operador REVERSE. Por exemplo, a seguinte declaração calcula uma média móvel em frente de cinco períodos de X. Neste exemplo, a transformação resultante é alguns dos operadores de janela de tempo em movimento permitem que você especifique uma lista de valores de peso para calcular estatísticas ponderadas. Estes são CMOVAVE, CMOVCSS, CMOVGMEAN, CMOVPROD, CMOVSTD, CMOVTVALUE, CMOVUSS, CMOVVAR, MOVAVE, MOVCSS, MOVGMEAN, MOVPROD, MOVSTD, MOVTVALUE, MOVUSS e MOVVAR. Para especificar um operador de janela de tempo de mudança ponderada, insira os valores de peso entre parênteses após o nome do operador. A largura da janela é igual ao número de pesos que você especificou, não especificando. Por exemplo, a seguinte declaração calcula uma média móvel ponderada de cinco períodos centrada em X. Neste exemplo, a transformação resultante é: os valores de peso devem ser maiores do que zero. Se os pesos não somarem para 1, os pesos especificados são divididos pela sua soma para produzir os pesos utilizados para calcular a estatística. Uma janela de tempo completa não está disponível no início da série. Para as operadoras centradas, uma janela completa também não está disponível no final da série. O cálculo dos operadores de janela de tempo em movimento é ajustado para essas condições de contorno da seguinte forma. Para operadores de janela de mudança de direção, a largura da janela de tempo é encurtada no início da série. Por exemplo, os resultados do operador MOVSUM 3 são Valores faltantes Você pode truncar o comprimento da série de resultados usando os operadores TRIM, TRIMLEFT e TRIMRIGHT para definir valores a serem perdidos no início ou no final da série. Você pode usar essas funções para cortar os resultados dos operadores de janela de tempo de mudança de modo que a série de resultados contenha apenas valores calculados a partir de uma janela de tempo de largura total. Por exemplo, as seguintes instruções calculam uma média móvel centralizada de cinco períodos de X. E eles definem valores faltantes nos fins da série que são médias de menos de cinco valores. Normalmente, a janela de tempo em movimento e as operadoras de estatísticas cumulativas ignoram os valores em falta e calculam seus resultados para os valores não transmissíveis. Quando precedido pelo operador NOMISS, essas funções produzem um resultado perdido se algum valor dentro da janela de tempo estiver faltando. O operador NOMISS não executa nenhum cálculo, mas serve para modificar a operação do operador de janela de tempo em movimento que o segue. O operador NOMISS não tem efeito a menos que seja seguido por um operador de janela de tempo em movimento. Por exemplo, a seguinte instrução calcula uma média móvel de cinco períodos da variável X, mas produz um valor faltante quando faltam alguns dos cinco valores. A seguinte instrução calcula a soma cumulativa da variável X, mas produz um valor ausente para todos os períodos após o primeiro valor X perdido. Semelhante ao operador NOMISS, o operador MISSONLY não executa nenhum cálculo (a menos que seja seguido pela opção MEAN), mas serve para modificar a operação do operador de janela de tempo em movimento que o segue. Quando precedido pelo operador MISSONLY, esses operadores de janela de tempo em movimento substituem todos os valores que faltam pela estatística em movimento e deixam os valores sem permissão inalterados. Por exemplo, a seguinte declaração substitui quaisquer valores faltantes da variável X com uma média móvel ponderada exponencialmente dos valores passados ​​de X e deixa valores inalterados inalterados. Os valores em falta são interpolados usando a média móvel ponderada exponencialmente especificada. (Isso também é chamado de suavização exponencial simples.) A seguinte declaração substitui quaisquer valores faltantes da variável X com a média geral de X. Você pode usar o operador SETMISS para substituir valores faltantes por um número especificado. Por exemplo, a seguinte declaração substitui quaisquer valores faltantes da variável X com o número 8.77. Operadores clássicos de decomposição Se for uma série temporária sazonal com observações por estação, os métodos clássicos de decomposição dividem as séries temporais em quatro componentes: componentes de tendência, ciclo, sazonal e irregulares. A tendência e os componentes do ciclo são frequentemente combinados para formar o componente tendência-ciclo. Existem duas formas básicas de decomposição clássica: multiplicativas e aditivas, que são mostradas abaixo. Exemplos de uso Os índices sazonais multiplicativos são 0,9, 1,2. 0,8 e 1,1 para os quatro trimestres. Deixe SEASADJ ser uma variável de séries de tempo trimestral que tenha sido ajustada sazonalmente de forma multiplicativa. Para restaurar a sazonalidade para SEASADJ, use a seguinte transformação: os índices sazonais aditivos são 4.4, -1.1, -2.1 e -1.2 para os quatro trimestres. Deixe SEASADJ ser uma variável trimestral da série temporal que foi ajustada sazonalmente de forma aditiva. Para restaurar a sazonalidade para SEASADJ, use a seguinte transformação: Set Operators Para os operadores set, o primeiro parâmetro, representa o valor a ser substituído eo segundo parâmetro, representa o valor de substituição. A substituição pode ser localizada no início, no meio ou no final da série. Exemplos de uso Suponha que uma loja tenha sido aberta recentemente e que o histórico de vendas seja armazenado em um banco de dados que não reconheça valores faltantes. Embora a demanda possa ter existido antes da abertura das lojas, esse banco de dados atribui o valor de zero. A modelagem do histórico de vendas pode ser problemática porque o histórico de vendas é na maior parte zero. Para compensar essa deficiência, os valores zero iniciais devem ser definidos como ausentes com os valores zero restantes inalterados (representando nenhuma demanda). Do mesmo modo, suponha que uma loja esteja fechada recentemente. A demanda ainda pode estar presente e, portanto, um valor registrado de zero não reflete com precisão a demanda real. Operador de escala

No comments:

Post a Comment