Probabilidad y Estadística · Tema 09

Variables aleatorias discretas

Conteos y categorías en la simulación: función de probabilidad, tabla valor → chance y cómo muestrear conteos en Python.

01 · Punto de partida

Cuando lo que importa se cuenta

Una variable discreta toma valores aislados: 0, 1, 2… clientes en cola, artículos fallados, compras del día. No hay «2,5 clientes». Su distribución es una tabla: cada valor con su probabilidad p(x).

En simulación son las variables de conteo: llegadas por hora, éxitos en n intentos, piezas defectuosas. Si tu variable cuenta cosas, estás aquí; si mide tiempos o magnitudes, será continua (tema 10).

  • ¿Los valores son conteos separados o medidas continuas?
  • ¿Cuánto vale p(x) para cada x y suman 1?
  • ¿Cuál es el valor más probable y cuál la cola de riesgo?
  • ¿Cómo genero estos conteos en el simulador?

02 · Definición

Función de probabilidad p(x)

p(x)

Reglas

0 ≤ p(x) ≤ 1 y Σ p(x) = 1. Si tu tabla no suma 1, hay un bug o falta un valor.

Σ

Eventos por suma

P(a ≤ X ≤ b) = Σ p(x) en el rango. Las colas son sumas: P(X ≥ k) suma la derecha.

▭

Gráfico de bastones

Cada valor un bastón de altura p(x). La forma dice dónde está la masa y dónde el riesgo.

X = suma de dos dados (discreta 2 a 12).
x23456789101112
formas12345654321
p(x).028.056.083.111.139.167.139.111.083.056.028

03 · Conteos típicos

Qué discreta aparece en cada simulador

Soporte finito

Dado, suma, 0/1

Valores acotados: caras, sumas, compra o no. Se enumeran completos y p(x) se verifica sumando 1.

Soporte abierto

Llegadas, intentos

0, 1, 2… sin tope teórico (Poisson, geométrica). Se trunca en la práctica donde la cola ya es despreciable.

Bernoulli
0/1 con P(1) = p. El átomo de «éxito o no» (tema 18).
Binomial
Éxitos en n intentos (tema 19). Soporte 0 a n.
Poisson
Eventos por unidad de tiempo/espacio (tema 21). Soporte 0, 1, 2…
Geométrica
Intentos hasta el primer éxito (tema 20). Cola infinita que decae.

04 · Ejemplos

Conteos que vas a simular

Cuenta X→Tabla p(x)→Colas y stock
  1. 1
    Llegadas por hora.

    X = 0, 1, 2… clientes. Define personal necesario por hora.

  2. 2
    Defectos por lote.

    X = piezas falladas en 50. Define si el lote se rechaza.

  3. 3
    Ventas del día.

    X = compras en 100 visitas. Binomial con p = conversión.

  4. 4
    Intentos hasta éxito.

    X = llamadas hasta cerrar. Geométrica: pocos cierran al primero.

  5. 5
    Ocupación.

    X = servidores ocupados de 4. Soporte 0 a 4, finito y enumerable.

05 · Representación en Python

Tablas y muestreo de conteos

La tabla es un dict; muestrear es random.choices con pesos. Contar el resultado verifica que la simulación respeta la tabla:

Python en tu navegador. Cambiá los pesos y mirá cómo se mueve el histograma mental.

import random
from collections import Counter
random.seed(12)

# X = clientes por hora: tabla valor -> p
pmf = {0: 0.1, 1: 0.25, 2: 0.35, 3: 0.2, 4: 0.1}
xs = random.choices(list(pmf), weights=list(pmf.values()), k=2000)
frec = Counter(xs)
for x in sorted(pmf):
    print(x, "teo:", pmf[x], "| sim:", round(frec[x]/len(xs), 3))

Consejo: con k = 200 la sim salta; con 20000 se pega a la tabla.

Binomial como suma de Bernoulli

import random
random.seed(3)

# X ~ Binomial(n=10, p=0.3): contar éxitos en 10 intentos
def binomial(n=10, p=0.3):
    return sum(1 for _ in range(n) if random.random() < p)

xs = [binomial() for _ in range(3000)]
print("media sim:", round(sum(xs)/len(xs), 2), "| teórica n·p:", 10*0.3)

06 · Exploración

Laboratorio: Binomial(n = 10, p)

Contamos éxitos en 10 intentos con prob. p por intento. Barras claras = p(x) exacta binomial; sólidas = frecuencia simulada. Mové p y mirá cómo la masa viaja de 0 a 10.

EXPERIMENTO 09

X ~ Binomial(10, p)

p(x) = C(10,x)·pˣ·(1−p)¹⁰⁻ˣ

Los resultados numéricos aparecen debajo.
Media sim (teo n·p)0,00
P̂(X ≥ k)0,000
P(X ≥ k) exacta0,000
Máx |f−p|0,000

Con N grande, los bastones sólidos calcan los claros.

11 bastones (0 a 10). Cada par compara probabilidad exacta y frecuencia simulada. La tabla inferior resume media y cola: centro y riesgo de la misma variable.

Preguntas para explorar

  1. Con p = 0,5, ¿qué forma tiene? ¿Y con p = 0,1?
  2. Con N = 100, ¿qué bastones se desvían más? ¿Por qué los raros saltan más?
  3. Si p = 0,3 y k = 8, ¿la cola es grande o chica? ¿Qué decisión tomarías con ese número?
Ver respuestas sugeridas
  1. Con 0,5 es simétrica centrada en 5; con 0,1 se aplasta contra 0 con cola derecha larga.
  2. Los de probabilidad chica: pocos casos, mucho ruido relativo. Los eventos raros exigen N grande.
  3. Chica (~0,05): pedir 8+ éxitos de 10 con p = 0,3 es exigirle mucho al azar. Para prometerlo hay que subir p o n.

07 · Comprensión

Confusiones frecuentes

«Discreta es lo mismo que finita»

No: Poisson y geométrica son discretas infinitas (0, 1, 2…). Finito es un caso particular, no la definición.

«p(x) es lo mismo que F(x)»

p(x) es puntual (bastón); F(x) acumula hasta x (escalera, tema 11). Una se suma por rangos para dar la otra.

«Si simulo conteos, no necesito la tabla»

La tabla verifica el simulador: si la frecuencia no calca p(x) con N grande, el muestreo está mal.

«Binomial es n veces la misma cuenta»

Es n Bernoulli independientes con igual p. Si p cambia o hay dependencia, ya no es binomial.

08 · Práctica guiada

Ejercicios con Python

Ejercicio 1: tabla que suma 1

Verificá que la tabla del laboratorio con p = 0,3 suma 1 calculando los 11 términos.

import math
p, n = 0.3, 10
pmf = [math.comb(n, x) * p**x * (1-p)**(n-x) for x in range(n+1)]
print("suma:", round(sum(pmf), 6))
print("P(X=3):", round(pmf[3], 4))
Ver solución razonada

Suma 1 (salvo redondeo). P(X = 3) ≈ 0,2668: el valor más probable con n = 10, p = 0,3. El pico está en n·p.

Ejercicio 2: cola derecha

Calculá P(X ≥ 8) exacta y verificala con 10000 réplicas (n = 10, p = 0,3).

import math, random
random.seed(19)
p, n, N = 0.3, 10, 10000
exacta = sum(math.comb(n, x)*p**x*(1-p)**(n-x) for x in range(8, 11))
sim = sum(1 for _ in range(N) if sum(random.random() < p for _ in range(n)) >= 8) / N
print("exacta:", round(exacta, 4), "| sim:", round(sim, 4))
Ver solución

Exacta ≈ 0,0016: evento raro. La sim con 10000 da 0 a 0,004: para colas así hacen falta N enormes o cálculo exacto.

Ejercicio 3: de tabla a decisión

Con 100 visitas y conversión 0,12, ¿P(vender 15 o más)? ¿Conviene prometer 15?

Ver una posible respuesta
import math
n, p, k = 100, 0.12, 15
print("P(X>=15):", round(sum(math.comb(n,x)*p**x*(1-p)**(n-x) for x in range(k, n+1)), 3))

Da ~0,2: prometer 15 se cumple 1 de cada 5 días. Para prometer con 95 % hay que bajar el umbral (tema 33).

09 · Síntesis

Ideas para recordar

  • Discreta: valores aislados con p(x), Σ p(x) = 1.
  • Las colas se calculan sumando bastones: P(X ≥ k) = Σ p(x).
  • En Python: dict de tabla + random.choices con pesos, o suma de Bernoulli.
  • La frecuencia con N grande debe calcar la tabla: es el test del muestreo.
  • Binomial(n, p) es el conteo modelo: n intentos, p por intento.

En el próximo tema mediremos lo continuo: variables aleatorias continuas.