Monday, February 13, 2017

Moyenne Mobile Agrégation

Neil-lunn Je voulais calculer une moyenne mobile. Donc pour des intervalles de 3 mois I39d veulent prendre un jour et moyenne ce jour avec les données de 3 derniers mois, et puis faire cette moyenne pour chaque jour pendant 50 ans les 50 prochaines années. Donc, je pense que certaines valeurs se chevauchent pour les moyennes. Comment feriez-vous cela avec mapReduce à la place, vous ne pouvez pas le faire avec le framework d'agrégation. Je crois que vous avez raison, je dois comparer des documents séparés. Merci ndash mc. Je ne crois pas que le cadre d'agrégation peut le faire pour plusieurs dates dans la version actuelle (2.6), ou, au moins, ne peut pas faire cela sans une gymnastique sérieuse. La raison en est que le pipeline d'agrégation traite un document à la fois et un document seulement, il serait donc nécessaire de créer un document pour chaque jour qui contient les 3 mois précédents de l'information pertinente. Il s'agirait d'une phase de groupe qui calculerait la moyenne, ce qui signifie que l'étape précédente aurait produit environ 90 copies de chaque enregistrement jours avec une clé distinctive qui peut être utilisé pour le groupe. Donc, je ne vois pas un moyen de le faire pour plus d'une date à la fois dans une seule agrégation. Id être heureux d'avoir tort et avoir à editremove cette réponse si quelqu'un trouve un moyen de le faire, même si c'est si compliqué que ce n'est pas pratique. Une fonction de type PostgreSQL PARTITION ferait le travail ici peut-être que la fonction sera ajoutée un jour. Répondre Aug 7 14 à 17:49 alors vous devriez demander des morceaux de ceci et calculer la moyenne mobile dans une langue (ruby, python, node) ou exécuter une requête agrégée pour chaque intervalle. Est-ce vraiment la meilleure solution Doesn39t il suffit de se sentir mal, il ya une meilleure façon de le faire avec la carte-réduire que je ne peux pas penser à ndash mc. Aug 7 14 at 18:41 I haven39t pensé à la carte-réduire. En général, j'essaie d'éviter d'utiliser map-reduce car il a une pénalité de performance significative et n'est pas aussi sûr que vous exécutez le code personnalisé côté serveur. J'essaierai de réfléchir, ou peut-être quelqu'un d'autre préparera une solution mr. Ndash wdberkeley Aug 7 14 at 18:44 Je pense que je peux avoir une réponse pour ma propre question. Réduire carte le ferait. La première utilisation émettent pour mapper chaque document à ses voisins avec lequel il devrait être moyenné, puis utilisez réduire à avg chaque tableau. Et que le nouveau tableau des moyennes devrait être les moyennes mobiles tracent des heures supplémentaires puisque son id serait le nouvel intervalle de date que vous vous souciez de je suppose que j'avais besoin de comprendre la carte-réduisent mieux. Par exemple. Si nous voulions le faire en mémoire (plus tard, nous pouvons créer des collections) Est-ce que regarder rightAdd une tendance ou de la moyenne mobile de la ligne à un tableau S'applique à: Excel 2016 Word 2016 PowerPoint 2016 Excel 2013 Word 2013 Outlook 2013 PowerPoint 2013 Plus. Moins Pour afficher les tendances des données ou les moyennes mobiles dans un graphique que vous avez créé. Vous pouvez ajouter une ligne de tendance. Vous pouvez également étendre une ligne de tendance au-delà de vos données réelles pour vous aider à prédire les valeurs futures. Par exemple, la ligne de tendance linéaire suivante prévoit deux trimestres à venir et montre clairement une tendance à la hausse qui semble prometteuse pour les ventes futures. Vous pouvez ajouter une ligne de tendance à un graphique 2-D qui n'est pas empilé, y compris la zone, la barre, la colonne, la ligne, le stock, la dispersion et la bulle. Vous ne pouvez pas ajouter une ligne de tendance à un diagramme 3D, empilé, de radar, de tarte, de surface ou de beignet. Ajouter une ligne de tendance Sur votre graphique, cliquez sur la série de données à laquelle vous souhaitez ajouter une ligne de tendance ou une moyenne mobile. La ligne de tendance commencera sur le premier point de données de la série de données que vous choisissez. Cochez la case Trendline. Pour choisir un autre type de ligne de tendance, cliquez sur la flèche à côté de Trendline. Puis cliquez sur Exponentiel. Prévision linéaire. Ou moyenne mobile à deux périodes. Pour des lignes de tendance supplémentaires, cliquez sur Plus d'options. Si vous choisissez Plus d'options. Cliquez sur l'option souhaitée dans le volet Format Trendline sous Trendline Options. Si vous sélectionnez Polynomial. Entrez la puissance la plus élevée pour la variable indépendante dans la case Ordre. Si vous sélectionnez Moyenne mobile. Entrez le nombre de périodes à utiliser pour calculer la moyenne mobile dans la zone Période. Astuce: Une ligne de tendance est la plus précise lorsque sa valeur R-carré (un nombre de 0 à 1 qui révèle à quel point les valeurs estimées pour la ligne de tendance correspondent à vos données réelles) est à ou près de 1. Lorsque vous ajoutez une ligne de tendance à vos données , Excel calcule automatiquement sa valeur R-squared. Vous pouvez afficher cette valeur sur votre organigramme en cochant la case Afficher le R-carré sur la zone de graphique (fenêtre Format Trendline, Trendline Options). Vous pouvez en apprendre plus sur toutes les options de ligne de tendance dans les sections ci-dessous. Ligne de tendance linéaire Utilisez ce type de ligne de tendance pour créer une ligne droite optimale pour des ensembles de données linéaires simples. Vos données sont linéaires si le motif de ses points de données ressemble à une ligne. Une ligne de tendance linéaire indique généralement que quelque chose augmente ou diminue à un rythme régulier. Une ligne de tendance linéaire utilise cette équation pour calculer l'ajustement des moindres carrés pour une ligne: où m est la pente et b l'intercepte. La ligne de tendance linéaire suivante montre que les ventes de réfrigérateurs ont constamment augmenté au cours d'une période de 8 ans. Notez que la valeur R-squared (un nombre de 0 à 1 qui révèle comment étroitement les valeurs estimées pour la ligne de tendance correspondent à vos données réelles) est 0.9792, qui est un bon ajustement de la ligne aux données. En affichant une ligne courbe optimale, cette ligne de tendance est utile lorsque le taux de changement dans les données augmente ou diminue rapidement, puis se stabilise. Une ligne de tendance logarithmique peut utiliser des valeurs négatives et positives. Une ligne de tendance logarithmique utilise cette équation pour calculer l'ajustement des moindres carrés par points: où c et b sont des constantes et ln est la fonction logarithmique naturelle. La courbe de tendance logarithmique suivante montre la croissance démographique prédite des animaux dans une zone d'espace fixe, où la population s'est stabilisée en tant qu'espace pour les animaux a diminué. Notez que la valeur R-carré est 0.933, ce qui est un ajustement relativement bon de la ligne aux données. Cette tendance est utile lorsque vos données fluctuent. Par exemple, lorsque vous analysez les gains et les pertes sur un grand ensemble de données. L'ordre du polynôme peut être déterminé par le nombre de fluctuations des données ou par le nombre de virages (collines et vallées) apparaissant dans la courbe. Typiquement, une ligne de tendance polynomiale Ordre 2 n'a qu'une seule colline ou une seule vallée, un Ordre 3 a une ou deux collines ou vallées, et un Ordre 4 a jusqu'à trois collines ou vallées. Une ligne de tendance polynomiale ou curviligne utilise cette équation pour calculer l'ajustement des moindres carrés par points: où b et sont des constantes. La ligne de tendance polynomiale Ordre 2 (une colline) montre la relation entre la vitesse de conduite et la consommation de carburant. Notez que la valeur R-squared est 0.979, ce qui est proche de 1 donc les lignes un bon ajustement aux données. En montrant une ligne courbe, cette ligne de tendance est utile pour les ensembles de données qui comparent des mesures qui augmentent à un taux spécifique. Par exemple, l'accélération d'une voiture de course à intervalles de 1 seconde. Vous ne pouvez pas créer une ligne de tendance de puissance si vos données contiennent des valeurs nulles ou négatives. Une ligne de tendance de puissance utilise cette équation pour calculer l'ajustement des moindres carrés par points: où c et b sont des constantes. Remarque: Cette option n'est pas disponible lorsque vos données incluent des valeurs négatives ou nulles. Le diagramme de mesure de distance suivant montre la distance en mètres par seconde. La ligne de tendance de puissance démontre clairement l'accélération croissante. Notez que la valeur R-squared est 0.986, ce qui est un ajustement presque parfait de la ligne aux données. Montrant une ligne courbe, cette ligne de tendance est utile lorsque les valeurs de données augmentent ou diminuent à des taux constamment croissants. Vous ne pouvez pas créer une ligne de tendance exponentielle si vos données contiennent des valeurs nulles ou négatives. Une courbe de tendance exponentielle utilise cette équation pour calculer l'ajustement des moindres carrés par points: où c et b sont des constantes et e est la base du logarithme naturel. La ligne de tendance exponentielle suivante montre la quantité décroissante de carbone 14 dans un objet à mesure qu'elle vieillit. Notez que la valeur R-squared est 0,990, ce qui signifie que la ligne s'adapte parfaitement aux données. Moyenne mobile Cette ligne de tendance corrige les fluctuations des données pour montrer un modèle ou une tendance plus clairement. Une moyenne mobile utilise un nombre spécifique de points de données (définis par l'option Période), les met en moyenne et utilise la valeur moyenne comme un point dans la ligne. Par exemple, si Période est défini sur 2, la moyenne des deux premiers points de données est utilisée comme premier point dans la ligne de tendance moyenne mobile. La moyenne des deuxième et troisième points de données est utilisée comme deuxième point dans la ligne de tendance, etc. Une ligne de tendance moyenne mobile utilise cette équation: Le nombre de points dans une ligne de tendance moyenne mobile est égal au nombre total de points de la série, Numéro que vous spécifiez pour la période. Dans un diagramme de dispersion, la ligne de tendance est basée sur l'ordre des valeurs x dans le graphique. Pour obtenir un meilleur résultat, triez les valeurs x avant d'ajouter une moyenne mobile. La tendance suivante ligne de tendance moyenne montre un modèle dans le nombre de maisons vendues sur une période de 26 semaines. Il ya quelques temps, j'ai écrit sur le calcul de la moyenne mobile des données en direct en utilisant la méthode Buffer () dans les extensions réactive. La méthode crée un tampon de mises à jour dont la frontière vous indique, comme le développeur le spécifie, et vous fournit ce tampon courant avec chaque mise à jour ultérieure. La mise à jour 8216current8217 serait la dernière dans le tampon, ce qui vous permet de calculer la moyenne mobile inclusive, où le dernier facteur est inclus dans les résultats. Récemment, j'ai dû faire quelque chose de similaire avec les données statiques dans une application qui n'utilisait pas RX, bud avait un fournisseur de données LINQ bien défini. À ma grande surprise, j'ai trouvé que LINQ ne fournit pas une méthode de mise en tampon de la boîte. À ma plus grande surprise, j'ai trouvé qu'il était facile de mettre en œuvre un. Le code est ci-dessous. Je ne voulais pas supposer que nous ne ferions que des agrégations moyennes, donc, j'ai gardé ma solution assez générique. Ce serait à l'utilisateur de ma fonction de coder la logique d'agrégation. Dans ce post, je montrerais des agrégations moyennes, mais l'utilisateur de cette fonction serait en mesure de faire quoi que ce soit avec un ensemble donné d'éléments. Tout d'abord, let8217s définit une structure de données, appelée agrégation qui serait utilisée pour envelopper l'original et ajouter une nouvelle propriété AggregatedValue (ligne 16) que nous serions remplis pendant le processus d'agrégation. Ensuite, je définis un échantillon TimedDataPoint qui serait utilisé pour tenir les cours des actions dans mon exemple. Enfin, let8217s définit une fonction LINQ qui mettrait en tampon un ensemble d'éléments dans l'ensemble d'origine et renverrait un ensemble modifié avec moins d'éléments, chaque élément contenant une valeur d'agrégation pour l'ensemble mis en mémoire tampon. Pour réclamer le succès, j'ai besoin de tester la fonction. Pour jouer avec des nombres réels, let8217s obtenir l'historique des rendements hebdomadaires des stocks MSFT de yahoo. Let8217s exporter ces données pour exceller et créer un ensemble de moyennes mobiles de Close price pour tester nos données. Voici ce que devrait ressembler la feuille de calcul: Nous pouvons ensuite créer un exemple de dataset pour représenter les prix de clôture originaux. Nous pouvons ensuite tester notre fonction de création d'un calcul de la moyenne mobile sur l'ensemble de données. Le code est ci-dessous. Tout d'abord, je crée le dataaset, puis je iterate à travers le jeu de données, de piping les données dans ma fonction agrégateur, qui à son tour me rappelle et me demande de prendre deux décisions importantes: 1. Est-il continuer à tamponner (lignes 60 et 71) (La ligne 61 dans le premier exemple et les lignes 74-82 dans la seconde) La sortie de l'échantillon doit correspondre à la colonne de 6 jours moyenne dans la feuille de calcul jointe. J'ai trouvé cette fonction agrégateur très utile. J'espère que vous aussi.


No comments:

Post a Comment