Wednesday 4 January 2017

Moyenne Mobile Exponentielle Dérivée

L'article en question est disponible à l'adresse theastuteinvestor. net f IJEFPublishedPaper. pdf La section pertinente est la section 3 où il est indiqué quotUsing calcul, les lignes de tendance SMA à neuf et à deux mois sont converties en un modèle mathématique, suivi de descriptions d'utilisation en Sections 3.1 et 3.2 ndash babelproofreader Une moyenne mobile est, par définition, la moyenne d'un certain nombre de points de données précédents. Dans le cas de la fonction continue f: mathbb tomathbb, on peut définir la moyenne mobile simple (SMA) avec la taille de la fenêtre mathbb ni w gt 0 comme étant la fonction Dans le cas d'une fonction discrète g: mathbb tomathbb comme probable dans le cas de La SMA avec fenêtre de taille winmathbb est simplement, pour le cas continu, par le théorème fondamental du calcul, la dérivée de la SMA est simplement et pour le cas discret, en utilisant le quotient de différence, nous avons remarqué que la formule Car la dérivée du SMA est la même dans le cas discret et continu. Maintenant, je ne peux pas expliquer la phrase en utilisant le calcul. Le papier que vous avez lié à est également un peu manque de détails pour moi de déchiffrer ce que les auteurs avaient à l'esprit. Une possibilité, cependant, est qu'ils signifiaient juste l'observation ci-dessus: même si les données financières sont données discrètement, et pas continuellement dans le temps, nous avons que par l'observation ci-dessus le fait agréable suivant: Let g: mathbb tomathbb être une fonction définie Uniquement sur des intervalles de temps entiers. Soit f: mathbb tomathbb une extension continue arbitraire fixe de g qui est, f est une fonction continue avec la propriété que f (n) g (n) pour tout entier n. Définir la SMA comme ci-dessus et calculer leurs dérivées, puis nécessairement fraiser bar w (n) D-bar w (n) pour tout entier n. Ce qui dit qu'il n'a pas d'importance que le calcul ne peut pas être appliqué à des fonctions définies sur un domaine discret lors de la manipulation des SMA, les images discrètes et continues donnent les mêmes réponses lorsque vous les évaluez à l'intégrale timesteps. I ont une valeur continue pour Id Id 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-Tatt tau où Deltat est le temps entre les échantillons, et tau est la constante de temps du filtre passe-bas. Je dis égale entre guillemets car cela fonctionne bien quand Deltat tau est petit par rapport à 1, et alpha 1-e-Datat tau asymp Deltat tau. (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).) Tau l'effet de filtrage commence à disparaître, jusqu'à ce que vous arrivez au point où 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 1 tau, et envisager d'essayer d'approcher la formule de l'alpha. Si vous voulez vraiment savoir comment dériver la formule alpha 1-e-Datat tau, considérons sa source d'équations différentielles: qui, lorsque X est une fonction d'échelon unitaire, a la solution Y 1 - e - t tau. Pour de petites valeurs de Deltat, la dérivée peut être approchée par DeltaY Deltat, donnant Y tau DeltaY Deltat X DeltaY (XY) (Deltat tau) alpha (XY) et l'extrapolation de alpha 1-e-Datat tau vient de tenter de faire correspondre Le comportement avec le cas de fonction d'étape 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. 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, supposons 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 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