01 · Punto de partida
Graficar primero, contar después
Los Temas 27–30 convierten la calidad en números. Pero el gráfico llega antes y a veces condena solo: los pares de RANDU dibujan diagonales, el juguete m = 16 dibuja 16 puntos, y un % viciado dibuja bandas. Un scatter de 30 segundos ahorra una tarde de estadística —y cuando el gráfico se ve bien, los tests confirman; cuando se ve mal, ni hace falta contar.
Este tema entrena ese ojo: tres gráficos, qué buscar en cada uno y cuándo desconfiar del propio ojo.
- ¿Qué gráfico revela diagonales, grillas y huecos?
- ¿Qué diferencia hay entre scatter de pares y lag plot?
- ¿Cuántos puntos N hacen falta para “ver”?
- ¿Cuándo el ojo engaña y manda el χ²?
02 · Definición
Tres gráficos, tres preguntas
Scatter pares
Puntos (u₂ₖ₋₁, u₂ₖ) en el cuadrado: ¿nube o diagonales? Es el Tema 30 sin contar.
Lag plot
Puntos (uₙ, uₙ₊₁) solapados en serie temporal: ¿el siguiente depende del actual? Gemelo del correlograma (Tema 28).
Histograma
Barras por décimos (Tema 29) a ojo: ¿parejas o con pico, pendiente, sierra? La forma diagnostica la causa.
| Gráfico | Sano | Enfermo típico |
|---|---|---|
| Scatter pares | Nube pareja | Diagonales, retícula gruesa, 16 puntos |
| Lag plot | Nube pareja | Curva o recta (dependencia funcional) |
| Histograma | Barras ≈ E | Pico, pendiente, sierra, huecos |
03 · Técnica visual
N, escala y trampa del ojo
Con N = 100 todo parece nube (poca tinta) y con N = 100000 hasta el sano muestra “rayas” por saturación: la zona útil es P = 300–2000 puntos en ejes [0,1]×[0,1] sin deformar (cuadrado real, no estirado).
- Ejes cuadrados
- Un scatter estirado fabrica diagonales falsas o esconde las reales. Relación 1:1 siempre; el laboratorio la garantiza.
- Transparencia
- Con P grande los puntos se apilan: alfa ~0,5 deja ver densidad (núcleos oscuros = acumulación real, no tinta).
- Ojo + cuenta
- El ojo propone (“veo 5 diagonales”) y el χ² dispone (Tema 30): ver sin contar es opinar; contar sin ver es ciego a la causa.
Bien graficado
Cuadrado, alfa, P medio
Estructura real salta; nube real se ve nube. El gráfico orienta qué test correr.
Mal graficado
Ejes deformados, P extremo
Falsas alarmas o falsa calma: el gráfico miente por construcción, no por datos.
04 · Ejemplos
Tres firmas visuales
- 1Sano.
Nube sin direcciones: ni diagonales ni grilla ni bordes vacíos. Pasa series y frecuencia.
- 2Diagonal LCG
y = (5x+c) mod 1.5 rectas paralelas: dependencia lineal a simple vista. χ² de series ≈ cientos.
- 3Juguete m = 16.
Solo 16 posiciones posibles: el cuadrado es un tablero de puntos aislados, no una nube.
05 · Coordenadas en Python
Preparar los tres gráficos sin librerías
Generamos pares no solapados, pares lag y el histograma en décimos con puro estándar: la salida alimenta cualquier graficador (o el laboratorio de abajo).
Python en tu navegador. Contá cuántos pares caen bajo la diagonal: en un sano ≈ la mitad.
import random
rng = random.Random(31)
us = [rng.random() for _ in range(2000)]
pares = [(us[i], us[i + 1]) for i in range(0, len(us) - 1, 2)]
lag = [(us[i], us[i + 1]) for i in range(len(us) - 1)]
bajo = sum(1 for x, y in pares if y < x)
print("pares:", len(pares), "bajo diagonal:", bajo)
print("primeros 5:", [(round(x, 4), round(y, 4)) for x, y in pares[:5]])
~1000 pares, ~500 bajo la diagonal: simetría de nube sana.
Histograma a ojo
import random
rng = random.Random(31)
us = [rng.random() for _ in range(2000)]
obs = [0] * 10
for u in us:
obs[min(9, int(u * 10))] += 1
for i, o in enumerate(obs):
print(f"{i / 10:.1f}-{(i + 1) / 10:.1f}: {'#' * (o // 10)} ({o})")
06 · Exploración
Laboratorio: tres vistas, tres fuentes
Elegí vista (scatter, lag, histograma) y fuente (nube, diagonal, juguete). La diagonal se revela en scatter/lag y se esconde en histograma: la lección del Tema 26 en vivo.
Mirar antes de contar
nube vs estructura
Nube sana en scatter: sin direcciones.
La diagonal es invisible en el histograma 1D: pasa frecuencia y cae en series. Por eso la batería es multidimensional.
Preguntas para explorar
- Con diagonal en histograma: ¿se ve sana? ¿Y en scatter?
- Con juguete en scatter: ¿nube o tablero? ¿Cuántos puntos distintos hay como máximo?
- Con sano y 1500 puntos: ¿aparecen “rayas” por saturación? ¿Cómo las distinguís de diagonales reales?
Ver respuestas sugeridas
- Histograma sano (marginal intacta), scatter con 5 diagonales: la dependencia vive en el orden, no en la media.
- Tablero de 16 posiciones: con P grande se repiten los mismos puntos, más oscuros por apilamiento.
- Las de saturación son difusas y cambian con la semilla; las reales son rectas nítidas y estables. La duda la resuelve series (Tema 30).
07 · Comprensión
Confusiones frecuentes
«El histograma bien = generador bien»
La diagonal LCG da histograma perfecto y scatter desastroso: lo marginal no ve el orden. Hacen falta pares.
«Veo un hueco, está roto»
Con 600 puntos en 100 celdas lo esperado es ~6 huecos de azar. Hueco sistemático (siempre la misma zona) sí condena.
«Más puntos siempre se ve mejor»
Pasados ~2000 la saturación tapa: todo parece banda sólida. Para ver estructura, P = 300–1500 con alfa.
«Si se ve mal, lo descarto sin test»
Casi: lo descartás, pero el test documenta por qué (χ², celdas, lags). El informe necesita el número, no solo la captura.
08 · Práctica guiada
Ejercicios con Python
Ejercicio 1: simetría de nube
Con 2000 de random, contá pares bajo la diagonal: debe dar ≈ 50 %.
import random
rng = random.Random(12)
us = [rng.random() for _ in range(2000)]
pares = [(us[i], us[i + 1]) for i in range(0, len(us) - 1, 2)]
print(len(pares), sum(1 for x, y in pares if y < x))
Ver solución razonada
≈ 1000 pares con ≈ 500 bajo la diagonal (±30): simetría de nube. Una diagonal y = x daría 0 o 1000.
Ejercicio 2: la diagonal en números
Generá la diagonal y = (5x + 0,1) mod 1 y contá cuántos pares caen en la franja |y − x| < 0,05 frente al 10 % esperado.
import random
rng = random.Random(12)
xs = [rng.random() for _ in range(1000)]
pares = [(x, (5 * x + 0.1) % 1.0) for x in xs]
print(sum(1 for x, y in pares if abs(y - x) < 0.05))
Ver solución
≈ 100 (10 %) también: la franja diagonal no es la de la dependencia. La estructura se ve en el scatter completo, no en una franja ingenua: por eso el test es la grilla k×k (Tema 30).
Ejercicio 3: tablero del juguete
Mostrá que el juguete m = 16 solo ocupa 16 posiciones del cuadrado.
Ver una posible respuesta
x = 7
seq = []
for _ in range(2000):
x = (5 * x + 3) % 16
seq.append(x / 16)
pares = [(seq[i], seq[i + 1]) for i in range(0, len(seq) - 1, 2)]
print(len(set(pares)))
16 posiciones distintas como máximo: el “scatter” es un tablero fijo. Series lo condena con χ² ≈ miles.
09 · Síntesis
Ideas para recordar
- Tríptico: scatter pares, lag plot, histograma; P = 300–1500, ejes 1:1.
- Sano = nube; diagonales/retículas/bandas = dependencia o resolución.
- El histograma no ve el orden: la diagonal pasa 1D y cae en 2D.
- El ojo orienta, el χ² decide; saturación y ejes mienten.
- Rutina de 1 minuto ante secuencia nueva: graficar, luego testear.
En el próximo tema medimos dependencias con un número: correlación entre valores generados.