01 · Punto de partida
Una sola función describe todo el azar
Masa, densidad, tabla, histograma: cada notación muestra una cara. Pero hay una que las unifica a todas y que además genera: la acumulada F(x) = P(X ≤ x). Si conocés F, conocés cualquier probabilidad por resta y conocés el generador por inversión.
En los Temas 2 y 3 ya la usamos sin nombrarla: acumuladas Fk para discretas, F(x) = (x−a)/(b−a) para la uniforme, F(x) = 1 − e^(−λx) para la exponencial. Ahora la estudiamos de frente.
- ¿Qué propiedades cumple toda F, discreta o continua?
- ¿Cómo se lee P(a < X ≤ b) directamente del gráfico?
- ¿Qué es el cuantil F⁻¹(u) cuando F tiene saltos o planos?
- ¿Por qué F(X) es uniforme y U invertida por F es X?
02 · Definición
Propiedades que toda F cumple
Sea F(x) = P(X ≤ x). Entonces, sin importar si X es discreta, continua o mezcla:
Monótona 0 → 1
No decrece nunca, tiende a 0 a la izquierda y a 1 a la derecha. La altura es probabilidad acumulada.
Salto = masa
En discretas cada salto vertical mide pk. En continuas no hay saltos: la pendiente es f(x).
Doble lectura
Horizontal: dado x, leo u = F(x) (probabilidad). Vertical: dado u, leo x = Q(u) (cuantil). Generar es leer en vertical.
Y el teorema que sostiene el curso (transformada integral de probabilidad): si X ~ F continua, entonces F(X) ~ U(0,1); al revés, si U ~ U(0,1), entonces Q(U) ~ F. Por eso la acumulada es el puente en ambas direcciones.
| X ~ | F(x) | Q(u) = F⁻¹(u) |
|---|---|---|
| U(a,b) | (x−a)/(b−a) en [a,b] | a + (b−a)·u |
| Exp(λ) | 1 − e^(−λx), x ≥ 0 | −ln(1−u)/λ |
| Bernoulli(p) | 0 si x<0 · 1−p si 0≤x<1 · 1 si x≥1 | 0 si u ≤ 1−p, 1 si no |
03 · Anatomía
Escaleras, curvas y mixtas
- Discreta: escalera
- Saltos pk en cada xk, plana entre saltos. El cuantil Q(u) es constante por tramos: devuelve el escalón donde cae u. (Tema 2)
- Continua: rampa lisa
- Estrictamente creciente donde f > 0, plana donde f = 0. Si es invertible, Q = F⁻¹ clásica; si tiene planos, Q salta (inversa generalizada).
- Mixta / empírica
- Masa en puntos + tramos continuos, o escalera empírica de datos con saltos 1/n. Se invierte igual: primer x con F(x) ≥ u. (Temas 34–35)
- Cola S(x) = 1 − F(x)
- P(X > x). En fiabilidad y riesgo se trabaja con S. Generar por cola es lo mismo: u alto ↔ x grande.
Leer en horizontal
Probabilidad
Dado x = 2, F(2) = 0,86 significa “86 % de la masa está ≤ 2”. Sirve para validar: la fracción muestral ≤ 2 debe rondar 0,86.
Leer en vertical
Generación
Dado u = 0,86, Q(0,86) = 2 significa “el percentil 86 vale 2”. Repetir con u aleatorios reproduce F completa.
04 · Para qué sirve F en cada método
La misma F, cinco usos
- 1Inversión analítica (Temas 5–6).
Si despejás Q en fórmula cerrada, el generador es una línea:
-log(1-u)/lam. - 2Inversión numérica (Tema 7).
Si solo podés evaluar F, resolvemos F(x) = u por bisección. F monótona garantiza convergencia.
- 3Rechazo (Temas 8–10).
No usa F sino f y envolvente g. Pero se valida comparando histogramas contra f = F′.
- 4Empíricas (Temas 34–35).
La F empírica F̂(x) = #{xᵢ ≤ x}/n se invierte por ordenamiento: remuestrear es invertir F̂.
- 5Validación (Temas 36–38).
CDF empírica vs. teórica y Kolmogorov-Smirnov miden la distancia máxima entre curvas F.
05 · Representación en Python
Evaluar F y su cuantil con la misma tabla
Para discretas finitas, F y Q comparten las acumuladas. Para continuas con fórmula, F y Q son dos funciones inversas. Este bloque lo muestra en ambos mundos.
Python en tu navegador. Cambiá x y u y verificá que Q(F(x)) ≈ x y F(Q(u)) ≈ u.
import bisect
import math
# Discreta: dado cargado.
valores = [1, 2, 3, 4, 5, 6]
probs = [0.10, 0.20, 0.30, 0.25, 0.10, 0.05]
acum = []
s = 0.0
for p in probs:
s += p
acum.append(s)
acum[-1] = 1.0
def F_discreta(x):
# P(X <= x): suma de masas con valor <= x.
return sum(p for v, p in zip(valores, probs) if v <= x)
def Q_discreta(u):
return valores[bisect.bisect_left(acum, u)]
print("F(3) =", F_discreta(3), " Q(0.73) =", Q_discreta(0.73))
# Continua: exponencial lam=1.5.
lam = 1.5
def F_exp(x):
return 0.0 if x < 0 else 1 - math.exp(-lam * x)
def Q_exp(u):
return -math.log(1 - u) / lam
x, u = 1.0, 0.73
print("F_exp(1) =", round(F_exp(x), 3))
print("Q_exp(0.73) =", round(Q_exp(u), 3))
print("ida y vuelta:", round(Q_exp(F_exp(x)), 3), round(F_exp(Q_exp(u)), 3))
La ida y vuelta debe devolver ≈ 1,0 y ≈ 0,73. En la discreta no hay ida y vuelta lisa: Q(F(3)) = 3 pero F(Q(0,73)) = 0,85, el salto del 4.
06 · Exploración
Laboratorio: leer F en horizontal y vertical
Elegí la distribución, mové λ (exponencial) o el punto x. El punto marca (x, F(x)): la línea horizontal lee probabilidad, la vertical lee cuantil. Verificá que son inversas.
La acumulada como puente
u = F(x) · x = Q(u)
Con λ 1,5 y x 1, F = 0,777 y el cuantil vuelve a 1.
Curva F de 0 a 1 en x ∈ [0,6]. Las guías punteadas muestran la doble lectura probabilidad ↔ cuantil.
Preguntas para explorar
- En exponencial λ = 1,5 con x = 1: ¿cuánto vale F y cuánto la cola? ¿Suman 1?
- Cambiá a uniforme U(0,4) con x = 1: ¿cuánto da F? ¿Por qué es lineal?
- Subí x a 6 en la exponencial: ¿a qué tiende F? ¿Y la cola?
Ver respuestas sugeridas
- F ≈ 0,777 y cola ≈ 0,223; suman 1 por complemento.
- 0,25 = 1/4: F(x) = x/4, recta de pendiente 1/4 = densidad.
- F → 1 y la cola → 0: casi toda la masa ya quedó acumulada.
07 · Comprensión
Confusiones frecuentes
«F es lo mismo que f»
f es altura/área local, F es acumulado 0→1. f puede superar 1; F nunca. Se conectan por F′ = f, no por igualdad.
«P(X = x) = F(x)»
En el continuo P(X = x) = 0 y F(x) = P(X ≤ x). En discretas P(X = x) es el salto, no la altura acumulada.
«Toda F se invierte despejando»
Solo si hay fórmula cerrada. La normal no tiene inversa elemental: se invierte numéricamente o se evita con Box-Muller/rechazo.
«La empírica no es una F»
Sí lo es: escalera con saltos 1/n que sube de 0 a 1. Invertirla es remuestrear (bootstrap). Ver Temas 34–35.
08 · Práctica guiada
Ejercicios con Python
Ejercicio 1: intervalo por resta
Exponencial λ = 2: calculá P(0,5 < X ≤ 1,5) como F(1,5) − F(0,5) y validá con 20000 muestras.
import random
import math
lam = 2.0
def F(x):
return 0.0 if x < 0 else 1 - math.exp(-lam * x)
print("teórica:", round(F(1.5) - F(0.5), 3))
random.seed(21)
N = 20000
m = [-math.log(1 - random.random()) / lam for _ in range(N)]
print("muestral:", round(sum(1 for x in m if 0.5 < x <= 1.5) / N, 3))
Ver solución razonada
Teórica ≈ 0,318. La muestral debe caer 0,31–0,33. Si contaste < en vez de ≤ no cambia nada aquí (continuo), pero en discretas sí.
Ejercicio 2: cuantil a mano
Sin ejecutar: U(0,4), ¿cuánto vale Q(0,25)? ¿Y Q(0,73)? Verificá con código.
def Q_unif(u, a=0, b=4):
return a + (b - a) * u
print(Q_unif(0.25), Q_unif(0.73))
Ver solución
1,0 y 2,92. Lineal: el 25 % de 4 es 1, el 73 % es 2,92.
Ejercicio 3: F empírica invierte sola
Con datos [2,5,2,7,2], construí F̂ y remuestreá 5000 valores invirtiéndola (elegir dato al azar). Compará la media.
Ver una posible respuesta
import random
random.seed(22)
datos = [2, 5, 2, 7, 2]
# Invertir la empírica = elegir índice uniforme.
remuestra = [random.choice(datos) for _ in range(5000)]
print("media datos:", sum(datos) / len(datos))
print("media remuestra:", round(sum(remuestra) / len(remuestra), 3))
Media datos = 3,6; remuestra ≈ 3,6. random.choice es exactamente Q̂(U) sobre la escalera empírica.
09 · Síntesis
Ideas para recordar
- F(x) = P(X ≤ x) sube de 0 a 1 y da cualquier intervalo por resta.
- Saltos = masa discreta; pendiente = densidad continua.
- Q(u) = mín{x : F(x) ≥ u} es la inversa universal, lisa o escalonada.
- F(X) ~ U y Q(U) ~ F: el puente en ambas direcciones.
- El par (F, Q) se implementa y testea junto con ida y vuelta.
En el próximo tema usaremos ese puente como método estrella: la transformada inversa.