Variables del EDA — SPAB (estado_turismo)

Fecha: 2026-09-18
Fuente: spab-retrieval/src/lib/schema.ts, data/base/observaciones.csv, data/modelos/, scripts/clustering.py

Variables tal como salen del EDA. Nada inventado: conteos verificados contra la base.


1. Unidad canónica: Observacion (schema.ts)

Cada fila de data/base/observaciones.csv (1,744 obs · 11 destinos):

VariableTipoDescripción
destinostringslug (tulum, bacalar, …)
periodostring YYYY-MMmes
metricaenumver §2
valornumbervalor de la métrica
fuenteenumver §3
modoenumhttp | file (cómo llegó el dato)
nint | nullmuestras que respaldan; baja n = baja confianza
capturadoISO stringtimestamp de captura

Regla: si un conector no puede llenar un campo → null. Nunca inventa.


2. Métricas (16 definidas; 11 con datos)

Con datos (fuente × métrica reales):

MétricaFuenteFilasRango/sentido
precio_hospedajebooking10MXN/noche, mediana
ratinggoogleplaces100–5
reviews_conteogoogleplaces10conteo
menciones_carogoogleplaces100–1
ocupacion_hoteleradatatur (383), insideairbnb (1)3840–1
llegadas_turistasdatatur1006conteo
cuartos_ofertacompendio99cuartos del estado
establecimientos_ofertacompendio99establecimientos del estado
vistas_wikipediawikipedia110conteo mensual
anfitriones_multiinsideairbnb10–1
llegadas_vueloopensky4conteo (ventana ~2 días)

Definidas sin datos (huecos): asientos_domesticos, asientos_totales, delitos_100k, interes_busqueda, severidad_sargazo.


3. Fuentes (FuenteId) — 11

datatur, aero, sesnsp, insideairbnb, googleplaces, trends, sargazo, wikipedia, opensky, booking, compendio

Canónica por métrica (clustering.py): ocupacion_hotelera → datatur, precio_hospedaje → booking.


4. Variables de destino (destinos.json)

VariableNotas
slug, nombre, estadoidentidad
lat, loncoordenadas
claves.dataturnombre en DataTur
claves.aero_iata, claves.aero_icaoaeropuerto
claves.sesnsp_cve_munclave municipal
claves.insideairbnbslug Airbnb
claves.trends_terminotérmino Trends
claves.wikipediaartículo

5. Features de clustering (scripts/clustering.py)

FEATURES_V1 = [precio_hospedaje, rating, reviews_conteo, menciones_caro, vistas_wikipedia]
FEATURES_V2 = FEATURES_V1 + [ocupacion_hotelera, delitos_100k]
LOG_FEATURES = {reviews_conteo, vistas_wikipedia, llegadas_turistas}
MAX_FALTANTES = 1     # destino con ≥2 huecos sale
KS = range(2, 7)
SEMILLA = 20260914
  • cuartos_oferta no entra (es estatal, no del destino).
  • Salida: cluster, etiqueta, silueta, ward, ocupacion_media, amplitud, mes_pico, mes_valle.
  • Diagnóstico por k: inercia, silueta, davies_bouldin, estabilidad_ari.

6. Variables estacionales (k=3, silueta 0.409, ARI 1.0)

Fuente datatur · ocupacion_hotelera · mín 24 meses · 12 meses como features. Salida (asignacion_estacional.csv): destino, cluster, etiqueta, ocupacion_media, amplitud, mes_pico, mes_valle, silueta, ward. perfil_estacional.csv: índice ocupación mes/media anual (ene…dic). ocupacion_por_mes.csv: ocupación media por mes.


7. Burbuja_Index (derivadas, panel.py)

precio_rel    = precio    / mediana(precio)
rating_rel    = rating    / mediana(rating)
ocupacion_rel = ocupacion / mediana(ocupacion)
base          = precio_rel / (rating_rel × ocupacion_rel)
indice        = base × (1 + 1.5 × menciones_caro)
corte         = estable <1.15 · inflación <1.45 · tensión <1.85 · crítico ≥1.85

8. Variables de lugares (data/base/lugares.csv, 558 filas)

destino, lugar, giro (hoteles/restaurantes/atracciones/tours), place_id, lat, lon, rating, n_resenas, capturado.

Usadas para las rutas (generar-rutas.mjs) → giro→categoria, vol=n_resenas/10000, price=hoteles?3:2.


9. Variables de corpus (sentimiento, panel.py)

Por documento: fuente, destino, texto, score ([-1,1]), etiqueta (pos/neu/neg), fecha, likes, lugar, rating.
Léxicos POS/NEG ES+EN → señal gruesa. Fuentes: youtube_*, reddit, x_qroo, prensa_qroo, resenas_maps.


10. Huecos declarados en el propio panel

  • delitos_100k (SESNSP) y llegadas_vuelo (OpenSky): los huecos grandes.
  • OpenSky sin cobertura (404 ≠ 0): tulum, oaxaca, puerto-escondido, acapulco, puerto-vallarta.
  • Sin aeropuerto propio: bacalar, playa-del-carmen, san-miguel-de-allende.
  • bacalar sin ocupación DataTur (no imputado).
  • tulum = proxy “Riviera Maya” (n=0).