Friday, 24 February 2017

Exponential Moving Average Missing Data

Une méthode simple et générale pour compléter les données manquantes, si vous avez des séries de données complètes, est d'utiliser la régression linéaire. Supposons que vous ayez 1000 séries de 5 d'affilée avec aucune manquante. Mettre en place le vecteur 1000 x 1 y et 1000 x 4 matrice X: Régression vous donnera 4 numéros a b c d qui donnent une meilleure correspondance pour vos 1000 lignes de données mdash différentes données, différentes a b c d. Ensuite, vous utilisez ces a b c d pour estimer (prédire, interpoler) wt0 ​​manquant. (Pour les poids humains, je m'attends à abcd être tout autour 14.) (Il ya des millions de livres et de documents sur la régression, à tous les niveaux. Pour la connexion avec l'interpolation, cependant, je ne sais pas d'une bonne introduction personne) lissage et le filtrage Sont deux des techniques les plus couramment utilisées pour éliminer le bruit des données sous-jacentes afin de révéler les caractéristiques et les composantes importantes (p. Ex. Tendance, saisonnalité, etc.). Cependant, nous pouvons également utiliser le lissage pour remplir les valeurs manquantes et / ou effectuer une prévision. Dans ce numéro, nous discuterons de cinq (5) méthodes de lissage différentes: moyenne mobile pondérée (WMA i), lissage exponentiel simple, lissage exponentiel double, lissage exponentiel linéaire et lissage exponentiel triple. Pourquoi faut-il prendre soin? Le lissage est très souvent utilisé (et abusé) dans l'industrie pour effectuer un examen visuel rapide des propriétés des données (p. Ex. Tendance, saisonnalité, etc.), tenir dans les valeurs manquantes et effectuer un échantillonnage rapide prévoir. Pourquoi avons-nous autant de fonctions de lissage Comme nous le verrons dans cet article, chaque fonction fonctionne pour une hypothèse différente sur les données sous-jacentes. Par exemple, le lissage exponentiel simple suppose que les données ont une moyenne stable (ou au moins un moyen de déplacement lent), un lissage exponentiel simple ne donnera guère de résultats dans la prévision des données présentant une saisonnalité ou une tendance. Dans cet article, nous passerons en revue chaque fonction de lissage, mettrons en évidence ses hypothèses et ses paramètres et montrerons son application à travers des exemples. Moyenne mobile pondérée (WMA) Une moyenne mobile est couramment utilisée avec les séries chronologiques pour atténuer les fluctuations à court terme et mettre en évidence les tendances ou les cycles à plus long terme. Une moyenne mobile pondérée a des facteurs multiplicateurs pour donner des poids différents aux données à différentes positions dans la fenêtre échantillon. La moyenne mobile pondérée a une fenêtre fixe (c'est-à-dire N) et les facteurs sont typiquement choisis pour donner plus de poids aux observations récentes. La taille de la fenêtre (N) détermine le nombre de points moyennés à chaque fois, donc une taille de fenêtre plus grande est moins sensible aux nouvelles modifications de la série chronologique initiale et une petite taille de fenêtre peut provoquer un bruit de sortie lissé. Pour les fins de la prévision d'échantillon: Exemple 1: Considérons les ventes mensuelles pour la société X, en utilisant une moyenne mobile de 4 mois (pondérée égale). Notez que la moyenne mobile est toujours en retard par rapport aux données et que la prévision hors de l'échantillon converge vers une valeur constante. Essayons d'utiliser un schéma de pondération (voir ci-dessous) qui donne plus d'importance à la dernière observation. Nous avons représenté la moyenne mobile pondérée égale et la WMA sur le même graphique. La WMA semble plus sensible aux changements récents et la prévision hors de l'échantillon converge vers la même valeur que la moyenne mobile. Exemple 2: Examinons la WMA en présence de tendance et de saisonnalité. Pour cet exemple, bien utiliser les données internationales des compagnies aériennes de passagers. La fenêtre de la moyenne mobile est de 12 mois. La MA et la WMA suivent le rythme de la tendance, mais la prévision hors de l'échantillon s'effiloche. En outre, bien que la WMA présente une certaine saisonnalité, elle est toujours en retard par rapport aux données originales. (Browns) Lissage exponentiel simple Le lissage exponentiel simple est similaire au WMA à l'exception que la taille de la fenêtre si elle est infinie et que les facteurs de pondération décroissent exponentiellement. Comme nous l'avons vu dans le WMA, l'exponentielle simple est adaptée pour les séries temporelles avec une moyenne stable, ou au moins une moyenne mobile très lente. Exemple 1: Utilisons les données de ventes mensuelles (comme nous l'avons fait dans l'exemple WMA). Dans l'exemple ci-dessus, nous avons choisi le facteur de lissage à 0.8, ce qui pose la question suivante: Quelle est la meilleure valeur pour le facteur de lissage Estimation de la meilleure valeur à partir des données En utilisant la fonction TSSUB (pour calculer l'erreur), SUMSQ et Excel Nous avons calculé la somme des erreurs au carré (SSE) et tracé les résultats: Le SSE atteint sa valeur minimale autour de 0,8, nous avons donc choisi cette valeur pour notre lissage. (Holt-Winters) Lissage exponentiel double Le lissage exponentiel simple ne fonctionne pas bien en présence d'une tendance, de sorte que plusieurs méthodes conçues sous le double parapluie exponentiel sont proposées pour traiter ce type de données. NumXL prend en charge Holt-Winters double lissage exponentiel, qui prennent la formulation suivante: Exemple 1: Examinons les données des passagers aériens internationaux Nous avons choisi une valeur Alpha de 0,9 et un Bêta de 0,1. Veuillez noter que même si le lissage doux retrace bien les données originales, la prévision hors de l'échantillon est inférieure à la moyenne mobile simple. Comment trouver les meilleurs facteurs de lissage Nous prenons une approche similaire à notre simple lissage exponentiel exemple, mais modifié pour deux variables. Nous calculons la somme des erreurs carrées, construisons une table de données à deux variables et choisissons les valeurs alpha et bêta qui minimisent l'ensemble de l'ESS. (Browns) Lissage exponentiel linéaire Ceci est une autre méthode de double fonction de lissage exponentiel, mais il a un facteur de lissage: Le double lissage exponentiel Browns prend un paramètre inférieur à la fonction Holt-Winters, mais il peut ne pas offrir un ajustement aussi bon que cette fonction. Exemple 1: Utilisons le même exemple dans Holt-Winters double exponentiel et comparons la somme optimale de l'erreur au carré. La double exponentielle Browns ne correspond pas aux données de l'échantillon ainsi qu'à la méthode Holt-Winters, mais l'échantillon hors-échantillon (dans ce cas particulier) est meilleur. Comment trouver le meilleur facteur de lissage () Nous utilisons la même méthode pour sélectionner la valeur alpha qui minimise la somme de l'erreur carrée. Pour les exemples de données d'exemple, l'alpha est 0.8. (Winters) Triple lissage exponentiel Le triple lissage exponentiel prend en compte les variations saisonnières ainsi que les tendances. Cette méthode nécessite 4 paramètres: La formulation pour le lissage exponentiel triple est plus impliquée que toutes les précédentes. Veuillez consulter notre manuel de référence en ligne pour connaître la formulation exacte. En utilisant les données internationales des compagnies aériennes de passagers, nous pouvons appliquer le lissage exponentiel triple des hivers, trouver les paramètres optimaux et effectuer une prévision hors de l'échantillon. Il est évident que le lissage exponentiel triple de Winters est le mieux appliqué pour cet échantillon de données, car il suit bien les valeurs et la prévision de l'échantillon hors saison présente la saisonnalité (L12). Comment trouver le meilleur facteur de lissage () Encore une fois, nous devons choisir les valeurs qui minimisent la somme globale des erreurs au carré (SSE), mais les tables de données peuvent être utilisées pour plus de deux variables, nous avons recours à Excel (2) Les contraintes pour ce problème Conclusion support FilesI ont une valeur continue pour laquelle Id comme pour calculer une moyenne mobile exponentielle. Normalement Id juste utiliser la formule standard pour cela: où S n est la nouvelle moyenne, alpha est l'alpha, Y est l'échantillon, et S n-1 est la moyenne précédente. Malheureusement, en raison de diverses questions, je n'ai pas un temps d'échantillonnage cohérent. Je sais peut-être que je peux échantillonner au plus, disons, une fois par milliseconde, mais en raison de facteurs hors de mon contrôle, je ne peux pas être en mesure de prendre un échantillon de plusieurs millisecondes à la fois. Un cas probablement plus courant, cependant, est que je sample simple un peu tôt ou tard: au lieu d'échantillonnage à 0, 1 et 2 ms. I échantillon à 0, 0,9 et 2,1 ms. Je prévois que, indépendamment des retards, ma fréquence d'échantillonnage sera très, bien au-dessus de la limite de Nyquist, et donc je n'ai pas besoin de s'inquiéter d'aliasing. Je pense que je peux faire face à cela d'une manière plus ou moins raisonnable en faisant varier l'alpha de façon appropriée, en fonction de la durée écoulée depuis le dernier échantillon. Une partie de mon raisonnement que cela fonctionnera, c'est que l'EMA interpole linéairement entre le point de données précédent et le courant. Si l'on considère le calcul d'une EMA de la liste suivante d'échantillons aux intervalles t: 0,1,2,3,4. Nous devrions obtenir le même résultat si nous utilisons l'intervalle 2t, où les entrées deviennent 0,2,4, à droite Si l'EMA avait supposé que, à t 2, la valeur avait été 2 depuis t 0. Qui serait le même que l'intervalle t calculant sur 0,2,2,4,4, ce que ne fait pas. Ou est-ce que le sens du tout Peut-on me dire comment varier l'alpha de façon appropriée S'il vous plaît montrer votre travail. C'est à dire. Montrez-moi les maths qui prouvent que votre méthode est vraiment faire la bonne chose. Vous ne devriez pas obtenir le même EMA pour les différentes entrées. Pensez à EMA comme un filtre, l'échantillonnage à 2t équivaut à l'échantillonnage descendant, et le filtre va donner une sortie différente. Cela me paraît évident puisque 0,2,4 contient des composantes de fréquence plus élevée que 0,1,2,3,4. Sauf si la question est, comment puis-je changer le filtre à la volée pour lui donner la même sortie. Peut-être que je manque quelque chose ndash freespace Jun 21 09 at 15:52 Mais l'entrée n'est pas différente, il a juste échantillonné moins souvent. 0,2,4 à intervalles 2t est comme 0,, 2,, 4 aux intervalles t, où l'indique que l'échantillon est ignoré ndash Curt Sampson Jun 21 09 à 23:45 Cette réponse basée sur ma bonne compréhension du passe-bas Filtres (moyenne mobile exponentielle est vraiment juste un filtre passe-bas unipolaire), mais ma compréhension floue de ce que vous cherchez. Je pense que ce qui suit est ce que vous voulez: Tout d'abord, vous pouvez simplifier votre équation un peu (semble plus compliqué, mais son plus facile dans le code). Je vais utiliser Y pour la sortie et X pour l'entrée (au lieu de S pour la sortie et Y pour l'entrée, comme vous l'avez fait). Deuxièmement, la valeur de alpha ici est égale à 1-e-Dtatattau où Deltat est le temps entre les échantillons, et tau est la constante de temps du filtre passe-bas. Je dis égale entre guillemets parce que cela fonctionne bien quand Deltattau est petit par rapport à 1, et alpha 1-e-Delatattau asymp Deltattau. (Mais pas trop petit: vous allez rencontrer des problèmes de quantification, et à moins que vous ne recourriez à certaines techniques exotiques, vous avez généralement besoin de N bits supplémentaires de résolution dans votre variable d'état S, où N - log 2 (alpha).) Pour des valeurs plus grandes de Deltattau L'effet de filtrage commence à disparaître, jusqu'à ce que vous arrivez au point où l'alpha est proche de 1 et vous êtes essentiellement simplement d'assigner l'entrée à la sortie. Cela devrait fonctionner correctement avec des valeurs variables de Deltat (la variation de Deltat n'est pas très importante tant que alpha est petit, sinon vous rencontrerez quelques problèmes de Nyquist plutôt étranges aliasing etc.) et si vous travaillez sur un processeur où la multiplication Est moins cher que la division, ou les questions à point fixe sont importantes, precalculate omega 1tau, et envisager d'essayer d'approcher la formule de l'alpha. Si vous voulez vraiment savoir comment dériver la formule alpha 1-e-Daltaattau, alors considérez sa source d'équations différentielles: qui, lorsque X est une fonction d'étape unitaire, a la solution Y 1 - e - ttau. Pour les petites valeurs de Deltat, la dérivée peut être approchée par DeltaYDeltat, donnant Y tau DeltaYDeltat X DeltaY (XY) (Deltattau) alpha (XY) et l'extrapolation de alpha 1-e - Dettaatta provient d'essayer de faire correspondre le comportement avec le Cas de fonction d'étape d'unité. Vous voudrez peut-être élaborer sur le quottrying pour correspondre à la partie behaviour. Je comprends votre solution en temps continu Y 1 - exp (-t47) et sa généralisation à une fonction step échelonnée avec magnitude x et condition initiale y (0). Mais je ne vois pas comment mettre ces idées ensemble pour atteindre votre résultat. Ndash Rhys Ulerich May 4 13 à 22:34 Ceci n'est pas une réponse complète, mais peut être le début d'un. Son autant que j'ai obtenu avec cela dans une heure ou deux de jouer Im affichant comme un exemple de ce que je cherche, et peut-être une inspiration pour d'autres travaillant sur le problème. Je commence par S 0. Qui est la moyenne résultant de la moyenne précédente S -1 et de l'échantillon Y 0 pris à t 0. (T 1 - t 0) est mon intervalle d'échantillonnage et alpha est fixé à ce qui est approprié pour cet intervalle d'échantillonnage et la période sur laquelle je souhaite faire la moyenne. J'ai réfléchi à ce qui se passerait si je manquais l'échantillon à t 1 et au lieu de me contenter de me contenter de l'échantillon Y 2 pris à t 2. Eh bien, on peut commencer par étendre l'équation pour voir ce qui serait arrivé si on avait eu Y 1: Je remarque que la série semble s'étendre infiniment de cette façon, parce que nous pouvons substituer le S n à la droite indéfiniment: Ok , Donc ce n'est pas vraiment un polynôme (idiot moi), mais si nous multiplions le terme initial par un, nous voyons alors un modèle: Hm: sa une série exponentielle. Quelle surprise Imaginez que sortir de l'équation pour une moyenne mobile exponentielle So anyway, j'ai cette x 0 x 1 x 2 x 3. Chose va, Im et Im Im odeur e ou un logarithme naturel coups de pied ici, mais je ne peux pas me rappeler où je me dirigeais avant que je me suis écoulé du temps. Toute réponse à cette question, ou toute preuve d'exactitude d'une telle réponse, dépend fortement des données que vous mesurez. Si vos échantillons ont été pris à t 0 0 ms. T 1 0,9ms et t 2 2,1ms. Mais votre choix d'alpha est basé sur des intervalles de 1 ms, et donc vous voulez un alpha localement ajusté n. La preuve de l'exactitude du choix signifierait connaître les valeurs d'échantillonnage à t1ms et t2ms. Cela vous amène à la question suivante: Pouvez-vous interpoler vos données de manière raisonnable pour avoir des suppositions saines de ce que les valeurs intermédiaires auraient pu être Ou pouvez-vous même interpoler la moyenne elle-même Si ni l'un ni l'autre de ces est possible, Le choix d'une valeur intermédiaire Y (t) est la moyenne calculée la plus récemment. À savoir Y (t) asymp S n où n est maxmial tel que t n ltt. Ce choix a une conséquence simple: Laissez l'alpha seul, quelle que soit la différence de temps. Si, d'autre part, il est possible d'interpoler vos valeurs, cela vous donnera des échantillons d'intervalle constant moyennables. Enfin, s'il est même possible d'interpoler la moyenne elle-même, cela rendrait la question sans signification. J'ai pensé que je peux interpoler mes données: étant donné que I39m échantillonnage à intervalles discrets, I39m déjà le faire avec une norme EMA Anyway, je suppose que j'ai besoin Un quotproofquot qui montre qu'il fonctionne aussi bien qu'un EMA standard, qui a également produit un résultat incorrect si les valeurs ne changent pas assez facilement entre les périodes d'échantillon. Si vous considérez l'EMA comme une interpolation de vos valeurs, vous avez terminé si vous laissez l'alpha tel qu'il est (parce que l'insertion de la moyenne la plus récente comme Y ne change pas la moyenne) . Si vous dites que vous avez besoin de quelque chose qui fonctionne aussi bien qu'un EMA standard - ce qui ne va pas avec l'original Sauf si vous avez plus d'informations sur les données que vous mesurez, tous les ajustements locaux à alpha seront au mieux arbitraires. Ndash balpha 9830 Jun 21 09 at 15:31 Je laisserais la valeur alpha seul, et de remplir les données manquantes. Puisque vous ne savez pas ce qui se passe pendant le temps où vous ne pouvez pas échantillonner, vous pouvez remplir ces échantillons avec 0s, ou tenir la valeur précédente stable et utiliser ces valeurs pour l'EMA. Ou une interpolation arrière une fois que vous avez un nouvel échantillon, remplissez les valeurs manquantes, et recomputer l'EMA. Ce que j'essaie d'obtenir est que vous avez une entrée xn qui a des trous. Il n'existe aucun moyen de contourner le fait que vous manquez des données. Ainsi, vous pouvez utiliser un maintien d'ordre zéro, ou le mettre à zéro, ou une sorte d'interpolation entre xn et xnM. Où M est le nombre d'échantillons manquants et n le début de l'écart. Peut-être même en utilisant des valeurs avant n. Réponse June 21 09 at 13:35 De passer une heure ou ainsi de mucking un peu avec les mathématiques pour cela, je pense que simplement varier l'alpha me donnera réellement l'interpolation appropriée entre les deux points dont vous parlez, mais dans un Beaucoup plus simple. En outre, je pense que la variation de l'alpha traitera aussi correctement les échantillons prélevés entre les intervalles d'échantillonnage standard. En d'autres termes, je cherche ce que vous avez décrit, mais en essayant d'utiliser les mathématiques pour comprendre la façon simple de le faire. Ndash Curt Sampson Jun 21 09 at 14:07 Je ne pense pas qu'il y ait une telle bête que quotproper interpolationquot. Vous ne savez tout simplement pas ce qui s'est passé dans le temps que vous n'êtes pas l'échantillonnage. Interpolation bonne et mauvaise implique une certaine connaissance de ce que vous avez manqué, puisque vous avez besoin de mesurer contre qui de juger si une interpolation est bonne ou mauvaise. Cela dit, vous pouvez placer des contraintes, c'est-à-dire avec une accélération maximale, une vitesse, etc. Je pense que si vous savez comment modéliser les données manquantes, alors vous modéliseriez simplement les données manquantes, puis appliquez l'algorithme EMA sans changement, plutôt Que de changer l'alpha. Just my 2c :) ndash freespace Jun 21 09 à 14:17 C'est exactement ce que je recevais dans ma modification à la question il ya 15 minutes: quotYou don39t simplement savoir ce qui s'est passé dans le temps que vous n'êtes pas l'échantillonnage, mais ce qui est vrai Même si vous prenez un échantillon à chaque intervalle désigné. Ainsi ma contemplation de Nyquist: tant que vous savez que la forme d'onde ne change pas de direction plus que chaque couple d'échantillons, l'intervalle d'échantillonnage réel ne devrait pas être important et devrait pouvoir varier. L'équation EMA me semble exactement calculer comme si la forme d'onde a changé linéairement de la dernière valeur d'échantillon à la courante. Ndash Curt Sampson Jun 21 09 at 14:26 Je ne pense pas que c'est tout à fait vrai. Le théorème de Nyquist requiert un minimum de 2 échantillons par période pour pouvoir identifier le signal de manière unique. Si vous ne faites pas cela, vous obtenez aliasing. Il serait le même que l'échantillonnage comme fs1 pour un temps, puis fs2, puis retour à fs1, et vous obtenez aliasing dans les données lorsque vous échantillons avec fs2 si fs2 est en dessous de la limite de Nyquist. Je dois également avouer que je ne comprends pas ce que vous entendez par quotwaveform changements linéairement de l'échantillon précédent à l'actuel onequot. Pourriez-vous s'il vous plaît expliquer Cheers, Steve. Ndash freespace Jun 21 09 at 14:36 ​​Ceci est similaire à un problème ouvert sur ma liste de tâches. J'ai un schéma élaboré dans une certaine mesure, mais n'ont pas de travail mathématique à l'appui de cette suggestion encore. Mise à jour du résumé de l'ampli: Souhaitez garder le facteur de lissage (alpha) indépendant du facteur de compensation (que je désigne ici comme bêta). Jasons excellente réponse déjà acceptée ici fonctionne très bien pour moi. Si vous pouvez également mesurer le temps écoulé depuis le dernier échantillon (en multiples arrondis de votre temps d'échantillonnage constant - donc 7,8 ms depuis le dernier échantillon serait de 8 unités), qui pourrait être utilisé pour appliquer le lissage plusieurs fois. Appliquer la formule 8 fois dans ce cas. Vous avez effectivement fait un lissage biaisé plus vers la valeur actuelle. Pour obtenir un meilleur lissage, nous avons besoin de tordre l'alpha tout en appliquant la formule 8 fois dans le cas précédent. Ce que cette approximation de lissage manquera Il a déjà manqué 7 échantillons dans l'exemple ci-dessus Ceci a été approché à l'étape 1 avec une réapplication aplatie de la valeur courante de 7 fois supplémentaires Si nous définissons un facteur d'approximation bêta qui sera appliqué avec l'alpha (Comme alphabeta au lieu d'alpha), nous allons supposer que les 7 échantillons manqués ont été en douceur entre les valeurs de l'échantillon précédent et actuel. J'ai réfléchi à ce sujet, mais un peu de bouger avec les mathématiques m'a fait au point où je crois que, plutôt que d'appliquer la formule de huit fois avec la valeur de l'échantillon, je peux faire un calcul D'un nouvel alpha qui me permettra d'appliquer la formule une fois, et me donner le même résultat. De plus, cela traiterait automatiquement de la question des échantillons compensés par les temps d'échantillonnage exacts. Ndash Curt Sampson Jun 21 09 at 13:47 La demande unique est très bien. Ce dont je ne suis pas sûr, c'est la bonne approximation des 7 valeurs manquantes. Si le mouvement continu fait la gigue de la valeur beaucoup sur les 8 millisecondes, les approximations peuvent être tout à fait hors de la réalité. Mais, si vous échantillonniez à 1ms (la plus haute résolution en excluant les échantillons retardés), vous avez déjà calculé que la gigue en 1ms n'est pas pertinente. Ce raisonnement fonctionne-t-il pour vous (j'essaie toujours de me convaincre). Ndash nik Jun 21 09 at 14:08 Droit. C'est le facteur bêta de ma description. Un facteur bêta serait calculé en fonction de l'intervalle de différence et des échantillons actuels et précédents. Le nouvel alpha sera (alphabeta) mais il sera utilisé uniquement pour cet échantillon. Alors que vous semblez être en train de faire l'alpha dans la formule, je tend vers l'alpha constant (facteur de lissage) et un bêta calculé indépendamment (un facteur d'accord) qui compense les échantillons manqués tout à l'heure. Ndash nik 21 juin à 15:23


No comments:

Post a Comment