Monday 4 December 2017

Sas moving average ucla no Brasil


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 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 limitado às garantias implícitas de comercialização e adequação a um propósito específico. Os beneficiários reconhecem e concordam que o SAS Institute não se responsabiliza por quaisquer danos decorrentes da utilização deste material. Além disso, o SAS Institute não fornecerá suporte para os materiais aqui contidos. 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 limitado às garantias implícitas de comercialização e adequação a um propósito específico. Os beneficiários reconhecem e concordam que o SAS Institute não se responsabiliza por quaisquer danos decorrentes da utilização 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, sobre as últimas N observações em um conjunto de dados, ou sobre as últimas N observações dentro de um grupo BY. Neste post, eu mostro um truque para fazer cálculo de média móvel (pode Ser estendido para outras operações que exigem funções de janela) que é super rápido. Muitas vezes, os analistas SAS precisam realizar cálculos de média móvel e existem várias opções pela ordem de preferência: 1. PROC EXPAND 2. DADOS PASSO 3. PROC SQL Mas muitos sites podem não licenciados SASETS para usar PROC EXPAND e fazer média móvel em dados STEP requer alguma codificação e é propenso a erros. PROC SQL é uma escolha natural para programadores júnior e em muitos casos de negócios a única solução, mas o SAS SQL PROC não possui funções de janelas que estão 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 cara e não é uma solução viável para um conjunto de dados de tamanho médio. Neste post, eu mostro um truque para fazer cálculo de média móvel (pode ser estendido para outras operações que exigem funções de janelas) que é super rápido. Considere o cálculo da média móvel mais simples onde as observações K de arrasto estão incluídas no cálculo, a saber MA (K), aqui nós ajustamos K5. Primeiro, geramos um dado de 20 obs, onde a variável ID deve ser usada para o windowing ea variável X deve ser usada no cálculo do MA, e então aplicamos o CROSS JOIN padrão para examinar primeiro os dados resultantes, Non-Grouped, apenas Para entender como alavancar a estrutura de dados. A partir do conjunto de dados resultante, é difícil encontrar uma pista, agora vamos classificar por quotbidquot coluna neste conjunto de dados: A partir desta triada dados, é claro que nós realmente don39t tem CROSS JOIN todo o conjunto de dados originais, mas em vez disso, Podemos gerar um conjunto de dados de quotoperationquot que contém o valor de diferença e deixar o conjunto de dados original CROSS JOIN com este conjunto de dados de quotoperationquot muito menor e todos os dados que precisamos usar para o cálculo de MA estarão lá. Agora vamos fazer isso: CROSS JOIN dados originais com quotoperationquot dados, classificar por (a. idops), que é realmente quotbid39 no conjunto de dados classificados Note que no código acima, é necessário ter ax multiplicar por b. weight para que os dados Pode ser inter-leaved, caso contrário o mesmo valor X da tabela original será saída e MA cálculo será falha. A variável de peso explícito realmente acrescenta mais flexibilidade ao cálculo de MA inteiro. Ao configurá-lo para ser 1 para todos obs resultam em um simples cálculo de MA, atribuir pesos diferentes ajudará a resolver MA mais complexa computação, tais como dar outras observações menos peso para um MA decaído. Se for necessário um parâmetro K diferente nos cálculos de MA (K), somente o conjunto de dados de operação precisa ser atualizado, o que é um trabalho trivial. Agora, o modelo de código real para o cálculo MA (K) será: Com este novo método, é interessante compará-lo com o auto caro CROSS JOIN, bem como a PROC EXPAND. Na minha estação de trabalho (Intel i5 3.8Ghz, 32GB de memória, 1TB 72K HDD), auto CROSS JOIN é proibitivamente longo em tempo de execução (se os dados são grandes), enquanto o novo método usa apenas 2X tanto tempo como PROC EXPAND, ambos os consumos de tempo são Trivial comparando a auto CROSS JOIN. O consumo de tempo mostrado abaixo está em quotsecondquot. Abaixo está o código leitores podem executar e comparar-se. Enviado 10 de maio de 2017 por Liang Xie Programação SAS para Data Miningsas, Movendo média sas gtgt Movendo média por davidlcassell raquo Dom, 15 Jan 2006 09:26:44 GMT Você já recebeu alguns excelentes conselhos. Pegue. Tenho algum valor incômodo para contribuir. (Além de implorar para não ir com a transposição, que será muito mais difícil trabalhar com.) Quais são os detalhes da média móvel que você precisa Para manter a recriação de uma média de todos os dados como novos dados gest adicionado é Não o que geralmente pensamos como uma média móvel. Há um limite no número de valores anteriores para incluir na média O que você faz se você tem valores ausentes no meio dos dados O que você faz se você tiver um outlier claro ocorrer no meio da média Qual é o seu Média para fazer depois Como para sua transposição, se você só precisa isso para fins de exibição, então considere fazê-lo com PROC REPORT ou PROC TABULATE vez. Se você precisar disso para um conjunto de dados externos, use os procs acima (ou PROC TRANSPOSE) e faça-os exibir o resultado para uma tabela de dados SAS para exportar. Em geral, transformar os dados de lado como você mostra faz futuras análises e resumos muito mais difícil. Também torna o gerenciamento de banco de dados pior. Ele faz, no entanto, fazer alguns chefes orientados para o Excel coelhinhos felizes. Se você tiver que computar médias como os dados novos se tornam disponíveis, a seguir apenas segue a soma ea contagem como você vai. Em seguida, a média até à data é simples. Se você tem uma janela dentro da qual lidar com médias, então eu iria com PROC EXPAND, como Andrew sugeriu. Ele permitirá que você varrer um monte de detalhes e condições de fronteira sob o tapete. HTH, David Expresse-se instantaneamente com o MSN Messenger Download hoje - seu messenger. msn. click-urlgoonm00200471avedirect01 sas gtgt Movendo média por ben. powell raquo Tue, 17 Jan 2006 17:33:00 GMT Isto ilustrar um (outro) erro em Excel ou você deve ter incluído: se N gt 2, em seguida, fazer Uma média móvel em um gráfico do Excel com período 3 não dará nenhum valor para os dois primeiros pontos enquanto o uso da função média, com SAS manipulação os valores faltando, produz um valor Para os dois primeiros pontos. O que é correto: Howard (e SAS) ou Excel No sábado, 14 Jan 2006 19:13:00 -0500, Howard Schreier lths AT dc-sug DOT orggt sas gtgt Média móvel por davidlcassell raquo Wed, 18 Jan 2006 02:48: 00 GMT Depende do seu caso de negócio. Em séries temporais, muitas vezes temos de fazer algumas chamadas de julgamento sobre as médias móveis e as estatísticas descritivas com janelas, com base nos requisitos do problema e coisas como o comprimento da janela. Eu esperaria atribuir um valor em falta para os dois primeiros pontos aqui, mas o cartaz original especificamente pediu o resultado que Howard construiu. Então eu tenho que dizer que o código do Howards está certo nessa situação. Se o cartaz original apresentou o problema claramente é outra questão. David FREE bloqueio de pop-up com a nova barra de ferramentas do MSN obtê-lo agora toolbar. msn. click-urlgoonm00200415avedirect01 sas gtgt Mover média por jdibal raquo Sáb, 21 Jan 2006 02:28:19 GMT Obrigado a todos que responderam. I a apenas percebeu veios que I hadnt resposta bac k última semana. Desculpa. Aqui está o que eu acabei com: dados MovingAvg manter s 0 conjunto main4 s3D s dias avgSpan3Dsn executar Que resulta em algo como: 200511 3.3 3.3 200512 10.1 6.7 200601 22.1 11.8 Eu não acabar precisando de uma transposição, mas que seria bastante padrão. Obrigado novamente. Oi tudo - Alguém sabe uma maneira fácil de calcular uma média móvel em SAS Parece-me que esta é uma coisa comum e eu apenas não posso encontrar o Direito proc. Tenho vários anos de dados diários, e quero calcular o valor médio diário de um ponto de dados ao longo de 30 dias. A única idéia que tenho até agora é usar uma etapa de dados para subconjunto de dados, em seguida, use PROC MEANS e iterar, mas isso parece realmente cloodgy. Sas gtgt em movimento por hs AT dc-sug DOT org raquo Sáb, 17 Jan 2009 02:39:44 GMT Em Sex, 16 Jan 2009 13:09:11 -0500, Blocher, Jesse lt XXXXXXXXX gt para mim que este é um Coisa comum e eu simplesmente não consigo encontrar o processo certo. Valor de um ponto de dados ao longo de 30 dias. Usar PROC MEANS e iterar, mas isso parece realmente cloodgy. 1. PROC EXPAND (SASETS) sas gtgt média móvel por dorjetarap raquo Sat, 17 Jan 2009 02:44:35 GMT Se você tem ETS, então você pode usar proc expand. Para verificar se você executou o seguinte e verifique o log: proc setinit run Este artigo dá um exemplo de como usar isso: 2009116 Blocher, Jesse lt XXXXXXXXX gt: sas gtgt média móvel por sashole raquo Sat, 17 Jan 2009 05: 04:05 GMT Você pode tentar uma abordagem de 1 passo (o primeiro passo é um arquivo de exemplo, e eu deixar n3 em vez de 30 no seu caso): dados a data de 1 a 20 item 1 saída final executar deixe n 3 deixe w Soma - soma (lagw (item), 0) soma item avg soma w data lagn (data) item lagn (item) if N gt w run A idéia do acima é equilibrar a soma para cada observação, subtraindo-lhe o item de 2N1 observações atrás antes de adicionar o item atual (evitando assim a necessidade de soma (N1) itens para cada observação), então Para calcular a média e atribuir-lhe os valores da observação Nth por trás da corrente. Eu não sei como você quer lidar com as datas mais próximas que N do início e do final, então acima eles são simplesmente cortados, e apenas as datas totalmente rodeado por - N itens são apresentados. Em sex, 16 Jan 2009 13:09:11 -0500, Blocher, Jesse lt XXXXXXXXX gt para mim que esta é uma coisa comum e eu apenas não posso encontrar o proc direito. Valor de um ponto de dados ao longo de 30 dias. Use PROC MEANS e iterate, mas isso parece realmente cloodgy.13 Desmoronando através de observações em SAS SAS Learning Modules Aqui nós ilustramos como recolher dados através de observações usando proc means. Nosso exemplo usa um conjunto de dados hipotéticos contendo informações sobre crianças em três famílias. Estes exemplos mostram como você pode entrar em colapso entre as crianças para formar registros familiares dos registros de crianças. 1. Leitura do arquivo de dados Aqui está o programa SAS que faz um arquivo de dados chamado kids. Ele contém três famílias (famid) cada um com três crianças. Contém a identificação da família, o nome da criança, a ordem de nascimento (1 2 3 para 1º, 2º, 3º) ea idade, peso e sexo de cada criança. Aqui está a saída do proc print. 2. Usando proc significa colapso de dados entre registros Podemos usar proc significa colapso em toda a família. O exemplo abaixo calcula a idade média de cada criança dentro de cada família (por causa da declaração famid da classe) e, em seguida, exibe os resultados em um arquivo de dados SAS chamado fam2. A saída dos meios proc é mostrada abaixo. E usamos proc print para dar uma olhada no fam2. E esta saída mostra que o arquivo de dados fam2 contém a média de idade para as crianças para cada família. No entanto, há um registro extra (o mostrado abaixo). Esta é a média geral (observe que o FREQ para ele é 9, e há um total de nove crianças). Nós realmente não queremos esse disco. Podemos suprimir a criação do registro com a média geral com a opção nway na instrução proc means. Em geral, quando você usa proc significa com a instrução de classe e faz um arquivo de dados de saída, você normalmente vai querer usar a opção nway como mostrado abaixo. Omitimos o processo significa saída Agora, o arquivo de dados fam3 tinha apenas tem três registros com a idade média para cada família. 3. Nomeando explicitamente as variáveis ​​recolhidas O seguinte proc significa que o exemplo faz exatamente a mesma coisa que o exemplo anterior, exceto que a média de idade é explicitamente chamada, chamando-a de avgage. Omitimos o processo significa saída A saída é a mesma de antes, exceto que a média de idade é chamada de avaria. O restante dos exemplos explicitamente nomeará as variáveis ​​recolhidas (por exemplo, use meanavgage em vez de apenas mean). Em geral, é melhor nomear explicitamente as variáveis ​​para evitar confusão entre a variável original e a variável recolhida. 4. Obtenção de meios de mais de uma variável Podemos solicitar médias para mais de uma variável. Aqui temos a média de idade e para wt todos no mesmo comando. Como você vê na saída abaixo, avgage é a idade média e avgwt é o peso médio das crianças em cada família. 5. Solicitando múltiplas estatísticas de uma só vez Podemos solicitar várias estatísticas ao mesmo tempo. O comando abaixo obtém a média, desvio padrão e idade (média std e N) para idade e peso dentro de cada família. Os resultados abaixo mostram a saída dos meios proc. Os resultados abaixo correspondem aos meios de proc acima. Você pode ver que a idade média e wt pela família estão em avgage e avgwt. Da mesma forma stdage e stdwt contêm o desvio padrão de idade e wt para cada família, e nage e nwt têm o número válido de observações para idade e wt para cada família. 6. Suprimir proc significa saída No nosso exemplo, temos apenas três famílias. Para seus dados, você pode ter dezenas, centenas, ou milhares de famílias (ou qualquer grupo que você está usando). A saída do proc significa que pode ficar muito tempo, então você pode querer suprimir a saída. Você pode fazer isso com a opção noprint como mostrado abaixo. A saída dos meios proc não é impressa devido à opção noprint. 7. Contando o número de meninos e meninas na família Suponha que você queria uma contagem do número de meninos e meninas na família. Podemos fazer isso com um passo extra. Vamos fazer uma variável dummy que é 1 se um menino (0 se não), e uma variável dummy que é 1 se uma menina (e 0 se não). A soma da variável dummy menino dentro de uma família é o número de meninos na família ea soma da variável dummy menina dentro de uma família é o número de meninas na família. Primeiro, usamos um passo de dados para fazer o menino e menina variável dummy. Nós usamos proc print para olhar as variáveis ​​menino e menina para verificá-los duas vezes. Usamos proc meios para resumir as variáveis ​​dummy menino e menina para cada família e para criar um arquivo de dados chamado fam8 que contém a soma do menino em meninos ea soma de menina em meninas. Usamos a opção noprint para suprimir a saída dos meios proc. Fazemos um proc print para ver o arquivo de dados de saída. Como esperamos, o print proc mostra que meninos contém a contagem de meninos em cada família e meninas contém a contagem de meninas em cada família. 8. Mesclando os dados recolhidos com os dados originais Às vezes, você deseja mesclar os dados recolhidos com os dados originais. Let8217s usar um exemplo criando avgage e avgwt para cada família, em seguida, mesclar esses resultados de volta com os dados originais crianças. Em primeiro lugar, colapsar os dados entre as famílias para fazer avgage e avgwt apenas como fizemos antes. Em segundo lugar, classificamos as crianças e classificamos fam9 tanto em famid. Preparando-se para fundir-los juntos. Em terceiro lugar, mesclamos os arquivos classificados em conjunto (skids e sfam9) por famid. Podemos soltar tipo e freq, uma vez que eles não são necessários, mas nós don8217t tem que deixá-los cair. Podemos imprimir os resultados, mostrando que as variáveis ​​avgage e avgwt agora são mescladas de volta com as crianças originais para que cada criança tem a média associada idade e peso para a sua família. 9. Problemas para procurar por Você pode acabar com registros que você não estava esperando se você esquecer de usar a opção nway. Se você recolher em registros e, em seguida, voltar novamente com os dados originais, certifique-se de que você explicitamente nomear as variáveis ​​quando você recolhê-los. Se você don8217t, as variáveis ​​dos dados recolhidos terão os mesmos nomes que os dados originais, e eles entrarão em conflito quando você voltar a agrupar os dados. 10. Para obter mais informações Para obter mais informações sobre a mesclagem de arquivos de dados, consulte o módulo de aprendizado do SAS no Match Merging Data Files no SAS.

No comments:

Post a Comment