Eu sou um novato e estou tendo muitos problemas para fazer algo que provavelmente é muito simples. Eu tenho um grande conjunto de dados dividido em grupos por código de país, e eu quero fazer uma média móvel de 3 meses de um índice de preços, por país, e depois colocá-lo em uma nova coluna que corresponde ao mês apropriado. Eu tenho tentado usar rollmean assim sem sucesso (código e mensagens de erro abaixo): qualquer ajuda seria muito apreciada perguntou Mar 10 12 às 6:42 Na sua primeira tentativa, sua função não usa seu argumento x e sempre retorna O mesmo (um vetor com o tamanho errado). Além disso, o primeiro argumento, deve ser um vetor. Por fim, ela retorna uma lista de vetores: você não pode colocar o resultado diretamente em um data. frame. No seu segundo exemplo, o terceiro argumento de plyr deve ser uma função, não uma expressão. Se você quiser usar uma expressão, você pode usar resumir ou transformar como uma função (resumir retorna uma data. frame de 1 linha para cada valor de ccode. Enquanto a transformação mantém o número de linhas inalteradas) e colocar as expressões como argumentos adicionais . Respondeu 10 de março 12 em 7: 03 a largura da janela em movimento deve ser um número inteiro entre 1 e n uma opção para escolher algoritmos diferentes C - uma versão está escrita em C. Pode manipular números não finitos como NaNs e Infs (como média (x Na. rm TRUE)). Funciona o mais rápido para endrulemean. Rápido - segundo, ainda mais rápido, versão C. Este algoritmo não funciona com números não finitos. Ele também funciona o mais rápido para endrule diferente da média. R - código muito mais lento escrito em R. Útil para depuração e como documentação. Exato - o mesmo que C., exceto que todas as adições são realizadas usando um algoritmo que rastreia e corrige a sequência de caracteres de arredondamento de adição indicando como os valores no início e no final dos dados devem ser tratados. Apenas os primeiros e últimos valores de k2 em ambas as extremidades são afetados, onde k2 é a largura de banda k2 k 2. significa - aplica a função subjacente a seções menores e menores da matriz. Equivalente a: para (i em 1: k2) outi significa (x1: (ik2)). Esta opção é implementada em C se o algC. Caso contrário, é feito em R. trim - trim the ends O comprimento da matriz de saída é igual ao comprimento (x) -2k2 (out out (k21) :( n-k2)). Esta opção imita a saída de aplicação (incorporar (x, k), 1, média) e outras funções relacionadas. Manter - preencher as extremidades com números do vetor x (out1: k2 x1: k2) constante - preencher as extremidades com o primeiro e último valor calculado na matriz de saída (out1: k2 outk21) NA - preencher as extremidades com NAs (out1: k2 NA ) Func - o mesmo que a média, mas implantado em R. Esta opção pode ser muito lenta e está incluída principalmente para testes semelhantes a endrule na função runmed que possui as seguintes opções: ldquo c (median, keep, constant) rdquo. specifica se o resultado Deve ser centrado (padrão), alinhado à esquerda ou alinhado à direita. Se o endrato significa que a configuração alinhada à esquerda ou à direita retornará à implementação mais lenta equivalente a endrule func. Além dos valores finais, o resultado de y runmean (x, k) é o mesmo que ldquo para (j (1k2) :( n-k2)) yjmean (x (j-k2) :( jk2)) rdquo. O principal incentivo para escrever esse conjunto de funções foi a lentidão relativa da maioria das funções de janela em movimento disponíveis em R e seus pacotes. Com a exceção de runmed. Uma função mediana da janela de execução, todas as funções listadas na seção veja também são mais lentas do que as ldquo muito ineficientes aplicam (incorporar (x, k), 1, FUN) abordagem rdquo. A velocidade relativa da função runmean é O (n). Function EndRule aplica um dos cinco métodos (veja o argumento endrule) para processar pontos finais da matriz de entrada x. Na versão atual do código, a opção default endrulemean é calculada dentro do código C. Isso é feito para melhorar a velocidade no caso de grandes janelas em movimento. No caso da função runmean (.gegexact), um algoritmo especial é usado (consulte a seção referências) para garantir que os erros de arredondamento não se acumulam. Como resultado, o modo de execução é mais preciso do que as funções de filtro (x, rep (1k, k)) e runmean (. AlgC). Retorna um vetor numérico ou matriz do mesmo tamanho que x. Somente no caso de endruletrim, os vetores de saída serão mais curtos e as matrizes de saída terão menos linhas. Função runmean (.algexact) é baseado no código por Vadim Ogranovich, que é baseado no código Python (veja a última referência), apontado por Gabor Grothendieck. Referências Sobre a correção de erro de arredondamento usada no runmean. Shewchuk, Jonathan Adaptive Precision Floating-Point Arithmetic and Fast Robust Geometric Predicates. Www-2.cs. cmu. eduafscsprojectquakepublicpapersrobust-arithmetic. ps Mais informações sobre a correção de erros de arredondamento podem ser encontradas em: aspn. activestateASPNCookbookPythonRecipe393090 Links relacionados a: significar significante. Kernapply. filtro. decompor. Stl. Rollmean da biblioteca do zoológico, subsums da biblioteca mágica, Outras funções de janela em movimento deste pacote: runmin. Runmax. Runquantile. Runmad e rund funções genéricas de janela de execução: aplique (incorporar (x, k), 1, FUN) (mais rápido), executando o pacote gtools (extremamente lento para este fim), os subsums da biblioteca mágica podem executar operações de janela em execução com dados com Quaisquer dimensões. Pacote caTools versão 1.12 IndexMoving Médias em R No meu melhor conhecimento, R não possui uma função incorporada para calcular as médias móveis. Usando a função de filtro, no entanto, podemos escrever uma função curta para médias móveis: podemos então usar a função em qualquer dado: mav (dados) ou mav (dados, 11) se quisermos especificar um número diferente de pontos de dados Do que o traçado padrão 5 funciona como esperado: plot (mav (data)). Além do número de pontos de dados sobre os quais a média, também podemos alterar o argumento lateral das funções de filtro: sides2 usa ambos os lados, sides1 usa apenas valores passados. Compartilhe isto: Publicar navegação Comentar navegação Comentar navegação
No comments:
Post a Comment