Modelo queso suizo coronavirus
Apile capas de protección y vea el riesgo de contagio que aún pasa: una mascarilla del 70 %, una ventilación un 50 % mejor y una vacuna del 80 % dejan un 3 % residual, no un 200 % de protección. Gratis en su navegador.
- Gratis
- Funciona en su navegador
- Sin registro
- Sus datos no salen de su equipo
Ejecutar — gratis
El modelo de queso suizo para el coronavirus trata cada medida de control de la infección como una loncha con agujeros: mascarilla, aire exterior, filtración, distancia, vacunación, pruebas y aislamiento bloquean algunas —nunca todas— de las vías que usa un virus respiratorio para pasar de una persona a otra. Cuando esas lonchas se apilan, un virión debe atravesar todos los agujeros restantes en secuencia, de modo que la probabilidad residual de transmisión es el producto de las fracciones de fuga individuales, no la suma de los porcentajes de eficacia que suele citarse. Esta calculadora acepta la eficacia de cada capa como un porcentaje de 0 a 100, la convierte en una fuga de (100 menos eficacia) dividido entre 100, multiplica las fugas y devuelve el riesgo combinado de infección que aún queda tras la pila. Una mascarilla al 70 por ciento, una mejora de ventilación al 50 y una capa de vacuna al 80 no suman una protección del 200 por ciento; dejan 0.30 × 0.50 × 0.20 = 0.03, un residual del 3 por ciento. Úsela para comparar pilas, para mostrar por qué una segunda capa imperfecta sigue importando, y para fallar con claridad cuando un porcentaje quede fuera de 0–100 en lugar de inventar una cifra de riesgo.
Cómo las capas apiladas multiplican las fugas hasta el riesgo residual
La defensa frente a virus respiratorios en forma de queso suizo, popularizada durante la pandemia de coronavirus como diagrama de salud pública, parte de un hecho seco: ninguna intervención aislada es un muro macizo. Una mascarilla fuga por los bordes, un filtro solo limpia el aire que realmente lo atraviesa, una vacuna reduce infectividad y susceptibilidad sin anular ninguna de las dos, y la distancia física sigue fallando cuando las personas comparten un local mal ventilado durante mucho tiempo.
Cada capa es, por tanto, una loncha de queso suizo cuyos agujeros son los modos de fallo de esa capa. La transmisión que aún ocurre tras N capas independientes es el suceso de que un virión encuentre un agujero en la primera, y un agujero en la segunda, y un agujero en cada loncha restante. Añadir una capa del 50 por ciento a una pila existente no suma cincuenta puntos porcentuales de protección; multiplica el residual actual por un medio.
Por eso un segundo control imperfecto sigue importando aunque el primero ya parezca fuerte, y por eso citar una suma de eficacias como 70 más 50 más 80 igual a 200 no es una probabilidad. Este extremo implementa exactamente ese producto y nada más: no ajusta una curva dosis-respuesta, no estima la prevalencia comunitaria y no sustituye el consejo clínico ni de salud laboral. Convierte una lista de porcentajes de capa en el riesgo residual que queda si esas capas actúan de forma independiente entre sí.
Dónde resulta útil una calculadora de queso suizo y coronavirus
Los equipos de salud laboral e instalaciones usan una calculadora de queso suizo y coronavirus para comparar pilas candidatas antes de gastar presupuesto: añadir un equipo HEPA portátil con una eficacia declarada del 50 por ciento a una política ya existente de mascarilla y distancia es una multiplicación del residual actual, no un nuevo porcentaje de titular.
Quienes planifican escuelas y campus pueden colocar estimaciones publicadas de capa una al lado de otra —control en origen, aire exterior, filtración, cohortes— y mostrar a un consejo por qué dos controles al 60 por ciento superan uno al 80 bajo independencia (residual 0.16 frente a 0.20).
Las libretas personales de riesgo y las piezas periodísticas de explicación necesitan un oráculo determinista que se niegue a imprimir un número cuando alguien escribe una eficacia del 110 por ciento, en lugar de recortar en silencio y fingir que la pila es más fuerte de lo que permiten las entradas. La validación fallida no consume saldo. Mantenga corta la lista de capas, fije el residual redondeado en las pruebas y obtendrá una cifra reproducible de riesgo apilado sin levantar un simulador epidemiológico propio.
Qué puede hacer con ella
Comparación de pilas en el trabajo y en la escuela
Compare capas de mascarilla, ventilación y vacunación por transmisión residual en lugar de sumar porcentajes de eficacia de titular que no son una probabilidad.
Explicadores de política y widgets periodísticos
Muestre por qué un segundo control imperfecto sigue multiplicando el riesgo restante, con una calculadora de queso suizo y coronavirus que rechaza porcentajes fuera de 0–100.
Preguntas frecuentes
¿Cómo se calcula la transmisión residual a partir de capas apiladas?
La fuga de cada capa es (100 − effectiveness) / 100. La transmisión residual R es el producto de esas fugas, si las capas son independientes. La protección combinada es 1 − R. Ejemplo: 70%, 50% y 80% dejan 0.30 × 0.50 × 0.20 = 0.03.
¿Qué ocurre si una eficacia queda fuera de 0–100?
La eficacia debe ser un porcentaje finito en el intervalo cerrado 0–100; valores como −5 o 110 se rechazan y no se facturan.
¿Una capa al 100 por ciento deja el riesgo residual en cero?
Sí: bajo este modelo de capas independientes, una eficacia del 100 por ciento tiene fuga 0, de modo que el producto R es 0 con independencia de las demás lonchas. Es un supuesto de modelado, no la afirmación de que un control real sea perfecto.
¿Puedo enviar porcentajes sin nombre en lugar de capas etiquetadas?
Se aceptan objetos con name opcional para lonchas etiquetadas.
¿Sirve de algo añadir una capa poco eficaz?
Sí. Una capa que bloquea el 50 % reduce a la mitad el riesgo que quede, por fuertes que sean las demás. Por eso una segunda medida imperfecta sigue importando aunque la primera ya parezca buena.
Herramientas relacionadas
Para desarrolladores — acceso por API
Todo lo de esta página está disponible por programación. Esta sección es para equipos que quieren integrarlo en sus sistemas; el resto puede usar la herramienta de arriba sin más.
Endpoint de API
¿Prefiere automatizarlo? Un POST autenticado crea la tarea; el resultado llega por webhook o enlace firmado. La misma capacidad también se ejecuta aquí en la web, por email y desde Telegram — y pronto también desde nuestra app.
Llámela desde su 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)Ejemplo de solicitud
{
"layers": [
{
"name": "mask",
"effectiveness": 70
},
{
"name": "ventilation",
"effectiveness": 50
},
{
"name": "vaccine",
"effectiveness": 80
}
]
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "health.swiss_cheese_coronavirus",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}La API es asíncrona: la llamada devuelve un task_id al instante y el resultado llega por webhook. El polling está limitado a 1 req/s por tarea.
Precio
Precio publicado — sin tokens ni créditos inventados. Una tarea fallida no se cobra.
Límites
max_items | 40 |
Errores
| HTTP | Código | Significado |
|---|---|---|
401 | unauthorized | API key ausente o inválida. |
402 | insufficient_balance | El saldo no cubre el precio de la tarea. |
404 | unknown_type | El tipo de tarea no existe. |
429 | rate_limited | Demasiadas peticiones. Use el webhook en vez de sondear. |
Notas técnicas
Cómo las capas apiladas multiplican las fugas hasta el riesgo residual
Si la capa i bloquea una fracción e_i de los intentos —la eficacia que usted escribe como porcentaje—, fuga una fracción uno menos e_i, y la probabilidad residual de transmisión es el producto de esas fugas: R equivale al producto de (1 − e_i).
Contrato de entrada, forma de la respuesta y validación
Cada elemento es o un número finito (el porcentaje de eficacia) o un objeto con effectiveness obligatorio y un name opcional, por ejemplo mask, ventilation o vaccine. Toda eficacia debe ser un número finito en el intervalo cerrado de 0 a 100 inclusive: cero significa que la capa no hace nada (fuga uno) y cien modela un bloqueo completo (fuga cero y residual cero para toda la pila). Los nombres opcionales se omiten cuando envía números sueltos; nunca se devuelven como null. Envíe por POST un cuerpo JSON cuyo campo obligatorio es layers: una matriz no vacía de como máximo cuarenta lonchas de protección. Se aceptan los alias effectiveness, layer_effectiveness y protections, y se interpretan igual, incluida una cadena de matriz JSON o una lista de números separada por comas. Un valor por debajo de 0 o por encima de 100, una lista ausente, una lista vacía, un token no finito o más de cuarenta filas falla con invalid_input nombrando el campo, y esos fallos no se facturan. Si acierta, el cuerpo incluye layer_count; un rastro layers con index, name opcional, effectiveness, leak_fraction y remaining_after tras esa loncha; residual_transmission como probabilidad en 0–1 (el resultado principal); residual_percent en escala 0–100; combined_protection y combined_protection_percent como uno menos el residual; y una cadena formula que reescribe R = Π (1 − eᵢ/100). Ejemplo: mask 70, ventilation 50, vaccine 80 produce fugas 0.3, 0.5 y 0.2, remaining_after 0.3 luego 0.15 luego 0.03, residual_transmission 0.03 y combined_protection 0.97.
Dónde resulta útil una calculadora de queso suizo y coronavirus
Como la implementación es parse de nivel A, cada llamada con éxito cuesta el precio base publicado $0.002, sin tokens de modelo y sin red de salida.
Casos de integración
Aritmética de riesgo personal y de cuaderno
Convierta una lista breve de porcentajes de eficacia de capa en residual_transmission para una aplicación de notas o un script, sin importar un modelo epidémico completo.
Preguntas técnicas
¿Cuánto cuesta la calculadora de queso suizo y coronavirus?
La herramienta del navegador es gratuita. Las solicitudes API usan saldo prepago KIT a $0.002 por llamada con éxito; la entrada inválida no se factura.