Calculateur de moyenne mobile pondérée
Lissez une série ordonnée avec un motif de poids glissant : avec les poids 1, 2 et 1, chaque fenêtre couvre 3 valeurs, celle du milieu compte double et la somme est divisée par 4. Une série de 5 valeurs donne 3 moyennes. Gratuit dans votre navigateur.
- Gratuit
- Fonctionne dans votre navigateur
- Sans inscription
- Vos données restent sur votre appareil
Lancer gratuitement
Exemple résolu
- Série
- 10, 20, 30, 40, 50
- Poids
- 1, 2, 1
- Moyenne mobile pondérée
- 20, 30, 40
- Taille de la fenêtre
- 3
- Fenêtres
- 3
- Somme des poids
- 4
Une moyenne mobile pondérée lisse une série ordonnée tout en donnant davantage d’importance à certaines positions de chaque fenêtre. Fournissez les observations et un tableau de poids fixe : le calculateur déplace ce motif du début à la fin de la série. Il renvoie une moyenne pondérée pour chaque fenêtre complète, ainsi que la taille et le nombre de fenêtres et la somme des poids. Le calcul est déterministe, valide chaque nombre et refuse clairement les poids vides ou plus longs que la série disponible.
Fonctionnement d’une moyenne mobile pondérée
Une moyenne mobile transforme une longue série ordonnée en une séquence plus courte et plus régulière en évaluant des fenêtres consécutives. Dans ce calculateur, la longueur du tableau de poids définit aussi celle de la fenêtre. Pour chaque fenêtre complète, la première observation est multipliée par le premier poids, la deuxième par le deuxième, et ainsi de suite.
Ces produits sont additionnés, puis divisés par la somme de tous les poids. Le même motif avance ensuite d’une observation et le calcul recommence. Une série de cinq observations avec trois poids produit donc trois résultats : un pour les positions un à trois, un autre pour les positions deux à quatre, puis un dernier pour les positions trois à cinq.
Cet alignement compte, car les poids dépendent de la position. Les poids un, deux et trois privilégient la valeur la plus récente si la série va de la plus ancienne à la plus récente ; trois, deux et un privilégient la plus ancienne. Des poids égaux donnent une moyenne mobile simple de même longueur.
Seules les fenêtres complètes sont renvoyées : aucun remplissage n’est inventé, aucune valeur de bord n’est répétée et aucun résultat partiel n’est produit aux extrémités.
Préparer les données et comprendre le résultat
La série doit conserver l’ordre des observations, car toute modification change chaque fenêtre. Le tableau de poids doit contenir au moins un nombre fini et ne peut pas être plus long que la série. Son total ne doit pas être nul puisque la somme pondérée est divisée par ce total.
Les poids individuels négatifs ou nuls sont acceptés comme coefficients mathématiques, même si la plupart des usages de lissage emploient des poids positifs ou nuls. Le premier élément correspond à la première fenêtre complète et chaque élément suivant avance d’une position exactement. Le nombre de moyennes vaut exactement la longueur de la série moins celle des poids, plus un.
Les calculs utilisent l’arithmétique numérique standard de JavaScript ; appliquez vos propres règles d’arrondi si votre domaine impose une comptabilité décimale particulière.
Choisir les poids et obtenir des résultats fiables
Choisissez les poids pour exprimer l’influence souhaitée de chaque position, et non simplement pour obtenir une somme égale à un. Le calculateur divise toujours par leur somme : des tableaux proportionnels comme un, deux, un et dix, vingt, dix donnent donc les mêmes moyennes. Pour favoriser les valeurs récentes dans une série classée de la plus ancienne à la plus récente, les poids augmentent généralement vers la droite.
Pour un lissage centré, des poids symétriques peuvent accentuer le milieu de la fenêtre. Une fenêtre courte réagit rapidement, tandis qu’une fenêtre longue atténue davantage les variations temporaires. Avant de comparer le résultat à celui d’un autre logiciel, vérifiez ses conventions : certains inversent les poids, exigent leur normalisation préalable ou complètent les bords.
Cette capacité applique les poids exactement de gauche à droite et ne renvoie que les fenêtres complètes.
Cas d’usage
Lisser les mesures récentes de capteurs
Appliquez un motif court favorisant les données récentes afin de réduire le bruit tout en conservant les changements de température, de charge ou d’autres mesures ordonnées.
Suivre les tendances opérationnelles
Transformez la demande quotidienne, le volume de tickets ou le débit en indicateur glissant stable pour vos tableaux de bord et alertes.
Enseigner les statistiques par fenêtres
Montrez comment la taille de fenêtre, la pondération par position et la normalisation modifient une séquence par rapport à une moyenne mobile simple.
Questions fréquentes
Combien de résultats vais-je recevoir ?
La sortie contient la longueur de la série moins la longueur des poids, plus un, car seules les fenêtres complètes sont calculées.
Le premier ou le dernier poids correspond-il à la valeur la plus récente ?
Les poids s’appliquent de gauche à droite. Si la série va de l’observation la plus ancienne à la plus récente, le dernier poids correspond à la plus récente de chaque fenêtre.
Les poids doivent-ils totaliser un ?
Non. Le calculateur divise chaque somme pondérée par le poids total ; tout tableau proportionnel dont la somme est non nulle produit donc le même résultat normalisé.
Que se passe-t-il au début et à la fin de la série ?
Rien n'est complété ni deviné. Seules les fenêtres entières sont moyennées : le premier résultat correspond à la première fenêtre pleine, sans moyenne partielle aux extrémités.
Avec des poids égaux, est-ce une moyenne mobile simple ?
Oui. Si tous les poids sont identiques, chaque fenêtre donne la moyenne simple de ses valeurs, soit une moyenne mobile simple de même longueur de fenêtre.
Outils associés
Pour les développeurs — accès API
Tout sur cette page est disponible par programmation. Cette section s'adresse aux équipes qui veulent l'intégrer à leurs systèmes ; les autres peuvent simplement utiliser l'outil ci-dessus.
Endpoint
Authentification par jeton Bearer : un seul POST met la tâche en file d’attente, et le résultat vous parvient par webhook ou lien signé.
Appeler depuis votre stack
curl -X POST https://api.kit.forhosting.com/stat/weighted-moving-average \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"series":[10,20,30,40,50],"weights":[1,2,1]}'const res = await fetch("https://api.kit.forhosting.com/stat/weighted-moving-average", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"series": [
10,
20,
30,
40,
50
],
"weights": [
1,
2,
1
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/stat/weighted-moving-average",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"series": [
10,
20,
30,
40,
50
],
"weights": [
1,
2,
1
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/stat/weighted-moving-average", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"series":[10,20,30,40,50],"weights":[1,2,1]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"series":[10,20,30,40,50],"weights":[1,2,1]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/stat/weighted-moving-average", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemple de requête
{
"series": [
10,
20,
30,
40,
50
],
"weights": [
1,
2,
1
]
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "stat.weighted_moving_average",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L’API est asynchrone : chaque appel renvoie un task_id immédiatement, puis vous interrogez l’état à raison d’une requête par seconde.
Tarifs
Le prix est publié, sans tokens ni crédits. Une tâche qui échoue n’est pas facturée.
Limites
max_series_items | 100000 |
max_weights | 10000 |
max_operations | 10000000 |
Erreurs
| HTTP | Code | Signification |
|---|---|---|
401 | unauthorized | Clé API absente ou invalide : vérifiez l’en-tête Authorization. |
402 | insufficient_balance | Solde insuffisant : rechargez votre compte pour lancer cette tâche. |
404 | unknown_type | Type de tâche inconnu : vérifiez le champ type de votre requête. |
429 | rate_limited | Trop de requêtes : ralentissez la cadence, puis réessayez. |
Notes techniques
Préparer les données et comprendre le résultat
Envoyez deux tableaux nommés series et weights. Chaque élément est validé comme nombre JSON fini ; les tableaux absents, chaînes, valeurs nulles, valeurs assimilables à NaN et infinis sont refusés sans conversion silencieuse. Le champ weighted_moving_average présente les résultats dans l’ordre chronologique des fenêtres. La réponse fournit aussi window_size, windows et weight_sum afin que vous puissiez contrôler l’alignement et la normalisation.
Choisir les poids et obtenir des résultats fiables
Elle s’exécute localement dans l’outil gratuit du navigateur et emploie le même calcul pur via l’API, où chaque élément réussi coûte $0.002. Aucun service réseau, modèle, horloge ni source aléatoire n’intervient ; un JSON identique reste donc reproductible dans les tests, tableaux de bord, supports pédagogiques et chaînes analytiques.
Questions techniques
Quelle formule est appliquée à chaque fenêtre ?
Chaque résultat est la somme de series[start + i] multiplié par weights[i], divisée par la somme des poids.
Quelles données provoquent une erreur ?
Les tableaux absents ou vides, nombres non finis, poids plus longs que la série, somme des poids nulle et calculs dépassant les limites publiées renvoient invalid_input.
Quel est le coût de l’API ?
Chaque requête API réussie coûte $0.002. Le calculateur du navigateur fonctionne gratuitement sur votre appareil.