J'essaie de trouver un moyen de calculer une moyenne cumulative mobile sans stocker le compte et le total des données reçues jusqu'à présent. Je suis venu avec deux algorithmes, mais les deux ont besoin de stocker le compte: nouvelle moyenne ((ancien nombre de données anciennes) les prochaines données) compter suivante nouvelle moyenne vieille moyenne (prochaines données - vieille moyenne) Est de plus en plus grande, ce qui entraîne une perte de précision dans la moyenne résultante. La première méthode utilise le comptage ancien et le compte suivant qui sont évidemment à part. Cela m'a fait penser que peut-être il ya un moyen d'enlever le compte, mais malheureusement je ne l'ai pas encore trouvé. Il m'a un peu plus loin cependant, résultant dans la deuxième méthode mais compte encore est présent. Est-il possible, ou est-ce que je recherche juste l'impossible demandé Sep 28 12 à 8: 46Im essayant de trouver un algorithme efficace, numériquement stable pour calculer une variance de roulement (par exemple, une variance sur une fenêtre roulante de 20 périodes). Im conscient de l'algorithme de Welford qui calcule efficacement la variance de fonctionnement pour un flux de nombres (il ne nécessite qu'un seul passage), mais je ne suis pas sûr si cela peut être adapté pour une fenêtre de roulement. Je voudrais aussi la solution pour éviter les problèmes d'exactitude discuté au début de cet article. Une solution dans n'importe quelle langue est très bien. Demandé 28 février à 20:46 Ive couru à travers ce problème ainsi. Il y a quelques grands postes là-bas dans le calcul de la variance cumulative courante telle que John Cookes calculer exactement le post de variance courant et le poteau des explorations numériques, le code de Python pour calculer les variances d'échantillon et de population, la covariance et le coefficient de corrélation. Juste ne pouvait pas trouver aucun qui ont été adaptés à une fenêtre roulante. Les déviations standard courantes par messages subliminaux étaient critiques pour obtenir la formule de fenêtre de roulement pour fonctionner. Jim prend la somme de puissance des différences au carré des valeurs par rapport à l'approche de Welfords d'utiliser la somme des différences au carré de la moyenne. Formule comme suit: PSA aujourd'hui PSA (hier) (((x aujourd'hui x aujourd'hui) - x hier)) n x valeur de votre série temporelle n nombre de valeurs que vous avez analysées jusqu'à présent. Mais, pour convertir la formule Power Sum Average en une variété fenêtrée, vous avez besoin d'ajuster la formule à la suivante: PSA aujourd'hui PSA hier (((x aujourd'hui x aujourd'hui) - (x hier x Hier) nx valeur dans votre série temporelle n nombre de Vous avez également besoin de la formule Rolling Simple Moving Average: SMA aujourd'hui SMA hier ((x aujourd'hui - x aujourd'hui - n) nx valeur dans votre série de temps n période utilisée pour votre fenêtre de roulement. Variation de la population en mouvement: Population Var aujourd'hui (PSA aujourd'hui n - n SMA aujourd'hui SMA aujourd'hui) n Ou la Variation de l 'Échantillon Roulant: Echantillon Var aujourd'hui (PSA aujourd'hui n - n SMA aujourd'hui SMA aujourd'hui) (n - 1) Exemple de code Python dans un post de blog il y a quelques années, Variante en cours d'exécution, j'espère que cela vous aidera ... Notez que j'ai fourni des liens vers tous les posts et formules mathématiques en latex pour cette réponse. Lt 10) Im limitée à seulement 2 hyperliens et absolument aucune image. Espérons que ce doesnt emporter du contenu. Voici une approche de division et de conquête qui possède des mises à jour O (log k), où k est le nombre d'échantillons. Il devrait être relativement stable pour les mêmes raisons que la sommation par paires et les FFT sont stables, mais c'est un peu compliqué et la constante n'est pas grande. Supposons que l'on ait une suite A de longueur m avec moyenne E (A) et variance V (A). Et une séquence B de longueur n avec moyenne E (B) et variance V (B). Soit C la concaténation de A et B. Nous avons maintenant, remplissez les éléments d'un arbre rouge-noir, où chaque noeud est décoré de la moyenne et de la variance du sous-arbre enraciné à ce noeud. Insérer à droite, supprimer à gauche. (Puisqu'il n'y avait que l'accès aux extrémités, un arbre splay peut être amorti, mais Im guessing amorti est un problème pour votre application.) Si k est connu à la compilation, vous pourriez probablement dérouler la boucle interne de style FFTW . En fait, l'algorithme de Welfords peut facilement être adapté pour calculer la variance pondérée. Et en définissant des poids à -1, vous devriez être capable d'annuler efficacement des éléments. Je n'ai pas vérifié les mathématiques si elle permet des poids négatifs si, mais à un premier regard, je dois faire une petite expérience en utilisant ELKI: 14 chiffres de précision par rapport à l'algorithme à deux passes exacte, c'est à peu près autant que l'on peut s'attendre de double. Notez que Welford vient à un certain coût de calcul en raison des divisions supplémentaires - il prend environ deux fois aussi longtemps que l'algorithme exact de deux passe. Si votre taille de fenêtre est petite, il peut être beaucoup plus raisonnable de recalculer réellement la moyenne et puis dans un deuxième passage la variance à chaque fois. J'ai ajouté cette expérience comme test unitaire à ELKI, vous pouvez voir la source complète ici: elki. dbs. ifi. lmu. debrowserelkitrunktestdelmuifidbselkimathTestSlidingVariance. java il se compare également à la variance exacte à deux passes. Toutefois, sur les ensembles de données asymétriques, le comportement peut être différent. Cet ensemble de données est évidemment uniforme distribué mais Ive a également essayé un arrangement trié et il a fonctionné. J'ai répondu Jan 5 13 at 13:47 Répondue Apr 24 14 at 18:32 Je suis impatient d'être prouvé mal sur ce point, mais je ne pense pas que cela peut être fait rapidement. Cela dit, une grande partie du calcul est de garder la trace de l'EV sur la fenêtre qui peut être fait facilement. Ill laisser avec la question: êtes-vous sûr que vous avez besoin d'une fonction fenêtrée Sauf si vous travaillez avec de très grandes fenêtres, il est probablement préférable d'utiliser simplement un algorithme prédéfini bien connu. (X2 de 1..20), et Somme (X de 1..20) et puis successivement recomptager les deux sommes à chaque itération n'est pas assez efficace Il est possible de recalculer la nouvelle variance sans additionner, carré, etc. tous les échantillons à chaque fois. Répondre fév 28 11 at 21:07 Je crois que cette solution est sensible aux problèmes de stabilité mentionnés dans le lien dans mon post original (johndcookstandarddeviation. html). En particulier, lorsque les valeurs d'entrée et grande et leur différence est faible que le résultat pourrait être négatif. Je n'aurai aucun contrôle sur la contribution, donc je préférerais éviter cette approche. Ndash Abiel Feb 28 11 at 21:11 Oh, je vois. Y at-il quelque chose que vous pouvez dire sur l'entrée Utilisation prévue Est-ce un problème que vous pouvez jeter plus de bits à (64-bit flottant, arithmétique de précision arbitraire, etc.) Arrondi erreurs disparaissent si vous trump l'entrée en chiffres significatifs, Pas de ndash John Février 28 11 à 21:16 Jason S: La variance de roulement est ce qu'il est. Il peut y avoir beaucoup de choses dans la transition de 1 million à zéro, mais c'est la nature de la bête. Cela, et le premier 980 des 1000 1 million de valeurs sont hors de l'image quand le changement se produit de toute façon. Mon commentaire a suggéré que si vous aviez assez de chiffres significatifs dans vos calculs, rien de cela ne serait important. Ndash John Feb 28 11 at 21:51 Entrée pourrait vraiment être quelque chose. L'amplitude de la valeur pourrait certainement se situer dans les trillions, et alors que les données d'origine n'auront qu'une précision de quelques décimales, les utilisateurs pourront transformer leurs données (par exemple en divisant par n'importe quel scalaire) avant de calculer la variance. Ndash Abiel Feb 28 11 at 21:56 Pour seulement 20 valeurs, son trivial d'adapter la méthode exposée ici (je n'ai pas dit rapide, cependant). Vous pouvez simplement choisir un tableau de 20 de ces classes RunningStat. Les 20 premiers éléments du flux sont quelque peu spéciaux, mais une fois cela fait, c'est beaucoup plus simple: quand un nouvel élément arrive, effacez l'instance courante de RunningStat, ajoutez l'élément à toutes les 20 instances et incrémentez le compteur (modulo 20) Qui identifie la nouvelle instance complète de RunningStat à un moment donné, vous pouvez consulter l'instance complète courante pour obtenir votre variante courante. Vous remarquerez évidemment que cette approche n'est pas vraiment évolutive. Vous pouvez également noter qu'il ya une certaine redudance dans les nombres que nous gardons (si vous allez avec la classe complète RunningStat). Une amélioration évidente serait de garder les 20 Mk et Sk directement. Je ne peux pas penser à une meilleure formule en utilisant cet algorithme particulier, je crains que sa formulation récursive un peu nos liens. Réponse Mar 1 11 at 9: 01EVues Vue d'ensemble: Gestion des données Partie 3: Gestion sophistiquée des données Des outils analytiques puissants ne sont utiles que si vous pouvez facilement travailler avec vos données. EViews fournit la plus large gamme d'outils de gestion de données disponibles dans n'importe quel logiciel économétrique. Grâce à sa vaste bibliothèque d'opérateurs et de fonctions mathématiques, statistiques, de date, de chaîne et de séries chronologiques, à une prise en charge complète des données numériques, de caractères et de dates, EViews offre les fonctionnalités de traitement de données que vous attendez des logiciels statistiques modernes. Bibliothèque de fonctions étendues EViews comprend une vaste bibliothèque de fonctions pour travailler avec les données. En plus des fonctions mathématiques et trigonométriques standard, EViews fournit des fonctions pour la statistique descriptive, les statistiques cumulatives et mobiles, les statistiques par groupe, les fonctions spéciales, les opérations spécialisées de date et de série temporelle, le fichier de travail, la carte de valeurs et les calculs financiers. EViews fournit également des générateurs de nombres aléatoires (Knuth, LEcuyer ou Mersenne-Twister), des fonctions de densité et des fonctions de distribution cumulative pour dix-huit distributions différentes. Elles peuvent être utilisées pour générer de nouvelles séries ou pour calculer des expressions scalaires et matricielles. EViews offre une vaste bibliothèque de fonctions. Manipulation sophistiquée des expressions Les outils puissants EViews pour la gestion des expressions signifient que vous pouvez utiliser des expressions pratiquement partout où vous utiliserez une série. Vous n'avez pas à créer de nouvelles variables pour travailler avec le logarithme de Y, la moyenne mobile de W, ou le rapport de X à Y (ou toute autre expression valide). Au lieu de cela, vous pouvez utiliser l'expression dans le calcul de statistiques descriptives, dans le cadre d'une équation ou d'une spécification de modèle, ou dans la construction de graphes. Lorsque vous prévoyez utiliser une équation avec une expression pour la variable dépendante, EViews (si possible) vous permettra de prévoir la variable dépendante sous-jacente et ajustera l'intervalle de confiance estimé en conséquence. Par exemple, si la variable dépendante est spécifiée comme LOG (G), vous pouvez choisir de prévoir le journal ou le niveau de G et de calculer l'intervalle de confiance approprié, éventuellement asymétrique. Travailler directement avec des expressions à la place des variables. Liens, formules et valeurs Les objets de liaison de cartes vous permettent de créer des séries qui permettent de lier des données contenues dans d'autres fichiers de travail ou de travail. Les liens vous permettent de combiner des données à différentes fréquences ou de fusionner les données d'une page récapitulative dans une page individuelle de façon à ce que les données soient dynamiquement mises à jour chaque fois que les données sous-jacentes changent. De même, dans un fichier de travail, des formules peuvent être affectées à des séries de données de sorte que les séries de données sont recalculées automatiquement chaque fois que les données sous-jacentes sont modifiées. Les étiquettes de valeur (par exemple quotHighquot, quotMedquot, quotLowquot, correspondant à 2, 1, 0) peuvent être appliquées à des séries numériques ou alpha de sorte que des données catégorielles peuvent être affichées avec des étiquettes significatives. Les fonctions intégrées vous permettent de travailler avec les valeurs sous-jacentes ou mappées lors de la réalisation des calculs. Des liens peuvent être utilisés pour la conversion de fréquence dynamique ou la fusion de correspondance. Structures de données et types Les EViews peuvent gérer des structures de données complexes, y compris des données datées régulières et irrégulières, des données transversales avec des identificateurs d'observation et des données datées et non datées. Outre les données numériques, un fichier de travail EViews peut également contenir des données alphanumériques (chaîne de caractères) et des séries contenant des dates, qui peuvent toutes être manipulées à l'aide d'une vaste bibliothèque de fonctions. EViews fournit également un large éventail d'outils pour travailler avec des ensembles de données (fichiers de travail), des données incluant la possibilité de combiner des séries par des critères de fusion et des procédures de fichiers de travail pour modifier la structure de vos données: join, append, subset, resize, sort, and Remplacez (empilez et désempilez). Les fichiers de travail EViews peuvent être très structurés. Enterprise Edition Prise en charge d'ODBC, FAME TM. DRIBase et Haver Analytics Databases Dans le cadre de EViews Enterprise Edition (option de coût supplémentaire sur EViews Standard Edition), une assistance est fournie pour l'accès aux données contenues dans les bases de données relationnelles (via les pilotes ODBC) et aux bases de données dans une variété de formats propriétaires utilisés Par des données commerciales et des fournisseurs de bases de données. Open Database Connectivity (ODBC) est une norme prise en charge par de nombreux systèmes de bases de données relationnelles, notamment Oracle, Microsoft SQL Server et IBM DB2. EViews vous permet de lire ou d'écrire des tables entières à partir de bases de données ODBC ou de créer un nouveau fichier de travail à partir des résultats d'une requête SQL. EViews Enterprise Edition prend également en charge l'accès aux bases de données de format FAME MC (local et serveur) Global Insights DRIPro et DRIBase, Haver Analytics DLX, Datastream, FactSet et Moodys Economy. L'interface de base de données EViews familière et facile à utiliser a été étendue à ces formats de données afin que vous puissiez travailler avec des bases de données étrangères aussi facilement que des bases de données EView natives. Conversion de fréquence Lorsque vous importez des données d'une base de données ou d'une autre page de fichier de travail ou de fichier de travail, elle est automatiquement convertie en la fréquence de votre projet actuel. EViews offre de nombreuses options pour la conversion de fréquence, et comprend la prise en charge de la conversion de données quotidiennes, hebdomadaires ou de fréquence irrégulière. Une méthode de conversion préférée peut être attribuée à la série, ce qui vous permet d'utiliser différentes méthodes pour différentes séries sans avoir à spécifier la méthode de conversion à chaque fois qu'une série est accessible. Vous pouvez même créer des liens afin que les séries de données converties en fréquence soient recalculées automatiquement chaque fois que les données sous-jacentes sont modifiées. Spécifiez une conversion automatique spécifique à une série ou sélectionnez une méthode spécifique. Pour des informations de vente s'il vous plaît e-mail saleseviews Pour le soutien technique s'il vous plaît email supporteviews S'il vous plaît inclure votre numéro de série avec toute la correspondance électronique. Pour plus d'informations, consultez notre page À propos.
No comments:
Post a Comment