Calculadora de media móvil climática
Un registro climático suele combinar una señal de largo plazo con variaciones ruidosas entre años o meses.
Ejecutar — gratis
Esta calculadora aplica una media móvil centrada para que cada valor admisible represente igual número de observaciones anteriores y posteriores. Introduzca una serie numérica ordenada y una ventana impar; recibirá las medias de las ventanas completas y sus índices de alineación. El cálculo es determinista, no usa la red y rechaza ventanas más largas que la serie.
Elija una ventana adecuada para la pregunta climática
Una media móvil resulta útil solo cuando su ventana refleja la escala temporal que usted desea estudiar. Con observaciones anuales, una ventana de tres años atenúa años cálidos o fríos aislados y conserva cambios relativamente breves; una de once años destaca variaciones más amplias y elimina mucho más ruido interanual. Con datos mensuales, trece puntos abarcan aproximadamente un año y mantienen un único mes central. La calculadora exige una ventana impar porque cada resultado debe alinearse con una observación real situada en el centro. Introduzca los datos en orden cronológico y mantenga constante el intervalo de muestreo. No mezcle valores mensuales y anuales ni fechas irregulares sin remuestrear antes el registro sobre una escala regular. Cada posición recibe el mismo espaciado y peso. La herramienta no distingue temperatura, precipitación, nivel del mar, anomalías ni otros indicadores; conserve la unidad original junto con el resultado. Una ventana mayor suaviza más, pero elimina estructura de corto plazo y produce menos valores. Elíjala según el objetivo científico, no solo por el aspecto de la curva.
Comprenda el centrado, los extremos y los índices
En una ventana impar de anchura w, cada media incluye la observación central y el mismo número de observaciones a ambos lados. Por ello, una ventana de cinco puntos centrada en el índice de entrada 6 promedia los índices 4 a 8. Los extremos de la serie no admiten una ventana centrada completa porque faltan datos en uno de los lados. En vez de rellenarlos, repetir valores extremos o reducir la ventana sin avisar, la calculadora omite esas posiciones incompletas. La respuesta incluye half_window, first_center_index y last_center_index para que usted alinee con precisión cada media con el registro original. Todos los índices comienzan en cero. El primer elemento de smoothed_values corresponde a first_center_index; los siguientes avanzan una posición, hasta last_center_index. La cantidad de resultados equivale a la longitud de entrada menos la ventana más uno. Si ambas longitudes coinciden, se devuelve una sola media centrada. Con ventana uno, los valores se conservan. Si la ventana supera la serie, la solicitud falla en lugar de entregar un cálculo parcial o ambiguo.
Interprete responsablemente la serie suavizada
El suavizado ayuda a revelar estructura, pero no crea evidencia nueva ni demuestra por sí solo una tendencia. Una media centrada combina observaciones vecinas, reduce la magnitud aparente de extremos aislados y hace que los resultados contiguos sean estadísticamente dependientes porque sus ventanas se solapan. Conserve la serie sin suavizar al comunicar resultados, indique la longitud de la ventana y el intervalo de muestreo, y no compare curvas obtenidas con ventanas distintas como si fueran mediciones equivalentes. Los datos ausentes deben resolverse antes del cálculo. La entrada solo admite números finitos, por lo que una laguna no puede representarse con null, NaN o infinito. Decida si corresponde interpolarla, mantener una interrupción o aplicar un método específico para registros incompletos, y documente esa decisión fuera de la herramienta. Considere además si conviene asignar el mismo peso a todas las observaciones. Esta capacidad calcula una media aritmética simple; no aplica pesos gaussianos, ajuste estacional, ponderación espacial, propagación de incertidumbre ni resistencia robusta a valores atípicos. Es apropiada para gráficos exploratorios y preprocesamiento reproducible. Para atribución climática formal, conserve también el registro original, sus metadatos, incertidumbres y análisis estadístico especializado.
Qué puede hacer con ella
Suavizar anomalías térmicas anuales
Reduzca la variación aislada entre años y mantenga cada media alineada con el año central.
Preparar una serie para un panel climático
Genere una curva reproducible e índices de alineación explícitos para representarla junto a los datos originales.
Comparar ventanas de suavizado
Calcule por separado varias ventanas impares para observar qué escalas temporales permanecen visibles.
Preguntas frecuentes
¿Por qué la ventana debe ser impar?
Una ventana impar tiene una sola observación central y el mismo número de valores antes y después.
¿Qué ocurre en los extremos de la serie?
Se omiten las posiciones sin una ventana centrada completa. Los índices devueltos indican cómo alinear los resultados.
¿Qué ocurre si la ventana es más larga que la serie?
La calculadora devuelve un error de entrada no válida porque no puede formarse ninguna ventana completa.
¿Puede contener valores ausentes la serie?
No. Cada observación debe ser un número finito. Trate o documente los datos ausentes antes de calcular.
¿Calcula una media móvil ponderada?
No. Todas las observaciones de una ventana tienen el mismo peso en una media aritmética simple.
¿Cuánto cuesta la solicitud a la API?
El precio de la API es $0.002 por solicitud. El cálculo en el navegador no requiere procesamiento en red.
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/earth/climate-moving-average \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"values":[12.1,12.8,11.9,13.2,14,13.7,14.5],"window":3}'const res = await fetch("https://api.kit.forhosting.com/earth/climate-moving-average", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"values": [
12.1,
12.8,
11.9,
13.2,
14,
13.7,
14.5
],
"window": 3
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/earth/climate-moving-average",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"values": [
12.1,
12.8,
11.9,
13.2,
14,
13.7,
14.5
],
"window": 3
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/earth/climate-moving-average", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"values":[12.1,12.8,11.9,13.2,14,13.7,14.5],"window":3}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"values":[12.1,12.8,11.9,13.2,14,13.7,14.5],"window":3}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/earth/climate-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
{
"values": [
12.1,
12.8,
11.9,
13.2,
14,
13.7,
14.5
],
"window": 3
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "earth.climate_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_items | 100000 |
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. |