Probabilidades básicas
La probabilidad mide la certeza de que ocurra un evento. Es el puente entre la estadística descriptiva (describir lo que ya ocurrió) y la inferencial (predecir lo que puede ocurrir).
Vocabulario básico
- Experimento aleatorio: resultado impredecible (lanzar un dado, sacar una carta)
- Espacio muestral (Ω): conjunto de todos los resultados posibles
- Evento (A): subconjunto del espacio muestral que nos interesa
- Probabilidad P(A): número entre 0 y 1 que mide la posibilidad de A
// Experimento: lanzar un dado de 6 caras
const espacioMuestral = [1, 2, 3, 4, 5, 6];
// Evento A: sacar un número par
const eventoA = espacioMuestral.filter((n) => n % 2 === 0); // [2, 4, 6]
// Probabilidad clásica: casos favorables / casos posibles
const P_A = eventoA.length / espacioMuestral.length;
console.log(P_A); // 0.5
Reglas fundamentales
Complementario
La probabilidad de que NO ocurra A es 1 - P(A):
const P_no_A = 1 - P_A;
console.log(P_no_A); // 0.5 — probabilidad de sacar impar
Unión (A o B)
La probabilidad de que ocurra A o B:
// P(A ∪ B) = P(A) + P(B) - P(A ∩ B)
// A: sacar par → [2, 4, 6]
// B: sacar mayor que 4 → [5, 6]
// A ∩ B (par y mayor que 4) → [6]
const P_B = 2 / 6;
const P_interseccion = 1 / 6; // solo el 6 cumple ambas
const P_union = P_A + P_B - P_interseccion;
console.log(P_union.toFixed(4)); // 0.6667
Eventos mutuamente excluyentes
Si A y B no pueden ocurrir a la vez, P(A ∩ B) = 0:
// A: sacar 1 | B: sacar 6 → no pueden ser simultáneos
const P_1 = 1 / 6;
const P_6 = 1 / 6;
const P_1_o_6 = P_1 + P_6; // 0.333...
Probabilidad frecuentista: simulación
La probabilidad teórica asume que todos los resultados son igualmente probables. En la práctica, a veces se estima con experimentos repetidos:
function simularDado(lanzamientos) {
let paresObtenidos = 0;
for (let i = 0; i < lanzamientos; i++) {
const resultado = Math.floor(Math.random() * 6) + 1;
if (resultado % 2 === 0) paresObtenidos++;
}
return paresObtenidos / lanzamientos;
}
console.log(simularDado(100)); // ~0.50 (varía)
console.log(simularDado(10_000)); // ~0.500 (más estable)
console.log(simularDado(1_000_000)); // ~0.5000 (converge a la teórica)
Ley de los grandes números: cuanto más repetimos el experimento, la frecuencia relativa se aproxima a la probabilidad teórica.
Probabilidad condicional
A veces queremos saber la probabilidad de A dado que ya sabemos que B ocurrió. Esto se llama probabilidad condicional y reduce el espacio muestral al evento conocido.
// En un grupo de 100 personas:
// - 60 programan en JS
// - 40 programan en Python
// - 20 programan en ambos
const total = 100;
const P_JS = 60 / total; // 0.6
const P_Python = 40 / total; // 0.4
const P_ambos = 20 / total; // 0.2
// P(Python | JS): probabilidad de usar Python dado que usa JS
const P_Python_dado_JS = P_ambos / P_JS;
console.log(P_Python_dado_JS); // 0.333... — 1 de cada 3 programadores JS también usa Python
Simulación Monte Carlo: estimar π
Un clásico que muestra el poder de la probabilidad computacional. Si lanzamos puntos aleatorios en un cuadrado de lado 1, la proporción que cae dentro del círculo inscrito se aproxima a π/4:
function estimarPi(muestras) {
let dentroCirculo = 0;
for (let i = 0; i < muestras; i++) {
const x = Math.random(); // entre 0 y 1
const y = Math.random();
if (x * x + y * y <= 1) {
dentroCirculo++;
}
}
return 4 * (dentroCirculo / muestras);
}
console.log(estimarPi(1_000).toFixed(4)); // ~3.14xx
console.log(estimarPi(1_000_000).toFixed(4)); // ~3.1416
Con esto completamos el Curso de Estadística con JavaScript. Has aprendido a describir datos con frecuencias y distribuciones, calcular medidas centrales, visualizar resultados en el navegador y razonar sobre la incertidumbre con probabilidades. La estadística inferencial (intervalos de confianza, tests de hipótesis) es el siguiente nivel natural.