Saturday 7 January 2017

Déplacement Moyenne Temps Constante

J'ai une valeur continue pour laquelle Id veut 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 bien, 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 différentes valeurs de Deltat (la variation de Deltat n'est pas très importante tant que alpha est petit, sinon vous allez rencontrer quelques problèmes plutôt étranges Nyquist 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é prélevés à 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. Je pense que je peux interpoler mes données: étant donné que I39m échantillonnage à intervalles discrets, I39m déjà le faire avec un standard 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 ya une telle bête que interpolation quotproper. 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 simplement don39t savoir ce qui s'est passé dans le temps que vous n'êtes pas d'é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 Jun 21 09 at 15: 23En pratique, la moyenne mobile fournira une bonne estimation de la moyenne des séries chronologiques si la moyenne est constante ou change lentement. Dans le cas d'une moyenne constante, la plus grande valeur de m donnera les meilleures estimations de la moyenne sous-jacente. Une période d'observation plus longue évalue en moyenne les effets de la variabilité. Le but de fournir un plus petit m est de permettre à la prévision de répondre à un changement dans le processus sous-jacent. Pour illustrer, nous proposons un ensemble de données qui intègre des changements dans la moyenne sous-jacente de la série chronologique. La figure montre la série chronologique utilisée pour l'illustration ainsi que la demande moyenne à partir de laquelle la série a été générée. La moyenne commence comme une constante à 10. En commençant au temps 21, elle augmente d'une unité dans chaque période jusqu'à ce qu'elle atteigne la valeur de 20 au temps 30. Puis elle redevient constante. Les données sont simulées en ajoutant à la moyenne un bruit aléatoire issu d'une distribution normale avec moyenne nulle et écart-type 3. Les résultats de la simulation sont arrondis à l'entier le plus proche. Le tableau montre les observations simulées utilisées pour l'exemple. Lorsque nous utilisons la table, nous devons nous rappeler qu'à un moment donné, seules les données passées sont connues. Les estimations du paramètre du modèle, pour trois valeurs différentes de m, sont indiquées avec la moyenne des séries temporelles dans la figure ci-dessous. La figure montre l'estimation moyenne mobile de la moyenne à chaque instant et non pas la prévision. Les prévisions changeraient les courbes de la moyenne mobile vers la droite par périodes. Une conclusion ressort immédiatement de la figure. Pour les trois estimations, la moyenne mobile est en retard par rapport à la tendance linéaire, le décalage augmentant avec m. Le retard est la distance entre le modèle et l'estimation dans la dimension temporelle. En raison du décalage, la moyenne mobile sous-estime les observations à mesure que la moyenne augmente. Le biais de l'estimateur est la différence à un moment précis dans la valeur moyenne du modèle et la valeur moyenne prédite par la moyenne mobile. Le biais lorsque la moyenne augmente est négatif. Pour une moyenne décroissante, le biais est positif. Le retard dans le temps et le biais introduit dans l'estimation sont des fonctions de m. Plus la valeur de m. Plus l'ampleur du décalage et du biais est grande. Pour une série en constante augmentation avec tendance a. Les valeurs de retard et de biais de l'estimateur de la moyenne sont données dans les équations ci-dessous. Les courbes d'exemple ne correspondent pas à ces équations parce que le modèle d'exemple n'est pas en augmentation continue, plutôt qu'il commence comme une constante, des changements à une tendance et devient alors à nouveau constante. Les courbes d'exemple sont également affectées par le bruit. La prévision moyenne mobile des périodes dans le futur est représentée par le déplacement des courbes vers la droite. Le décalage et le biais augmentent proportionnellement. Les équations ci-dessous indiquent le décalage et le biais d'une période de prévision dans le futur par rapport aux paramètres du modèle. Encore une fois, ces formules sont pour une série chronologique avec une tendance linéaire constante. Nous ne devrions pas être surpris de ce résultat. L'estimateur de la moyenne mobile est basé sur l'hypothèse d'une moyenne constante, et l'exemple a une tendance linéaire dans la moyenne pendant une partie de la période d'étude. Étant donné que les séries de temps réel obéiront rarement exactement aux hypothèses de n'importe quel modèle, nous devrions être préparés à de tels résultats. On peut aussi conclure de la figure que la variabilité du bruit a le plus grand effet pour m plus petit. L'estimation est beaucoup plus volatile pour la moyenne mobile de 5 que la moyenne mobile de 20. Nous avons les désirs contradictoires d'augmenter m pour réduire l'effet de la variabilité due au bruit et diminuer m pour rendre la prévision plus sensible aux changements En moyenne. L'erreur est la différence entre les données réelles et la valeur prévue. Si la série chronologique est vraiment une valeur constante, la valeur attendue de l'erreur est nulle et la variance de l'erreur est composée d'un terme qui est une fonction de et d'un second terme qui est la variance du bruit,. Le premier terme est la variance de la moyenne estimée avec un échantillon de m observations, en supposant que les données proviennent d'une population avec une moyenne constante. Ce terme est minimisé en faisant m le plus grand possible. Un grand m rend la prévision insensible à une modification de la série chronologique sous-jacente. Pour rendre la prévision sensible aux changements, nous voulons m aussi petit que possible (1), mais cela augmente la variance d'erreur. La prévision pratique nécessite une valeur intermédiaire. Prévision avec Excel Le complément de prévision implémente les formules de moyenne mobile. L'exemple ci-dessous montre l'analyse fournie par l'add-in pour les données d'échantillon de la colonne B. Les 10 premières observations sont indexées -9 à 0. Par rapport au tableau ci-dessus, les indices de période sont décalés de -10. Les dix premières observations fournissent les valeurs de démarrage pour l'estimation et sont utilisées pour calculer la moyenne mobile pour la période 0. La colonne MA (10) (C) montre les moyennes mobiles calculées. Le paramètre de moyenne mobile m est dans la cellule C3. La colonne Fore (1) (D) montre une prévision pour une période dans le futur. L'intervalle de prévision est dans la cellule D3. Lorsque l'intervalle de prévision est changé en un nombre plus grand, les nombres de la colonne Fore sont décalés vers le bas. La colonne Err (1) (E) montre la différence entre l'observation et la prévision. Par exemple, l'observation au temps 1 est 6. La valeur prévue à partir de la moyenne mobile au temps 0 est 11.1. L'erreur est alors de -5,1. L'écart type et l'écart moyen moyen (MAD) sont calculés respectivement dans les cellules E6 et E7.


No comments:

Post a Comment