Probabilidad: razonar bajo incertidumbre
Espacio muestral, probabilidad condicional, valor esperado, y por que una prueba con 99 por ciento de precision puede equivocarse casi cada vez que da positivo.
Hasta aqui toda afirmacion de este curso era verdadera o falsa. La probabilidad es lo que usas cuando la respuesta honesta es un numero entre ambas, y la disciplina que impone es simple: antes de calcular nada, escribe el espacio muestral. Esa es la lista de todo lo que puede ocurrir, con exactamente una entrada por resultado. Para dos lanzamientos de moneda el espacio de abajo tiene cuatro entradas, no tres. El error tentador es escribir dos caras, una cara, ninguna cara, lo que colapsa dos resultados distintos en uno y vuelve todo calculo posterior erroneo por un factor de dos.
two fair coins
S = { HH, HT, TH, TT }
P(HH) = 1 / 4
P(at least one H) = 3 / 4
P(exactly one H) = 2 / 4
P(HH) + P(HT) + P(TH) + P(TT) = 1Aqui es donde rinde fruto la leccion anterior. Cuando todos los resultados del espacio muestral son igualmente probables, una probabilidad es solo un conteo dividido entre otro conteo, y C(n,r) y la permutacion se encargan de la aritmetica. Toda la seccion siguiente consiste en contar resultados favorables y dividir entre el tamano del espacio, y por eso la combinatoria vino primero.
/* independent */
P(A and B) = P(A) * P(B)
1/2 * 1/2 = 1/4
/* dependent, cards, no replacement */
P(first ace) = 4 / 52
P(second ace | first ace) = 3 / 51Dos sucesos son independientes cuando saber que uno ocurrio no te dice nada sobre el otro, y solo entonces sus probabilidades se multiplican. Lanzar una moneda dos veces es independiente. Sacar dos cartas sin reposicion no lo es, porque la primera extraccion quito una carta del mazo: la probabilidad del segundo as es tres entre cincuenta y uno, no cuatro entre cincuenta y dos. La confusion clasica consiste en creer que la independencia tiene que ver con que los sucesos no tengan relacion conceptual. No es asi, tiene que ver con si el primero cambio los numeros para el segundo. En el software la misma distincion aparece como muestreo con y sin reposicion, y una cantidad sorprendente de simulaciones rotas proviene de muestrear sin reposicion mientras se asume que si la hubo.
P(A|B) = P(A and B) / P(B)
prevalence 1 / 1000 sensitivity 0.99 specificity 0.95
population 1000000
ill = 1000
healthy = 999000
ill and flagged = 1000 * 0.99 = 990
healthy and flagged = 999000 * 0.05 = 49950
flagged = 50940
P(ill | flagged) = 990 / 50940 = 0.019Ahora viene la parte que la mayoria de las personas, incluidos la mayoria de los medicos y la mayoria de los ingenieros, entiende mal. Lee el bloque de abajo con calma. Una persona de cada mil tiene la enfermedad. La prueba detecta 99 de cada 100 personas enfermas y marca 5 de cada 100 personas sanas, lo que suena a una prueba muy buena. Sigue a una poblacion de un millon a traves de ella. Novecientas noventa de las mil personas enfermas quedan marcadas correctamente, y casi cincuenta mil personas sanas quedan marcadas por error. Ahora cuenta: de unas cincuenta y un mil pruebas positivas, solo novecientas noventa son reales. Eso es menos del dos por ciento. La prueba es precisa y el resultado sigue siendo casi con seguridad una falsa alarma, y ambas afirmaciones son verdaderas a la vez.
P(positive | ill) = 0.99
P(ill | positive) = 0.019
ratio = 0.99 / 0.019 = 52
990 / 50940 = 0.019La razon no es aritmetica, es que se intercambiaron en silencio dos preguntas distintas. La sensibilidad, 0.99, es la probabilidad de un resultado positivo dado que estas enfermo. El numero que le importa al paciente es el opuesto: la probabilidad de que estes enfermo dado un resultado positivo. No son el mismo numero, ni siquiera se parecen, y aqui difieren por un factor de unos cincuenta y dos. Este intercambio tiene nombre, falacia de la tasa base, y no es una curiosidad de examen. Provoca tratamientos innecesarios, panico innecesario y malas decisiones de producto, y sobrevive en personas inteligentes porque la respuesta correcta se siente equivocada. La leccion general vale para todo: cada vez que veas una probabilidad condicional en una frase, pregunta que suceso esta a cada lado de la barra, y si lo raro esta en el numerador o en el denominador.
Si no crees la aritmetica, simula. El codigo de abajo hace pasar a un millon de personas por los mismos numeros e imprime la fraccion de positivos que realmente estan enfermos. Caera cerca de 0.019 cada vez.
import random
ill = 0
flagged = 0
true_positive = 0
for _ in range(1000000):
sick = random.random() < 0.001
hit = random.random() < (0.99 if sick else 0.05)
if sick:
ill += 1
if hit:
flagged += 1
if sick:
true_positive += 1
print(true_positive / flagged)Comprobacion Monte Carlo de los numeros de la prueba medica: prevalencia 0.001, sensibilidad 0.99, tasa de falso positivo 0.05.El valor esperado es el unico numero que resume un resultado aleatorio, y es el promedio que obtendrias por intento a lo largo de muchos intentos. Multiplica cada resultado por su probabilidad y suma. El boleto de loteria de abajo tiene un valor esperado de menos uno, que es la forma honesta de decir que el boleto cuesta uno mas de lo que devuelve en promedio. El valor esperado es tambien lo que hace concreta la pregunta de examen anterior: solo vale la pena aplicar una prueba cuando el beneficio esperado de un resultado correcto supera el costo de las falsas alarmas que produce, y para una enfermedad rara con una prueba imperfecta ese es un calculo real, no una opinion.
/* lottery ticket, price 2 */
E = (1/1000000) * 1000000 + (999999/1000000) * 0 - 2
= 1 - 2
= -1Esto conecta directamente con la evaluacion de modelos del nivel 1, y es el mismo fallo con otra ropa. La exactitud es una probabilidad condicional leida al reves: te dice con que frecuencia el modelo acierta en general, mientras que lo que sueles necesitar es con que frecuencia el modelo acierta cuando dice que si. En una clase rara los dos numeros son enormemente distintos, y por eso existen la precision y la exhaustividad, y por eso un modelo con 99 por ciento de exactitud puede no valer nada. La tasa base no es un detalle de la metrica, es lo que decide si la metrica significa algo en absoluto.
Práctica
Una prueba de tamizaje para una enfermedad rara tiene sensibilidad 0.99, lo que significa que marca 99 de cada 100 personas enfermas, y una tasa de falso positivo de 0.05, lo que significa que marca 5 de cada 100 personas sanas. Una persona de cada 1000 en la poblacion tiene la enfermedad. Tu prueba da positivo. Cual afirmacion es correcta?
Pistas
- Escribe los dos sucesos en el orden en que los da la frase y nombra cada uno con palabras antes de tocar numeros.
- Una de estas cantidades trata de personas enfermas y la otra de personas que dieron positivo en la prueba. Tienen poblaciones distintas.
Relaciona cada situacion con si los dos sucesos son independientes. Cada respuesta se usa exactamente dos veces.
Pistas
- Preguntate si el primer resultado cambia el numero de resultados favorables que quedan para el segundo.
- Devolver la carta al mazo es lo que hace que la siguiente extraccion olvide la anterior.
Ordena el calculo de la tasa base para una poblacion de 100000 personas. La prevalencia es 1 de cada 1000, la sensibilidad es 0.99 y la tasa de falsos positivos es 0.05.
- 1una sensibilidad de 0.99 significa que 100 * 0.99 = 99 personas enfermas dan positivo
- 2asi que alrededor de 98 de cada 100 resultados positivos provienen de personas sanas
- 31 de cada 1000 esta enferma, asi que 100 personas estan enfermas y 99900 estan sanas
- 4empieza con 100000 personas
- 5P(enferma | positivo) = 99 / 5094, que es aproximadamente 0.019
- 6el numero total de pruebas positivas es 99 + 4995 = 5094
- 7una tasa de falsos positivos de 0.05 significa que 99900 * 0.05 = 4995 personas sanas dan positivo
Pistas
- Usa una poblacion redonda de 100000 personas para que cada grupo siga siendo un numero entero: los enfermos son 100 y los sanos son 99900.
- Construye la tabla fila por fila a partir de las dos tasas de error y solo entonces divide los verdaderos positivos entre toda la columna de marcados.
Preguntas sobre esta lección
¿Por qué empezar por lógica y conjuntos?
Porque todo lo demás se construye sobre eso. Las bases de datos son conjuntos, los programas son decisiones booleanas y «¿es suficientemente rápido?» es la matemática del crecimiento. Si te lo saltas, las materias siguientes se vuelven memorizar.
¿Qué me dice realmente la notación Big-O?
Cómo crece el trabajo cuando crecen los datos. No es un cronómetro: dice si al duplicar los datos el tiempo se duplica o se multiplica por cuatro. Esa diferencia decide si tu programa aguanta un uso real.
¿Es gratis?
Sí. El primer nivel de cada materia es gratis y no necesita cuenta. Los niveles más profundos y los grados superiores son de pago: eso es lo que mantiene vivo el proyecto.
¿Para qué edad es?
Está escrito para adolescentes curiosos a partir de unos 12 años y para adultos que empiezan de cero. No se supone experiencia previa en programación; las lecciones de redes y física no necesitan matemáticas más allá del colegio.
¿Necesito saber programar ya?
No. Las rutas de lógica, física y redes empiezan desde cero. El código lo escribes en la sección de lenguajes, que también arranca desde el principio.
¿Hay que instalar algo?
No. Todo funciona en el navegador: teoría, práctica y las simulaciones interactivas. No hay nada que descargar ni que configurar.
¿Cuánto se tarda en una materia?
Una lección dura entre 10 y 15 minutos. Un grado junior son unas 12 a 20 lecciones, así que son unas semanas de práctica constante, no una tarde.
¿Hay que seguir el orden?
Dentro de un grado los niveles se abren uno tras otro, porque cada uno se apoya en el anterior. Entre materias eres libre: empieza por lógica, física o redes.