Wednesday 1 February 2017

Moyenne Mobile Circulante En R

Im un R newbie et j'ai beaucoup de mal à faire quelque chose qui est probablement très simple. J'ai un grand ensemble de données divisé en groupes par code de pays, et je veux prendre une moyenne mobile de trois mois d'un indice de prix, par pays, puis le mettre dans une nouvelle colonne qui correspond au mois approprié. Ive essayé d'utiliser rollmean comme ça sans succès (code et messages d'erreur ci-dessous): Toute aide serait très apprécié demandé Mar 10 12 à 6:42 Dans votre première tentative, votre fonction n'utilise pas son argument x, et toujours retourne La même chose (un vecteur avec la mauvaise taille). En outre, le premier argument, devrait être un vecteur. Enfin, tapply renvoie une liste de vecteurs: vous ne pouvez pas mettre le résultat directement dans un fichier data. frame. Dans votre deuxième exemple, le troisième argument de plyr devrait être une fonction, et non une expression. Si vous souhaitez utiliser une expression, vous pouvez utiliser le résumé ou transformer en tant que fonction (resume renvoie un 1-row data. frame pour chaque valeur de ccode. Tandis que transformer conserve le nombre de lignes inchangé), et mettre les expressions comme d'autres arguments . La longueur de la fenêtre doit être un entier compris entre 1 et n une option pour choisir des algorithmes différents C - une version est écrite en C. Elle peut traiter des nombres non finis comme NaNs et Infs (comme mean (x , Na. rm TRUE)). Il fonctionne le plus rapide pour endrulemean. Rapide - seconde, encore plus rapide, version C. Cet algorithme ne fonctionne pas avec des nombres non-finis. Il fonctionne aussi le plus rapide pour endrule autre que moyenne. R - code beaucoup plus lent écrit en R. Utile pour le débogage et comme documentation. Exact - identique à C. Sauf que toutes les additions sont effectuées à l'aide d'un algorithme qui suit et corrige les erreurs d'arrondissement ajoutant une chaîne de caractères indiquant comment les valeurs au début et à la fin des données doivent être traitées. Seules les première et dernière valeurs k2 aux deux extrémités sont affectées, où k2 est la demi-bande passante k2 k 2. moyenne - applique la fonction sous-jacente aux sections de plus en plus petites du tableau. Equivalent à: pour (i dans 1: k2) outi moyen (x1: (ik2)). Cette option est implémentée dans C si algC. Dans le cas contraire, dans R. trim - trim la longueur de la ligne de sortie des extrémités est égale à la longueur (x) -2k2 (out out (k21) :( n-k2)). Cette option imite la sortie de apply (embed (x, k), 1, mean) et d'autres fonctions connexes. Remplir les extrémités avec des nombres de x vecteur (out1: k2 x1: k2) constant - remplir les extrémités avec la première et la dernière valeur calculée dans le tableau de sortie (out1: k2 outk21) NA - remplir les extrémités avec NAs (out1: k2 NA ) Func - identique à la moyenne mais implimented dans R. Cette option pourrait être très lente et est incluse principalement pour le test Similar à endrule dans la fonction runmed qui a les options suivantes: ldquo c (médian, keep, constant) rdquo. specifies si résultat Doit être centré (par défaut), aligné à gauche ou aligné à droite. Si la valeur de fin signifie alors le réglage de l'alignement à gauche ou à droite retombera sur une implémentation plus lente équivalente à la fonction de fin. En dehors des valeurs finales, le résultat de y runmean (x, k) est le même que ldquo pour (j (1k2) :( n-k2)) yjmean (x (j-k2) :( jk2)) rdquo. L'incitation principale à écrire cet ensemble de fonctions était la lenteur relative de la majorité des fonctions de fenêtres mobiles disponibles dans R et ses paquetages. À l'exception de runmed. Une fonction courante de fenêtre médiane, toutes les fonctions énumérées dans voir aussi la section sont plus lentes que très inefficaces ldquo s'appliquent (embed (x, k), 1, FUN) approche de rdquo. La vitesse relative de la fonction runmean est O (n). Fonction EndRule applique l'une des cinq méthodes (voir l'argument endrule) pour traiter les points finaux du tableau d'entrée x. Dans la version actuelle du code, l'option endrulemean par défaut est calculée en C code. Cela est fait pour améliorer la vitesse dans le cas de grandes fenêtres en mouvement. Dans le cas d'une fonction runmean (.algexact), un algorithme spécial est utilisé (voir la section des références) pour s'assurer que les erreurs d'arrondi ne s'accumulent pas. Par conséquent, runmean est plus précis que les fonctions filter (x, rep (1k, k)) et runmean (.AlcC). Renvoie un vecteur ou une matrice numérique de même taille que x. Seulement dans le cas d'endruletrim les vecteurs de sortie seront plus courts et les matrices de sortie auront moins de lignes. Fonction runmean (. Algexact) est basé sur le code par Vadim Ogranovich, qui est basé sur le code Python (voir dernière référence), souligné par Gabor Grothendieck. Références A propos de la correction d'erreurs round-off utilisée dans runmean. Shewchuk, Jonathan Prédictions géométriques de précision à virgule flottante et précision rapide. Www-2.cs. cmu. eduafscsprojectquakepublicpapersrobust-arithmetic. ps Plus d'informations sur la correction d'erreurs arrondi peut être trouvée à: aspn. activestateASPNCookbookPythonRecipe393090 Liens relatifs à: moving mean - mean. Kernapply. filtre. décomposer. Stl. Rollmean de la bibliothèque du zoo, subsums de la bibliothèque magique, Autres fonctions de la fenêtre mobile de ce paquet: runmin. Runmax Runquantile Runmax et rund runmed fonctions génériques de fenêtres courantes: appliquer (incorporer (x, k), 1, FUN) (plus rapide), en cours d'exécution depuis le paquet gtools (extrêmement lent à cet effet), les sous-ensembles de magic library peuvent effectuer des opérations de fenêtres en cours sur des données avec Toutes dimensions. Package caTools version 1.12 IndexMoving Moyennes en R À ma connaissance, R n'a pas de fonction intégrée pour calculer les moyennes mobiles. En utilisant la fonction de filtrage, on peut écrire une fonction courte pour les moyennes mobiles: On peut alors utiliser la fonction sur n'importe quelle donnée: mav (data), ou mav (data, 11) si on veut spécifier un nombre différent de points de données Que les 5 tracés par défaut comme prévu: plot (mav (data)). En plus du nombre de points de données sur lesquels la moyenne, nous pouvons également changer l'argument des côtés des fonctions de filtre: sides2 utilise les deux côtés, sides1 utilise des valeurs passées seulement. Partager cette page: Navigation des articles Navigation des commentaires Navigation des commentaires


No comments:

Post a Comment