Árvore de probabilidade em duas etapas
Uma árvore de probabilidade em duas etapas transforma uma sequência de eventos incertos em uma lista completa de resultados.
Executar grátis
Informe as probabilidades da primeira etapa e, em seguida, as probabilidades condicionais de cada ramo da segunda etapa sob cada resultado inicial. A calculadora multiplica os valores ao longo de cada caminho para encontrar a probabilidade de cada folha e valida a estrutura antes de responder. Se os ramos iniciais ou qualquer conjunto condicional não somarem um, a solicitação falhará com uma mensagem clara, em vez de apresentar uma distribuição enganosa.
Descreva a primeira etapa e seus ramos condicionais
Comece relacionando todos os resultados mutuamente exclusivos que podem ocorrer na primeira etapa. Dê a cada resultado um rótulo distinto e uma probabilidade entre zero e um. Essas probabilidades devem somar um, pois juntas representam todas as maneiras possíveis de o processo começar. Depois, adicione os resultados da segunda etapa como linhas condicionais. Cada linha identifica o ramo inicial correspondente, nomeia o resultado seguinte e informa a probabilidade desse resultado dado o anterior. O rótulo do ramo inicial deve corresponder exatamente a um rótulo da primeira etapa. Os rótulos seguintes precisam ser únicos apenas dentro do próprio ramo; portanto, um nome como “sucesso” pode aparecer abaixo de vários ramos iniciais. Inclua ao menos uma linha seguinte para cada ramo inicial. As probabilidades condicionais abaixo de cada ramo também devem somar um. Esse formato tabular facilita inserir, revisar, armazenar ou gerar uma árvore maior em outro aplicativo sem esconder as relações em um JSON aninhado escrito manualmente.
Entenda o cálculo da probabilidade de cada folha
Cada linha retornada representa um caminho completo que sai da raiz, passa pela primeira etapa e chega à segunda. A probabilidade é o produto da probabilidade inicial pela probabilidade condicional correspondente. Por exemplo, se chover tem probabilidade 0.30 e atrasar dado que chove tem probabilidade 0.40, o caminho chuva e depois atraso tem probabilidade 0.12. Essa multiplicação é a regra do produto padrão para um evento conjunto expresso por probabilidade condicional. O resultado mantém os dois fatores ao lado do valor calculado, tornando a conta transparente e adequada para conferência, ensino, planilhas ou código posterior. Ele também informa o número de folhas e a soma de todas as probabilidades. Árvores completas válidas têm probabilidade total igual a um, exceto por pequenos efeitos da representação de ponto flutuante. A calculadora não presume independência entre as etapas; os conjuntos condicionais separados existem justamente para representar essa dependência.
Identifique árvores incompletas antes de usar os resultados
Uma árvore de probabilidade pode parecer plausível mesmo quando omite um resultado ou conta resultados sobrepostos duas vezes. Por isso, a calculadora valida a massa de probabilidade em cada ponto de ramificação. Ela rejeita uma primeira etapa cujas probabilidades não somem um e verifica separadamente o conjunto condicional sob cada ramo inicial. Também rejeita conjuntos condicionais ausentes, referências a ramos desconhecidos, rótulos iniciais duplicados, rótulos seguintes repetidos dentro do mesmo ramo, valores não numéricos ou não finitos e probabilidades fora do intervalo de zero a um. Uma pequena tolerância numérica aceita efeitos normais da representação em ponto flutuante, mas não admite uma distribuição materialmente incompleta. Use a saída quando precisar de probabilidades de folhas, e não de resultados simulados: o cálculo é exato para os números fornecidos e não usa amostragem aleatória. O mesmo solucionador determinístico atende todas as solicitações, então uma entrada válida idêntica produz uma saída idêntica. A automação via API está disponível por US$ 0,002 por solicitação.
Casos de uso
Mapear resultados diagnósticos
Combine a probabilidade inicial de uma condição com resultados positivos e negativos condicionais para listar todos os caminhos.
Planejar cenários operacionais
Calcule probabilidades finais de entrega, demanda, equipe ou clima quando a segunda etapa depende da primeira.
Conferir exercícios de probabilidade
Verifique a multiplicação ao longo dos ramos e encontre conjuntos incompletos antes de comparar uma solução.
Perguntas frequentes
O que é a probabilidade de um caminho até uma folha?
É a probabilidade conjunta de seguir um ramo inicial e depois um de seus ramos condicionais seguintes.
Por que cada conjunto de ramos deve somar um?
Cada conjunto deve representar todos os resultados mutuamente exclusivos disponíveis naquele ponto. Outro total indica probabilidades ausentes, sobrepostas ou incorretas.
Como a probabilidade de um caminho é calculada?
A calculadora multiplica a probabilidade inicial pela probabilidade seguinte condicionada ao resultado inicial.
O mesmo rótulo seguinte pode aparecer sob pais diferentes?
Sim. Ele deve ser único dentro de um ramo inicial, mas o mesmo nome pode fazer sentido sob vários ramos.
Esta calculadora simula tentativas aleatórias?
Não. Ela calcula de modo determinístico produtos exatos com as probabilidades fornecidas, sem amostragem nem estimativa por simulação.
Quanto custa uma solicitação de API?
Cada solicitação de API custa US$ 0,002. Não há cobrança adicional por ramo.
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/probability-tree-two-stage \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"first_stage":[{"label":"Rain","probability":0.3},{"label":"Dry","probability":0.7}],"conditional_second_stage":[{"first_stage":"Rain","label":"Late","probability":0.4},{"first_stage":"Rain","label":"On time","probability":0.6},{"first_stage":"Dry","label":"Late","probability":0.1},{"first_stage":"Dry","label":"On time","probability":0.9}]}'const res = await fetch("https://api.kit.forhosting.com/stat/probability-tree-two-stage", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"first_stage": [
{
"label": "Rain",
"probability": 0.3
},
{
"label": "Dry",
"probability": 0.7
}
],
"conditional_second_stage": [
{
"first_stage": "Rain",
"label": "Late",
"probability": 0.4
},
{
"first_stage": "Rain",
"label": "On time",
"probability": 0.6
},
{
"first_stage": "Dry",
"label": "Late",
"probability": 0.1
},
{
"first_stage": "Dry",
"label": "On time",
"probability": 0.9
}
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/stat/probability-tree-two-stage",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"first_stage": [
{
"label": "Rain",
"probability": 0.3
},
{
"label": "Dry",
"probability": 0.7
}
],
"conditional_second_stage": [
{
"first_stage": "Rain",
"label": "Late",
"probability": 0.4
},
{
"first_stage": "Rain",
"label": "On time",
"probability": 0.6
},
{
"first_stage": "Dry",
"label": "Late",
"probability": 0.1
},
{
"first_stage": "Dry",
"label": "On time",
"probability": 0.9
}
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/stat/probability-tree-two-stage", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"first_stage":[{"label":"Rain","probability":0.3},{"label":"Dry","probability":0.7}],"conditional_second_stage":[{"first_stage":"Rain","label":"Late","probability":0.4},{"first_stage":"Rain","label":"On time","probability":0.6},{"first_stage":"Dry","label":"Late","probability":0.1},{"first_stage":"Dry","label":"On time","probability":0.9}]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"first_stage":[{"label":"Rain","probability":0.3},{"label":"Dry","probability":0.7}],"conditional_second_stage":[{"first_stage":"Rain","label":"Late","probability":0.4},{"first_stage":"Rain","label":"On time","probability":0.6},{"first_stage":"Dry","label":"Late","probability":0.1},{"first_stage":"Dry","label":"On time","probability":0.9}]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/stat/probability-tree-two-stage", 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
{
"first_stage": [
{
"label": "Rain",
"probability": 0.3
},
{
"label": "Dry",
"probability": 0.7
}
],
"conditional_second_stage": [
{
"first_stage": "Rain",
"label": "Late",
"probability": 0.4
},
{
"first_stage": "Rain",
"label": "On time",
"probability": 0.6
},
{
"first_stage": "Dry",
"label": "Late",
"probability": 0.1
},
{
"first_stage": "Dry",
"label": "On time",
"probability": 0.9
}
]
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "stat.probability_tree_two_stage",
"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_first_stage_branches | 100 |
max_conditional_branches | 1000 |
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. |