Albero di probabilità a due fasi
Un albero di probabilità a due fasi trasforma una sequenza di eventi incerti in un elenco completo di esiti.
Esegui gratis nel browser
Inserisca le probabilità della prima fase, quindi le probabilità condizionate di ogni ramo della seconda fase sotto ciascun esito iniziale. Il calcolatore moltiplica i valori lungo ogni percorso per ricavare tutte le probabilità finali e controlla la struttura prima di rispondere. Se i rami iniziali o un qualsiasi insieme condizionato non sommano a uno, la richiesta termina con un messaggio chiaro anziché mostrare una distribuzione fuorviante.
Descriva la prima fase e i relativi rami condizionati
Inizi elencando tutti gli esiti mutuamente esclusivi che possono verificarsi nella prima fase. Assegni a ciascun esito un’etichetta distinta e una probabilità compresa tra zero e uno. Le probabilità iniziali devono sommare a uno, perché insieme rappresentano tutti i modi in cui il processo può cominciare. Aggiunga poi gli esiti della seconda fase come righe condizionate. Ogni riga identifica il proprio ramo iniziale, assegna un nome all’esito successivo e specifica la probabilità di tale esito dato il precedente. L’etichetta del ramo iniziale deve corrispondere esattamente a un’etichetta della prima fase. Le etichette successive devono essere uniche soltanto all’interno del proprio ramo; pertanto, un nome come «successo» può comparire sotto diversi rami iniziali. Inserisca almeno una riga successiva per ogni ramo iniziale. Anche le probabilità condizionate sotto ciascun ramo devono sommare a uno. Questo formato a righe rende semplice inserire, controllare, archiviare o generare un albero ampio da un’altra applicazione, senza nascondere i rapporti in JSON annidato scritto manualmente.
Comprenda come viene calcolata ogni probabilità finale
Ogni riga restituita rappresenta un percorso completo che parte dalla radice, attraversa la prima fase e arriva alla seconda. La sua probabilità si ottiene moltiplicando la probabilità iniziale per la probabilità condizionata pertinente. Per esempio, se la pioggia ha probabilità 0.30 e il ritardo data la pioggia ha probabilità 0.40, il percorso pioggia e poi ritardo ha probabilità 0.12. Questa moltiplicazione è la consueta regola del prodotto per un evento congiunto espresso tramite una probabilità condizionata. Il risultato conserva entrambi i fattori accanto al prodotto calcolato, rendendo l’operazione trasparente e adatta a verifiche, didattica, fogli di calcolo o elaborazioni successive. Vengono indicati anche il numero di foglie e la somma di tutte le probabilità. Un albero completo valido ha probabilità totale pari a uno, salvo minimi effetti della rappresentazione in virgola mobile. Il calcolatore non presume che la seconda fase sia indipendente dalla prima: gli insiemi condizionati distinti servono proprio a modellare tale dipendenza.
Individui gli alberi incompleti prima di usare i risultati
Un albero può apparire plausibile anche se omette un esito o conta due volte esiti sovrapposti. Il calcolatore verifica quindi la massa di probabilità in ogni punto di diramazione. Rifiuta una prima fase le cui probabilità non sommano a uno e controlla separatamente l’insieme condizionato sotto ogni ramo iniziale. Rifiuta inoltre insiemi mancanti, riferimenti a rami sconosciuti, etichette iniziali duplicate, etichette successive ripetute nello stesso ramo, valori non numerici o non finiti e probabilità fuori dall’intervallo da zero a uno. Una piccola tolleranza numerica ammette i normali effetti della rappresentazione in virgola mobile, ma non giustifica una distribuzione sostanzialmente incompleta. Usi l’output quando servono probabilità finali, non risultati simulati: il calcolo è esatto per i numeri forniti e non utilizza campionamenti casuali. Lo stesso risolutore deterministico elabora ogni richiesta, quindi un input valido identico produce sempre un output identico. L’automazione tramite API è disponibile a $0.002 per richiesta.
Casi d'uso
Mappare gli esiti diagnostici
Combini la probabilità iniziale di una condizione con esiti positivi e negativi condizionati per elencare tutti i percorsi.
Pianificare scenari operativi
Calcoli le probabilità finali per consegne, domanda, personale o meteo quando la seconda fase dipende dalla prima.
Controllare esercizi di probabilità
Verifichi la moltiplicazione lungo i rami e rilevi insiemi incompleti prima di confrontare una soluzione.
Domande frequenti
Che cos’è la probabilità di un percorso finale?
È la probabilità congiunta di seguire un ramo iniziale e poi uno dei suoi rami successivi condizionati.
Perché ogni insieme di rami deve sommare a uno?
Ogni insieme deve descrivere tutti gli esiti mutuamente esclusivi disponibili in quel punto. Un totale diverso segnala probabilità mancanti, sovrapposte o errate.
Come viene calcolata la probabilità di un percorso?
Il calcolatore moltiplica la probabilità iniziale per quella successiva condizionata all’esito iniziale.
La stessa etichetta può apparire sotto rami iniziali diversi?
Sì. Deve essere unica all’interno di un ramo iniziale, ma lo stesso nome può avere senso sotto più rami.
Questo calcolatore simula prove casuali?
No. Calcola in modo deterministico prodotti esatti dalle probabilità fornite, senza campionamento né stime mediante simulazione.
Quanto costa una richiesta API?
Ogni richiesta API costa $0.002. Non viene aggiunto alcun prezzo per ramo.
Per sviluppatori — accesso via API
Tutto quello che vedi in questa pagina è disponibile anche via API. Questa sezione è per i team che vogliono integrarlo nei propri sistemi; chi non ne ha bisogno può semplicemente usare lo strumento qui sopra.
Endpoint
Autenticazione con Bearer token: un POST mette in coda l'attività e il risultato arriva via webhook o link firmato.
Chiamala dal tuo stack
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)Esempio di richiesta
{
"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
}
]
}Esempio di risposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "stat.probability_tree_two_stage",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L'API è asincrona: ricevi subito un task_id e puoi fare polling fino a 1 richiesta al secondo.
Prezzi
Prezzo pubblicato, senza token né crediti. Se l'attività fallisce, non paghi.
Limiti
max_first_stage_branches | 100 |
max_conditional_branches | 1000 |
Errori
| HTTP | Codice | Significato |
|---|---|---|
401 | unauthorized | Chiave API mancante o non valida: controlla l'header Authorization. |
402 | insufficient_balance | Credito esaurito: ricarica per continuare a eseguire attività. |
404 | unknown_type | Tipo di attività sconosciuto: controlla il campo type della richiesta. |
429 | rate_limited | Troppe richieste in poco tempo: rallenta e riprova tra qualche secondo. |