Thursday 10 August 2017

Sas Proc Ampliam O Exemplo Da Média Móvel


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: 29As 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. Pergunta Qaick do Operador de Escala sobre a criação de médias móveis. Eu acredito que proc expandir é o que eu quero, mas não posso conseguir que ele execute a operação exata que eu quero. No nível de visão geral, eu preciso criar médias móveis para o último ano com base em dados de séries temporais para diferentes indivíduos. O problema é que nem todas as datas são representadas como uma observação. O problema começa a aparecer quando eu executo o seguinte código: proc expandir o sinal de saída do destino converter quantidade rollave methodnone transformout (movave 365) Os resultados do código acima me dão médias usando as 365 observações acima da atual (assumindo a mesma ID) e NÃO a Observações para os 365 dias anteriores ao dia da observação. Como um exemplo simples, suponha que eu quero uma média móvel da última semana e use o seguinte código com os seguintes dados (muito parecido com o meu problema final, mas com uma média de apenas uma semana em vez de um ano). Proc expandir o sinal de saída do destino converter quantidade rollave methodnone transformout (movave 7)

No comments:

Post a Comment