Modello formaggio svizzero coronavirus
Sovrapponga strati di protezione e veda il rischio di contagio che passa ancora: una mascherina al 70%, una ventilazione migliore del 50% e un vaccino all'80% lasciano un 3% residuo, non il 200% di protezione. Gratis nel suo browser.
- Gratis
- Funziona nel suo browser
- Senza registrazione
- I suoi dati restano sul dispositivo
Esegui gratis nel browser
Il modello del formaggio svizzero per il coronavirus tratta ogni misura di controllo dell'infezione come una fetta con buchi: mascherina, aria esterna, filtrazione, distanziamento, vaccinazione, test e isolamento bloccano alcune — mai tutte — delle vie che un virus respiratorio usa per passare da una persona a un'altra. Quando quelle fette sono impilate, un virione deve attraversare tutti i buchi restanti in sequenza, così la probabilità residua di trasmissione è il prodotto delle frazioni di perdita individuali, non la somma delle percentuali di efficacia che di solito si citano. Questo calcolatore accetta l'efficacia di ciascuno strato come una percentuale da 0 a 100, la converte in una perdita di (100 meno efficacia) diviso 100, moltiplica le perdite e restituisce il rischio combinato di infezione che resta dopo la pila. Una mascherina al 70 per cento, un miglioramento di ventilazione al 50 e uno strato vaccinale all'80 non sommano una protezione del 200 per cento; lasciano 0.30 × 0.50 × 0.20 = 0.03, un residuo del 3 per cento. Lo usi per confrontare pile, per mostrare perché un secondo strato imperfetto conta ancora, e per fallire in modo esplicito quando una percentuale esce da 0–100 invece di inventare una cifra di rischio.
Come gli strati impilati moltiplicano le perdite fino al rischio residuo
Una mascherina perde ai bordi, un filtro pulisce solo l'aria che lo attraversa davvero, un vaccino riduce infettività e suscettibilità senza azzerarle, e il distanziamento fisico fallisce ancora quando le persone condividono a lungo un locale poco ventilato. Ogni strato è dunque una fetta di formaggio svizzero i cui buchi sono i modi di guasto di quello strato. La trasmissione che ancora avviene dopo N strati indipendenti è l'evento che un virione trovi un buco nel primo, e un buco nel secondo, e un buco in ogni fetta restante.
Aggiungere uno strato al 50 per cento a una pila esistente non somma cinquanta punti percentuali di protezione; moltiplica il residuo attuale per un mezzo. Per questo un secondo controllo imperfetto conta ancora anche quando il primo sembra già forte, e per questo citare una somma di efficacie come 70 più 50 più 80 uguale a 200 non è una probabilità. Trasforma un elenco di percentuali di strato nel rischio residuo che resta se quegli strati agiscono in modo indipendente gli uni dagli altri.
Dove un calcolatore formaggio svizzero e coronavirus merita il proprio posto
I team di medicina del lavoro e di strutture usano un calcolatore formaggio svizzero e coronavirus per confrontare pile candidate prima di spendere bilancio: aggiungere un'unità HEPA portatile con efficacia dichiarata del 50 per cento a una politica già esistente di mascherina e distanziamento è una moltiplicazione del residuo attuale, non una nuova percentuale da titolo.
Chi pianifica scuole e campus può mettere a fianco stime pubblicate di strato — controllo alla fonte, aria esterna, filtrazione, coorti — e mostrare a un consiglio perché due controlli al 60 per cento battono uno all'80 sotto indipendenza (residuo 0.16 contro 0.20).
I taccuini personali di rischio e i pezzi giornalistici di spiegazione necessitano di un oracolo deterministico che rifiuti di stampare un numero quando qualcuno digita un'efficacia del 110 per cento, invece di ritagliare in silenzio e fingere che la pila sia più forte di quanto consentano gli ingressi. La convalida fallita non consuma saldo. Tenga corta la lista di strati, fissi il residuo arrotondato nei test e ottiene una cifra riproducibile di rischio impilato senza erigere un simulatore epidemiologico proprio.
Casi d'uso
Confronto di pile in azienda e a scuola
Confronti strati di mascherina, ventilazione e vaccinazione per trasmissione residua invece di sommare percentuali di efficacia da titolo che non sono una probabilità.
Domande frequenti
Come si calcola la trasmissione residua da strati impilati?
La perdita di ciascuno strato è (100 − effectiveness) / 100. La trasmissione residua R è il prodotto di quelle perdite, se gli strati sono indipendenti. La protezione combinata è 1 − R. Esempio: 70%, 50% e 80% lasciano 0.30 × 0.50 × 0.20 = 0.03.
Che succede se un'efficacia esce da 0–100?
L'efficacia deve essere una percentuale finita nell'intervallo chiuso 0–100; valori come −5 o 110 sono rifiutati e non fatturati.
Uno strato al 100 per cento azzera il rischio residuo?
Sì: in questo modello a strati indipendenti, un'efficacia del 100 per cento ha perdita 0, quindi il prodotto R è 0 a prescindere dalle altre fette. È un'ipotesi di modellazione, non l'affermazione che un controllo reale sia perfetto.
Posso inviare percentuali senza nome invece di strati etichettati?
Oggetti con name facoltativo sono accettati per fette etichettate.
Aggiungere uno strato poco efficace serve a qualcosa?
Sì. Uno strato che blocca il 50% dimezza il rischio rimasto, per quanto forti siano gli altri. Per questo una seconda misura imperfetta conta ancora, anche quando la prima sembra già buona.
Strumenti correlati
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/health/swiss-cheese-coronavirus \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"layers":[{"name":"mask","effectiveness":70},{"name":"ventilation","effectiveness":50},{"name":"vaccine","effectiveness":80}]}'const res = await fetch("https://api.kit.forhosting.com/health/swiss-cheese-coronavirus", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"layers": [
{
"name": "mask",
"effectiveness": 70
},
{
"name": "ventilation",
"effectiveness": 50
},
{
"name": "vaccine",
"effectiveness": 80
}
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/health/swiss-cheese-coronavirus",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"layers": [
{
"name": "mask",
"effectiveness": 70
},
{
"name": "ventilation",
"effectiveness": 50
},
{
"name": "vaccine",
"effectiveness": 80
}
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/health/swiss-cheese-coronavirus", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"layers":[{"name":"mask","effectiveness":70},{"name":"ventilation","effectiveness":50},{"name":"vaccine","effectiveness":80}]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"layers":[{"name":"mask","effectiveness":70},{"name":"ventilation","effectiveness":50},{"name":"vaccine","effectiveness":80}]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/health/swiss-cheese-coronavirus", 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
{
"layers": [
{
"name": "mask",
"effectiveness": 70
},
{
"name": "ventilation",
"effectiveness": 50
},
{
"name": "vaccine",
"effectiveness": 80
}
]
}Esempio di risposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "health.swiss_cheese_coronavirus",
"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_items | 40 |
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. |
Note tecniche
Come gli strati impilati moltiplicano le perdite fino al rischio residuo
La difesa dai virus respiratori a formaggio svizzero, resa nota durante la pandemia di coronavirus come schema di sanità pubblica, parte da un fatto secco: nessun intervento isolato è un muro pieno. Se lo strato i blocca una frazione e_i dei tentativi — l'efficacia che Lei indica come percentuale — perde una frazione uno meno e_i, e la probabilità residua di trasmissione è il prodotto di quelle perdite: R equivale al prodotto di (1 − e_i). Questo endpoint implementa esattamente quel prodotto e nient'altro: non adatta una curva dose-risposta, non stima la prevalenza comunitaria e non sostituisce il consiglio clinico né di medicina del lavoro.
Contratto di ingresso, forma della risposta e convalida
Ogni elemento è o un numero finito (la percentuale di efficacia) o un oggetto con effectiveness obbligatorio e un name facoltativo, ad esempio mask, ventilation o vaccine. Ogni efficacia deve essere un numero finito nell'intervallo chiuso da 0 a 100 incluso: zero significa che lo strato non fa nulla (perdita uno) e cento modella un blocco completo (perdita zero e residuo zero per l'intera pila). I nomi facoltativi sono omessi quando Lei invia numeri nudi; non tornano mai come null. Invii con POST un corpo JSON il cui campo obbligatorio è layers: un array non vuoto di al massimo quaranta fette di protezione. Gli alias effectiveness, layer_effectiveness e protections sono accettati e analizzati allo stesso modo, inclusa una stringa di array JSON o un elenco di numeri separato da virgole. Un valore sotto 0 o sopra 100, un elenco assente, un elenco vuoto, un token non finito o più di quaranta righe fallisce con invalid_input nominando il campo, e quei fallimenti non sono fatturati. In caso di successo il corpo include layer_count; una traccia layers con index, name facoltativo, effectiveness, leak_fraction e remaining_after dopo quella fetta; residual_transmission come probabilità in 0–1 (il risultato principale); residual_percent su scala 0–100; combined_protection e combined_protection_percent come uno meno il residuo; e una stringa formula che riformula R = Π (1 − eᵢ/100). Esempio: mask 70, ventilation 50, vaccine 80 produce perdite 0.3, 0.5 e 0.2, remaining_after 0.3 poi 0.15 poi 0.03, residual_transmission 0.03 e combined_protection 0.97.
Dove un calcolatore formaggio svizzero e coronavirus merita il proprio posto
Poiché l'implementazione è parse di livello A, ogni chiamata riuscita costa il prezzo base pubblicato $0.002, senza token di modello e senza rete in uscita.
Casi di integrazione
Testi di policy e widget giornalistici
Mostri perché un secondo controllo imperfetto moltiplica ancora il rischio restante, con un calcolatore formaggio svizzero e coronavirus che rifiuta percentuali fuori da 0–100.
Aritmetica di rischio personale e da taccuino
Trasformi un breve elenco di percentuali di efficacia di strato in residual_transmission per un'app di note o uno script, senza importare un modello epidemico completo.
Domande tecniche
Quanto costa il calcolatore formaggio svizzero e coronavirus?
Lo strumento nel browser è gratuito. Le richieste API usano saldo prepagato KIT a $0.002 per chiamata riuscita; l'ingresso non valido non è fatturato.