Calculadora de media móvil ponderada
Suavice una serie ordenada con un patrón de pesos que se desliza: con pesos 1, 2 y 1, cada ventana abarca 3 valores, el central cuenta doble y la suma se divide entre 4. Una serie de 5 valores da 3 medias. Gratis en su navegador.
- Gratis
- Funciona en su navegador
- Sin registro
- Sus datos no salen de su equipo
Ejecutar — gratis
Ejemplo resuelto
- Serie
- 10, 20, 30, 40, 50
- Pesos
- 1, 2, 1
- Media móvil ponderada
- 20, 30, 40
- Tamaño de ventana
- 3
- Ventanas
- 3
- Suma de pesos
- 4
Una media móvil ponderada suaviza una serie ordenada y permite que determinadas posiciones de cada ventana tengan más importancia. Proporcione las observaciones y un único conjunto fijo de pesos; la calculadora desplazará ese patrón desde el principio hasta el final de la serie. Obtendrá una media ponderada por cada ventana completa, además del tamaño y número de ventanas y la suma de pesos. El cálculo es determinista, valida cada cifra y rechaza claramente los pesos vacíos o más largos que la serie disponible.
Cómo funciona una media móvil ponderada
Una media móvil transforma una serie ordenada extensa en una secuencia más corta y suave mediante la evaluación de ventanas consecutivas. En esta calculadora, la longitud del conjunto de pesos también determina la longitud de la ventana. En cada ventana completa, la primera observación se multiplica por el primer peso, la segunda por el segundo y así sucesivamente.
Se suman esos productos y el resultado se divide entre la suma de todos los pesos. Después, el mismo patrón avanza una observación y se repite el cálculo. Una serie de cinco observaciones y tres pesos genera, por tanto, tres resultados: uno para las posiciones uno a tres, otro para las posiciones dos a cuatro y el último para las posiciones tres a cinco.
Esta alineación importa porque los pesos dependen de la posición. Los pesos uno, dos y tres destacan el valor más reciente cuando los datos van del más antiguo al más nuevo; tres, dos y uno destacan el más antiguo. Con pesos iguales, el método se convierte en una media móvil simple del mismo tamaño.
Solo se devuelven ventanas completas: no se añaden datos de relleno, no se repiten valores extremos ni se producen resultados parciales en los bordes.
Preparación de los datos e interpretación del resultado
La serie debe conservar el orden de las observaciones, porque cualquier cambio altera todas las ventanas. Los pesos deben contener al menos un número finito y no pueden superar la longitud de la serie. Su suma tampoco puede ser cero, ya que actúa como divisor de la suma ponderada.
Se admiten pesos individuales negativos o nulos como coeficientes matemáticos, aunque la mayoría de las aplicaciones de suavizado emplean pesos no negativos. El primer elemento corresponde a la primera ventana completa y cada elemento posterior avanza exactamente una posición. El número de medias es exactamente la longitud de la serie menos la longitud de los pesos más uno.
El cálculo usa números estándar de JavaScript; si su ámbito exige reglas contables decimales, redondee el resultado conforme a su propia política.
Elección de pesos y uso fiable
Elija los pesos según la influencia que deba tener cada posición, no solo para que sumen uno. La calculadora siempre divide entre su suma, por lo que conjuntos proporcionales como uno, dos, uno y diez, veinte, diez producen las mismas medias. Para destacar datos recientes en una serie ordenada de antiguo a nuevo, los pesos suelen crecer hacia la derecha.
Para un suavizado centrado, un patrón simétrico puede dar mayor influencia al centro. Utilice una ventana breve si necesita reaccionar rápidamente y una más larga si es prioritario suprimir variaciones pasajeras. Antes de comparar el resultado con otra biblioteca, revise sus convenciones: algunas invierten los pesos, exigen normalización previa o rellenan los bordes.
Esta capacidad aplica los pesos exactamente de izquierda a derecha y solo entrega ventanas completas.
Qué puede hacer con ella
Suavizar lecturas recientes de sensores
Aplique un patrón corto que favorezca los datos recientes para reducir el ruido sin ocultar cambios de temperatura, carga u otras mediciones ordenadas.
Seguir tendencias operativas
Convierta la demanda diaria, el volumen de incidencias o el rendimiento en un indicador deslizante estable para paneles y alertas.
Enseñar estadística por ventanas
Muestre cómo el tamaño de ventana, los pesos posicionales y la normalización modifican una secuencia frente a una media móvil simple.
Preguntas frecuentes
¿Cuántos resultados recibiré?
La salida contiene la longitud de la serie menos la longitud de los pesos más uno, porque solo se calculan ventanas completas.
¿El primer o el último peso corresponde al dato más reciente?
Los pesos se aplican de izquierda a derecha. Si la serie va del dato más antiguo al más nuevo, el último peso corresponde al más reciente de cada ventana.
¿Deben sumar uno los pesos?
No. La calculadora divide cada suma ponderada entre el peso total, por lo que cualquier conjunto proporcional no nulo produce el mismo resultado normalizado.
¿Qué pasa al principio y al final de la serie?
No se rellena ni se inventa nada. Solo se promedian ventanas completas, así que el primer resultado corresponde a la primera ventana entera y no aparecen medias parciales en los extremos.
¿Con pesos iguales es lo mismo que una media móvil simple?
Sí. Si todos los pesos valen lo mismo, cada ventana da la media simple de sus valores, es decir, una media móvil simple con ese mismo tamaño de ventana.
Herramientas relacionadas
Para desarrolladores — acceso por API
Todo lo de esta página está disponible por programación. Esta sección es para equipos que quieren integrarlo en sus sistemas; el resto puede usar la herramienta de arriba sin más.
Endpoint de API
¿Prefiere automatizarlo? Un POST autenticado crea la tarea; el resultado llega por webhook o enlace firmado. La misma capacidad también se ejecuta aquí en la web, por email y desde Telegram — y pronto también desde nuestra app.
Llámela desde su 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)Ejemplo de solicitud
{
"series": [
10,
20,
30,
40,
50
],
"weights": [
1,
2,
1
]
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "stat.weighted_moving_average",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}La API es asíncrona: la llamada devuelve un task_id al instante y el resultado llega por webhook. El polling está limitado a 1 req/s por tarea.
Precio
Precio publicado — sin tokens ni créditos inventados. Una tarea fallida no se cobra.
Límites
max_series_items | 100000 |
max_weights | 10000 |
max_operations | 10000000 |
Errores
| HTTP | Código | Significado |
|---|---|---|
401 | unauthorized | API key ausente o inválida. |
402 | insufficient_balance | El saldo no cubre el precio de la tarea. |
404 | unknown_type | El tipo de tarea no existe. |
429 | rate_limited | Demasiadas peticiones. Use el webhook en vez de sondear. |
Notas técnicas
Preparación de los datos e interpretación del resultado
Envíe dos matrices llamadas series y weights. Cada elemento se valida como número JSON finito; las matrices ausentes, cadenas, valores nulos, representaciones de NaN e infinitos se rechazan sin conversión silenciosa. El campo weighted_moving_average contiene los resultados en el orden temporal de las ventanas. La respuesta incluye además window_size, windows y weight_sum, de modo que usted pueda verificar la alineación y la normalización.
Elección de pesos y uso fiable
Funciona localmente en la experiencia gratuita del navegador y usa el mismo cálculo puro mediante la API, donde cada elemento correcto cuesta $0.002. No intervienen servicios de red, modelos, relojes ni fuentes aleatorias, por lo que una entrada JSON idéntica siempre es reproducible en pruebas, paneles, materiales didácticos y procesos analíticos.
Preguntas técnicas
¿Qué fórmula se utiliza en cada ventana?
Cada resultado es la suma de series[start + i] multiplicado por weights[i], dividida entre la suma de los pesos.
¿Qué datos provocan un error?
Las matrices ausentes o vacías, los números no finitos, más pesos que observaciones, una suma de pesos cero y los cálculos que superen los límites publicados devuelven invalid_input.
¿Cuánto cuesta la API?
Cada solicitud correcta a la API cuesta $0.002. La calculadora del navegador se ejecuta gratis en su dispositivo.