Friday 25 August 2017

Média Móvel Ponderada Em Sas


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 de 15: 29Ver MACMA1 na Biblioteca de Amostra SASQC O exemplo anterior ilustra como você pode criar gráficos médios móveis usando dados brutos (medidas do processo). No entanto, em muitas aplicações, os dados são fornecidos como estatísticas de resumo do subgrupo. Este exemplo ilustra como você pode usar a instrução MACHART com dados deste tipo. O seguinte conjunto de dados (CLIPSUM) fornece os dados do exemplo anterior em forma resumida: uma listagem do CLIPSUM é mostrada na Figura 21.3. Há exatamente uma observação para cada subgrupo (observe que os subgrupos ainda estão indexados por DIA). A variável GAPX contém os meios do subgrupo, a variável GAPS contém os desvios-padrão do subgrupo e a variável GAPN contém os tamanhos de amostra do subgrupo (estes são todos os cinco). O conjunto de dados CLIPSUM Figura 21.3: o conjunto de dados de resumo CLIPSUM Você pode ler este conjunto de dados especificando-o como um conjunto de dados HISTÓRICO na instrução PROC MACONTROL, da seguinte maneira: O gráfico médio móvel resultante é mostrado na Figura 21.4. Uma vez que a opção LINEPRINTER é especificada na instrução PROC MACONTROL, a saída da impressora de linha é produzida. O asterisco () especificado em citações simples após a variável do subgrupo indica o caractere usado para traçar pontos. Esse personagem deve seguir um sinal de igual. Observe que o GAP não é o nome de uma variável SAS no conjunto de dados, mas é, em vez disso, o prefixo comum para os nomes das três variáveis ​​SAS GAPX, GAPS e GAPN. Os sufixos são X. S. E N indica média. desvio padrão . E tamanho da amostra. respectivamente. Assim, você pode especificar três variáveis ​​de resumo de subgrupo em um conjunto de dados de HISTÓRIA com um nome único (GAP), que é referido como o processo. As variáveis ​​GAPX, GAPS e GAPN são todas necessárias. O nome DAY especificado após o asterisco é o nome da subgrupo-variável. Gráfico de média móvel para medições de gap Figura 21.4: Gráfico de média móvel globalmente ponderada de dados de resumo Em geral, um conjunto de dados de entrada HISTÓRICO usado com a instrução MACHART deve conter as seguintes variáveis: subgrupo subgrupo variável subgrupo variável desvio padrão variável subgrupo tamanho da amostra variável Além disso , O nome da média do subgrupo, o desvio padrão e as variáveis ​​de tamanho da amostra devem começar com o nome do processo especificado na instrução MACHART e terminar com os caracteres de sufixo especiais X. S. e n . respectivamente. Se os nomes não seguem esta convenção, você pode usar a opção RENAME na instrução PROC MACONTROL para renomear as variáveis ​​para a duração do procedimento do MACONTROL. Em resumo, a interpretação do processo depende do conjunto de dados de entrada. Se os dados brutos forem lidos usando a opção DATA (como no exemplo anterior), o processo é o nome da variável SAS que contém as medidas do processo. Se os dados de resumo forem lidos usando a opção HISTÓRICO (como neste exemplo), o processo é o prefixo comum para os nomes das variáveis ​​que contêm as estatísticas de resumo. Para obter mais informações, consulte 34HISTORY Data Set34. 13 13 Esta solução usa uma visão em linha para criar uma tabela temporária que elimina os valores de dados negativos na coluna Peso. A exibição em linha é uma consulta que seleciona as colunas de gênero e valor. Usa uma expressão CASE para selecionar o valor da coluna Peso. Se o Peso for maior do que zero, então é recuperado se o Peso for menor que zero, então um valor de zero é usado no lugar do valor de Peso. A primeira, ou externa, declaração SELECT na consulta seleciona a coluna de Género constrói uma média ponderada dos resultados que foram recuperados pela visualização em linha. A média ponderada é a soma dos produtos de Valor e Peso divididos pela soma dos pesos. Finalmente, a consulta usa uma cláusula GROUP BY para combinar os dados para que o cálculo seja realizado para cada gênero.

No comments:

Post a Comment