Calculadora de média móvel climática
Um registro climático costuma combinar um sinal de longo prazo com variações ruidosas entre anos ou meses.
Executar grátis
Esta calculadora aplica uma média móvel centrada para que cada valor elegível represente o mesmo número de observações anteriores e posteriores. Informe uma série numérica ordenada e uma janela ímpar para receber as médias das janelas completas e os índices de alinhamento. O cálculo é determinístico, não acessa a rede e rejeita janelas maiores que a série.
Escolha uma janela compatível com a questão climática
Uma média móvel só é útil quando a janela reflete a escala temporal que você pretende analisar. Em observações anuais, uma janela de três anos atenua anos quentes ou frios isolados e preserva mudanças relativamente curtas; uma janela de onze anos realça variações mais amplas e elimina muito mais ruído interanual. Em observações mensais, treze pontos cobrem aproximadamente um ano e mantêm um único mês central. A calculadora exige uma janela ímpar porque cada resultado precisa se alinhar a uma observação real no centro. Insira os valores em ordem cronológica e mantenha constante o intervalo de amostragem. Não misture dados mensais e anuais nem use datas irregulares sem antes reamostrar o registro em uma linha do tempo regular. Todas as posições são tratadas como igualmente espaçadas e ponderadas. A ferramenta não identifica se os números representam temperatura, precipitação, nível do mar, anomalias ou outro indicador; preserve a unidade original junto do resultado. Uma janela maior produz uma curva mais suave, mas remove mais estrutura de curto prazo e gera menos valores. Escolha-a conforme o objetivo científico, não apenas pela aparência da curva.
Entenda a centralização, as bordas e os índices
Em uma janela ímpar de largura w, cada média usa a observação central e a mesma quantidade de observações dos dois lados. Assim, uma janela de cinco pontos no índice de entrada 6 calcula a média dos índices 4 a 8. As extremidades da série não comportam uma janela centrada completa porque faltam observações de um lado. Em vez de preencher as bordas, repetir valores extremos ou reduzir silenciosamente a janela, a calculadora omite essas posições incompletas. A resposta informa half_window, first_center_index e last_center_index para que você alinhe cada média ao registro original com precisão. Todos os índices começam em zero. O primeiro item de smoothed_values pertence a first_center_index; cada item seguinte avança uma posição até last_center_index. A quantidade de resultados é o tamanho da entrada menos a janela mais um. Quando a janela abrange toda a série, há um único resultado central. Com janela um, todos os valores permanecem inalterados. Se a janela superar as observações disponíveis, a solicitação falha em vez de retornar um cálculo parcial ou ambíguo.
Interprete a série suavizada com responsabilidade
A suavização ajuda a revelar estruturas, mas não cria novas evidências nem estabelece sozinha uma tendência. Uma média centrada combina observações vizinhas, reduz a dimensão aparente de extremos isolados e torna resultados adjacentes estatisticamente dependentes, pois suas janelas se sobrepõem. Preserve a série original ao divulgar resultados, informe a largura da janela e o intervalo de amostragem e evite comparar suavizações de janelas diferentes como se fossem medições equivalentes. Dados ausentes exigem tratamento antes do cálculo. A entrada aceita somente números finitos; portanto, lacunas não podem ser representadas por null, NaN ou infinito. Decida se uma lacuna deve ser interpolada, mantida como interrupção ou tratada por um método próprio para registros incompletos, e documente a escolha fora desta ferramenta. Avalie também se pesos iguais são adequados. Esta capacidade calcula uma média aritmética simples; não aplica pesos gaussianos, ajuste sazonal, ponderação espacial, propagação de incerteza nem resistência robusta a valores atípicos. Ela é indicada para gráficos exploratórios, pré-processamento reproduzível e resumos transparentes. Em atribuição ou inferência climática formal, mantenha também o registro original, os metadados, as incertezas e a análise estatística especializada.
Casos de uso
Suavizar anomalias anuais de temperatura
Reduza variações isoladas entre anos e mantenha cada média alinhada ao ano central.
Preparar uma série para painel climático
Gere uma curva reproduzível e índices explícitos para plotá-la ao lado das observações originais.
Comparar janelas de suavização
Calcule várias janelas ímpares separadamente para verificar quais escalas temporais permanecem visíveis.
Perguntas frequentes
Por que a janela precisa ser ímpar?
Uma janela ímpar tem uma única observação central e a mesma quantidade de valores antes e depois dela.
O que acontece nas extremidades da série?
As posições sem uma janela centrada completa são omitidas. Os índices retornados indicam o alinhamento dos resultados.
E se a janela for maior que a série?
A calculadora retorna um erro de entrada inválida porque nenhuma janela completa pode ser formada.
A série pode conter valores ausentes?
Não. Toda observação deve ser um número finito. Trate ou documente os dados ausentes antes do cálculo.
A ferramenta calcula uma média móvel ponderada?
Não. Todas as observações da janela recebem o mesmo peso em uma média aritmética simples.
Quanto custa a solicitação à API?
O preço da API é US$ 0,002 por solicitação. O cálculo no navegador não requer processamento pela rede.
Para desenvolvedores — acesso via API
Tudo nesta página está disponível via API. Esta seção é para equipes que querem integrar a ferramenta aos próprios sistemas; quem não precisa disso pode simplesmente usar a ferramenta acima.
Endpoint
Autenticação por token Bearer. Um único POST coloca a tarefa na fila; o resultado chega por webhook ou link assinado.
Chame do seu código
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)Exemplo de requisição
{
"values": [
12.1,
12.8,
11.9,
13.2,
14,
13.7,
14.5
],
"window": 3
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "earth.climate_moving_average",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}A API é assíncrona: cada chamada devolve um task_id na hora. Se preferir polling, consulte o status a até 1 requisição por segundo.
Preço
Preço publicado, sem tokens nem créditos escondidos. Tarefa que falha não é cobrada.
Limites
max_items | 100000 |
Erros
| HTTP | Código | O que significa |
|---|---|---|
401 | unauthorized | Token ausente ou inválido. Confira o header Authorization. |
402 | insufficient_balance | Saldo insuficiente para esta tarefa. Faça uma recarga e tente de novo. |
404 | unknown_type | Esse tipo de tarefa não existe. Confira o campo type no catálogo. |
429 | rate_limited | Muitas requisições em pouco tempo. Espere um instante e tente de novo. |