Thursday 23 November 2017

Mudança Média Sas Exemplo


Começando na 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 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. 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 inteiro, nas últimas N observações em um conjunto de dados, ou nas últimas N observações dentro de um grupo BY. Nesta publicação, mostro um truque para fazer o cálculo da média móvel (pode Ser estendido para outras operações que requerem funções de janelas) que é super rápido. Muitas vezes, os analistas do SAS precisam realizar o cálculo da média móvel e há várias opções pela ordem de preferência: 1. PROC EXPAND 2. DATA STEP 3. PROC SQL Mas muitos sites podem não licenciar SASETS para usar o PROC EXPAND e fazer a média móvel em DATA STEP requer alguma codificação e é propenso a erros. O PROC SQL é uma escolha natural para programadores júnior e em muitos casos comerciais a única solução, mas o PROC SQLs da SAS não possui funções de janelas disponíveis em muitos DBs para facilitar o cálculo da média móvel. Uma técnica que as pessoas costumam usar é CROSS JOIN, que é muito caro e não é uma solução viável para um conjunto de dados de tamanho médio. Nesta publicação, mostro um truque para fazer o cálculo da média móvel (pode ser estendido para outras operações que requerem funções de janelas) que é super rápido. Considere o cálculo da média móvel mais simples, onde as observações K que se seguem estão incluídas no cálculo, a saber, MA (K), aqui definimos o K5. Geramos primeiro um dado de amostra de 20obs, onde a ID da variável deve ser usada para janelas e a variável X deve ser usada no cálculo de MA e, em seguida, aplicamos o padrão CROSS JOIN para primeiro examinar os dados resultantes, não agrupados, apenas Para entender como alavancar a estrutura de dados. A partir do conjunto de dados resultante, é difícil encontrar uma pista, agora let39s classificar por quotbidquot coluna neste conjunto de dados: A partir desses dados ordenados, é claro que, na verdade, não temos que CRUZAR-SE em todo o conjunto de dados original, mas, em vez disso, Podemos gerar um conjunto de dados quotoperationquot que contém o valor da diferença e deixar o conjunto de dados original CROSS JOIN com este conjunto de dados quotoperationquot muito menor, e todos os dados que precisamos usar para o cálculo MA estarão lá. Agora, faça-o: CROSS JUNTE os dados originais com dados quotoperationquot, classifique por (a. idops), que é realmente quotbid39 no conjunto de dados ordenados. Observe que, no código acima, é necessário ter multiplicado de machado por b. weight para que os dados Pode ser inter-folhas, caso contrário, o mesmo valor X da tabela original será gerado e o cálculo MA será falhado. A variável de peso explícita realmente acrescenta mais flexibilidade ao cálculo do MA inteiro. Ao definir isso como sendo 1 para todos os resultados de obs em um simples cálculo de MA, atribuir pesos diferentes ajudará a resolver uma computação de MA mais complexa, como dar mais observações com menos peso para um MA decadente. Se o parâmetro K diferente em cálculos MA (K) for necessário, apenas o conjunto de dados da operação precisa ser atualizado, o que é um trabalho trivial. Agora, o modelo de código real para o cálculo de MA (K) será: com este novo método, é interessante compará-lo com a auto-estima CROSS JOIN, bem como com PROC EXPAND. Na minha estação de trabalho (Intel i5 3.8Ghz, memória de 32GB, 1TB 72K HDD), self CROSS JOIN é proibitivamente longo no tempo de execução (se o dado for grande) enquanto o novo método usa apenas 2X quanto tempo como PROC EXPAND, ambos os consumos de tempo são Comparação trivial com auto CROSS JOIN. O consumo de tempo mostrado abaixo é em quotesecondquot. Abaixo está o código que os leitores podem executar e comparar-se. Postado em 10 de maio de 2015 pela Liang Xie SAS Programming for Data Mining

No comments:

Post a Comment