Calculadora de erro percentual absoluto médio (MAPE)
A calculadora de erro percentual absoluto médio compara uma lista ordenada de valores observados com outra lista de previsões do mesmo tamanho e retorna a média das diferenças percentuais absolutas.
Executar grátis
O MAPE transforma erros em uma porcentagem fácil de comunicar entre previsões de escalas diferentes. Insira valores correspondentes na mesma ordem para receber a porcentagem e o número de pares avaliados. A calculadora rejeita qualquer observação igual a zero, pois o erro percentual não é definido quando o denominador é zero e poderia gerar uma métrica enganosa em relatórios ou avaliações automáticas.
Prepare valores observados e previstos alinhados
Prepare dois arrays que descrevam os mesmos eventos na mesma ordem. O primeiro valor observado deve corresponder à primeira previsão, o segundo à segunda previsão e assim por diante. Ambos precisam ter o mesmo comprimento, conter pelo menos um número finito e respeitar o limite publicado. Nenhuma observação pode ser zero, porque ela funciona como denominador. As previsões podem ser zero ou negativas quando isso fizer sentido para os dados. Não use null, strings vazias, números em texto, Infinity ou NaN; somente números JSON finitos são aceitos. Verifique também se as unidades coincidem. Comparar receita observada em reais com previsões em milhares de reais torna o resultado inválido. Envie os arrays nos campos observed e predicted. A resposta apresenta mape como porcentagem e count como quantidade de pares avaliados, permitindo que você confira a cobertura do cálculo.
Entenda como a porcentagem é calculada
Para cada par, a calculadora subtrai a previsão do valor observado, toma o valor absoluto da diferença e divide pelo valor observado conforme a expressão padrão do erro percentual absoluto. Em seguida, calcula a média dessas razões e multiplica o resultado por 100. Assim, um mape de 8.5 indica que as previsões diferem das observações em 8.5 por cento, em média, sem mostrar se cada previsão ficou acima ou abaixo. O valor absoluto impede que desvios positivos e negativos se anulem. Todos os pares têm o mesmo peso, independentemente de sua magnitude; por isso, uma observação pequena pode produzir um erro percentual muito grande. A implementação usa aritmética determinística de ponto flutuante e não arredonda. Você pode definir a precisão adequada em sua interface ou relatório. O campo count confirma quantos pares entraram no cálculo.
Interprete o MAPE com cuidado
O MAPE é mais útil quando as observações são diferentes de zero, compartilham uma escala de razão significativa e diferenças percentuais respondem à pergunta analisada. Ele é comum em previsões de demanda, tráfego, vendas e estoque. Compare resultados apenas entre conjuntos preparados de forma consistente, pois mudar o período ou a combinação de produtos pode alterar bastante a métrica. Tenha atenção especial a observações próximas de zero: um erro absoluto modesto pode dominar a média. Valores negativos são aceitos matematicamente, mas a interpretação percentual pode ser pouco intuitiva. O MAPE também não revela viés, padrões temporais nem a distribuição dos erros. Combine-o com uma métrica com sinal quando a superestimação sistemática importar, ou considere MAE, RMSE, WAPE ou uma medida específica quando zeros forem comuns. Para automação, a API custa US$ 0,002 por solicitação e rejeita entradas inválidas explicitamente.
Casos de uso
Avaliar previsões de demanda
Compare a demanda semanal prevista com vendas observadas diferentes de zero e comunique o erro médio em porcentagem.
Monitorar versões de modelos
Calcule a mesma métrica para modelos candidatos e acompanhe a evolução da precisão percentual.
Verificar estimativas de planejamento
Meça quanto estimativas de orçamento, tráfego ou capacidade se aproximaram dos valores finais.
Perguntas frequentes
O que significa o valor MAPE retornado?
É o erro percentual absoluto médio expresso em porcentagem. Um valor de 7 representa um erro absoluto médio de 7 por cento.
Por que observações iguais a zero são rejeitadas?
Cada erro percentual divide pelo valor observado. A divisão por zero é indefinida, então toda a entrada é rejeitada.
Os dois arrays precisam ter o mesmo comprimento?
Sim. Cada observação precisa de exatamente uma previsão correspondente; comprimentos diferentes são inválidos.
A calculadora arredonda o resultado?
Não. Ela retorna o resultado determinístico de ponto flutuante para que você escolha a precisão adequada.
Os valores observados podem ser negativos?
Sim, valores negativos finitos são aceitos, embora o MAPE possa ser mais difícil de interpretar quando o sinal tem significado próprio.
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/stat/mape-error \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"observed":[100,200,50,400],"predicted":[110,190,55,360]}'const res = await fetch("https://api.kit.forhosting.com/stat/mape-error", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"observed": [
100,
200,
50,
400
],
"predicted": [
110,
190,
55,
360
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/stat/mape-error",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"observed": [
100,
200,
50,
400
],
"predicted": [
110,
190,
55,
360
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/stat/mape-error", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"observed":[100,200,50,400],"predicted":[110,190,55,360]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"observed":[100,200,50,400],"predicted":[110,190,55,360]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/stat/mape-error", 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
{
"observed": [
100,
200,
50,
400
],
"predicted": [
110,
190,
55,
360
]
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "stat.mape_error",
"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. |