Manual de uso
Niebla para fotografía: índice físico y fusión bayesiana multimodelo.
1. Qué es y qué no es
Es una página HTML autónoma que consulta la API pública de Open‑Meteo y estima el riesgo de niebla o bruma en las próximas horas y en la ventana del próximo amanecer, pensada para decidir si merece la pena salir a fotografiar. No es un modelo de capa límite ni sustituye al aviso oficial: es una herramienta de favorabilidad, con una segunda capa bayesiana que aprende de tus observaciones locales.
Tres pestañas. La primera, “Índice de niebla”, usa un único modelo numérico y muestra el índice hora a hora con toda la física visible. La segunda, “Fusión bayesiana”, descarga varios modelos en paralelo, convierte cada uno en una probabilidad y los combina en un posterior, ponderando cada modelo según lo bien que ha acertado en tu registro. La tercera, “Calibración”, compara el histórico de una estación METAR con lo que cada fuente preveía la víspera y da a la fusión un punto de partida medido: sesgo, curva de probabilidad y peso de cada fuente.
2. Instalación
No hay nada que instalar. Tres formas de usarla:
Local. Guarda niebla.html y manual-niebla.html en una carpeta y abre niebla.html con el navegador. Funciona con doble clic (origen file://).
GitHub Pages. Sube los dos archivos a un repositorio, activa Pages en Settings → Pages (rama main, carpeta raíz) y accede a https://usuario.github.io/repositorio/. El archivo se llama niebla.html precisamente para que sea la página de entrada.
Móvil. Abre la URL de Pages en el navegador del teléfono y añádela a la pantalla de inicio. El botón “Usar mi posición” pide permiso de geolocalización; en Pages funciona porque el sitio se sirve por HTTPS.
3. Controles comunes
| Control | Función |
|---|---|
| Latitud, Longitud | Punto para el que se pide la previsión. Se puede escribir a mano (formato decimal, longitud oeste negativa) o rellenar con “Usar mi posición”. |
| Entorno | Costero activa el término de niebla de advección y descarga la temperatura superficial del mar (SST). Interior lo desactiva y ahorra una petición. |
| Acimut hacia el mar | Solo aparece en modo Costero. Rumbo en grados desde el punto hacia el mar abierto. No entra en el índice: sirve para que la ficha etiquete cada hora con viento “del mar” o “de tierra”, contando como del mar la dirección que cae a menos de 60° del acimut. Déjalo vacío si no lo sabes. |
| ES / EN | Cambia el idioma de la interfaz y del manual. La elección se recuerda. |
| Manual | Abre este documento. |
4. Pestaña 1: índice de niebla
Selector de modelo
Automático, la opción por defecto, elige para las coordenadas escritas la fuente de menor escala efectiva: malla fina y punto alejado del borde del dominio (la definición está en “Fuentes en este punto”, en la pestaña 2). En A Coruña es HARMONIE‑AROME de DMI, de 2 km. Si la fuente elegida no responde, el automático pasa a la siguiente y la línea de estado lo indica. AROME HD tiene malla de 1.3 km, pero su borde oeste queda a unos 100 km y a esa distancia la solución todavía es en buena parte la del modelo global que lo alimenta. DMI llega a 60 h y el servidor lo prolonga con IFS de 9 km; AROME llega a 48 h y lo completa la ficha. La línea de estado muestra el modelo efectivo, su paso de malla, la distancia entre el punto y la celda que devuelve la API, la distancia al borde del dominio en los modelos de área limitada y desde qué hora entra el relleno. Las demás opciones fuerzan una fuente concreta y sirven para comparar.
“Selección de Open‑Meteo (best match)” es la mezcla que decide el servidor. Solo usa AROME entre 6.18° O y 8.35° E, y HARMONIE al norte de 44° N, de modo que en Galicia equivale a ICON‑EU, de 7 km: no es el modelo más fino disponible para el punto.
Tarjetas
Próximas 6 horas: máximo del índice en ese intervalo y a qué hora. Amanecer: máximo en la ventana de 2.5 h antes a 1.5 h después de la salida del sol, que es cuando la niebla de radiación alcanza su desarrollo y cuando interesa estar en el sitio. Mínima depresión del punto de rocío: el valor de ΔT = T − Td más bajo previsto esta noche, con T, Td, viento, nubes, SST y presión en ese instante. Es el dato físico más directo: si no baja de 1 °C, difícilmente habrá niebla de radiación.
Ventana fotográfica
Dentro de la tarjeta del amanecer, la línea “Ventana fotográfica” contesta a la pregunta práctica: de qué hora a qué hora hay algo que fotografiar. Busca el máximo del índice entre el amanecer −4 h y +6 h y recorta el tramo continuo que se mantiene por encima de 50 puntos, interpolando entre horas en los dos bordes, así que devuelve un intervalo con minutos y una duración. Si el pico llega a 75 la etiqueta es “niebla plena”; entre 50 y 74, “solo bruma”; si no se pasa de 50 en ninguna hora, no hay niebla que defender. Avisa además cuando el tramo dura menos de una hora y cuando el máximo cae más de media hora después del amanecer. La misma tarjeta da la dirección del viento (y si es del mar o de tierra, cuando has puesto el acimut), enlaza con la ficha de luz natural para la hora dorada y recuerda que el tramo posterior al amanecer descansa sobre el factor heurístico 0.85, la parte menos firme del cálculo.
Comparar con otro sitio (A o B)
El botón “Comparar con otro sitio” abre un segundo juego de latitud, longitud y entorno, y descarga el sitio B con el mismo modelo y la misma tubería que el A. La sección “A o B” pone las dos tarjetas del próximo amanecer una junto a otra, dibuja las dos curvas del índice y da un veredicto: ve a A, ve a B, o empate práctico si la diferencia es menor de 8 puntos, en cuyo caso deciden el acceso, la composición y la hora de salida. La comparación vive solo en esta pestaña: la fusión bayesiana y el registro de observaciones siguen siendo de un único emplazamiento, el de las coordenadas de arriba, porque mezclar dos sitios estropearía el aprendizaje.
Próximas mañanas
Una fila por amanecer, hasta siete días, con el máximo del índice dentro de la ventana −2.5 h/+1.5 h, el veredicto, la mínima depresión del punto de rocío de esa noche y el viento, las nubes medias y altas y la visibilidad de la hora del máximo. La última columna es la confianza según el plazo, y añade “IFS HRES 9 km” en las mañanas que ya no calcula el modelo fino sino el de relleno (con HARMONIE el cambio lo hace el servidor hacia las 54 h y la marca es aproximada): los dos primeros amaneceres son la previsión de verdad, el tercero y el cuarto son orientativos y del quinto en adelante es una tendencia, no una previsión. Debajo, una frase dice cuál es la mejor mañana de la semana o que ninguna pasa de 50. Es la única vista que llega a siete días; la banda, las gráficas y la tabla horaria siguen cubriendo 48 horas.
Banda horaria
Una barra por hora, 48 horas. Altura = índice. Fondo gris = noche. Hora en rojo = amanecer. Color ámbar = bruma posible (50 a 74), rojizo = niebla probable (≥ 75). Al pasar el ratón se ven las señales activas. Las horas que caen dentro de la ventana fotográfica quedan recuadradas en ámbar.
De qué se compone el índice
Una barra apilada por hora con los puntos que aporta cada término, en el mismo orden en que se calculan; la lluvia se dibuja hacia abajo porque resta. La marca negra corta al valor final del índice, ya con el factor diurno aplicado y saturado a 100, y una marca gris en lo alto señala las horas en que la suma bruta se pasaba de 100. Sirve para ver qué término limita cada hora: si la barra se queda corta por el segmento de nubes, el freno es la nubosidad media y alta y no la humedad; si el segmento de ΔT es alto y el total sigue bajo, el freno es el viento. El recuadro ámbar marca la ventana fotográfica.
Gráfica de convergencia
T y Td en °C sobre el eje izquierdo; viento en km/h sobre el derecho. Las franjas rosadas marcan las horas con ΔT < 2 °C (más intensas si < 1 °C). La línea discontinua roja es el amanecer. La imagen que buscas: T y Td acercándose durante la noche, viento por debajo de 10 km/h y fondo gris sin nubes. Al pie, una barra morada marca las horas con visibilidad por debajo de 2 km, más saturada por debajo de 1 km y más tenue cuando la visibilidad es estimada porque el modelo no la publica.
Qué vas a ver: contraste, distancia y focal
Una calculadora de contraste por visibilidad, para saber qué encuadre aguanta la niebla que se espera. Por la ley de Koschmieder, un objeto oscuro sobre el fondo del cielo conserva un contraste C/C₀ = exp(−3.912·d/V), de donde el 20 % de contraste queda a 0.41·V y el 5 % a 0.77·V. Los dos deslizadores recorren la visibilidad de 0.2 a 10 km y la distancia al sujeto de 20 m a 3 km, y el selector cubre de 28 a 135 mm. Las tarjetas dan el contraste residual con su lectura (volumen y textura, plano, apenas insinuado, desaparecido) y el campo horizontal, 36·d/f en formato 24×36: a 200 m un 43 mm abarca 167 m y un 135 mm, 53 m. Debajo, la curva completa y una tabla a 50, 150, 500 y 1000 m. La visibilidad arranca en la que el modelo da para el máximo del amanecer, o en un escenario supuesto a partir del índice si ese modelo no publica visibilidad; “Volver a la previsión” deshace los ajustes a mano.
Tabla horaria
Todas las variables usadas más dirección del viento (con la etiqueta del mar o de tierra si has puesto el acimut), nubes bajas, SST y presión. La columna “Vis km” es la visibilidad que pronostica el propio modelo o, con ~ delante, la estimada cuando el modelo no la publica: es su diagnóstico más directo de niebla, pero también la variable menos fiable de Open‑Meteo, así que léela como un escenario y no como una medida. Por debajo de 3 km apoya al resto de señales; por sí sola no decide, y de ahí que pese como mucho 20 puntos frente a los 40 de ΔT.
Fórmula del índice
| Término | Puntos | Justificación |
|---|---|---|
| ΔT = T − Td | 40 si ≤ 0.5 °C; lineal a 0 en 4 °C | Saturación. Condición necesaria. |
| Viento 10 m | <2: 14 · 2–8: 20 · 8–15: 8 · 15–20: 3 · >20: 0 | Niebla de radiación: algo de mezcla turbulenta la profundiza; calma absoluta da rocío; viento fuerte la impide. |
| Nubosidad sobre la capa (medias y altas) | <25 %: 20 · 25–60 %: 8 · >60 %: 0 (mitad de día) | Cielo despejado por encima = enfriamiento radiativo del suelo. Se usa máx(medias, 0.6·altas), no el total: la nubosidad baja de un modelo suele ser la propia niebla y no debe penalizar. Solo cuenta como estratos (y penaliza) si hay más de un 70 % de nubes bajas y la visibilidad, prevista o estimada, supera 5 km: nubes bajas sobre una superficie sin saturar. Si la fuente no desglosa capas, como los ensembles, solo se conoce la nubosidad total: por debajo del 25 % puntúa 20 y en otro caso 8, valor neutro, porque una cobertura total alta puede ser la propia niebla. |
| Visibilidad | <1 km: 20 · <3 km: 10 · <6 km: 4; al 60 % si es estimada | Diagnóstico directo del modelo cuando lo publica (ICON‑EU, IFS 9 km, UKMO, GFS, HARMONIE). AROME, ARPEGE y los ensembles ICON no lo publican: se estima entonces con el diagnóstico FSL, V = 6000·(T − Td)/HR^1.75 en millas, se marca con ~ y puntúa al 60 % (12, 6 y 2.4 puntos), porque no confirma nada que ΔT y HR no digan ya. Hasta la versión anterior esas fuentes recibían 5 puntos fijos, lo que las dejaba 15 puntos por debajo en las noches de niebla y les daba 5 de más en las noches secas. |
| Persistencia | +2 por hora nocturna previa consecutiva con ΔT < 1.5 °C y viento < 12 km/h, máximo +8 | La niebla necesita horas de enfriamiento: una saturación mantenida desde medianoche vale más que un instante a las 06:00. |
| HR ≥ 97 % | +10 | Redundante con ΔT pero robusto a redondeos. |
| Lluvia > 0.5 mm | −15 | Precipitación activa suele ir con nubes y viento. |
| Advección (costero) | hasta +30 si Td − SST > 0 y viento 8–30 km/h | Aire húmedo sobre mar más frío se enfría hasta saturar. No necesita calma ni cielo despejado. |
| Día | × 0.65; × 0.85 en las dos horas siguientes al amanecer | La radiación solar disipa la capa, pero tarda; justo después del amanecer la niebla suele seguir y es el mejor momento fotográfico. |
5. Pestaña 2: fusión bayesiana
Selección de modelos
Cada casilla es un modelo. Se descargan en paralelo con un límite de 12 s cada uno; los que no llegan a tiempo se descartan y se indica “timeout”. Tras cada cálculo aparece el tiempo de respuesta de cada modelo. Si alguno es sistemáticamente lento en tu conexión, desmárcalo: la selección se recuerda. Por defecto están activos AROME/ARPEGE, HARMONIE DMI, ICON, ECMWF IFS 9 km, UKMO, GFS y el ensemble ICON EPS.
Fuentes en este punto
Muchos identificadores de Open‑Meteo son mezclas de modelos, y cuál de ellos responde depende de las coordenadas. La tabla “Fuentes en este punto” resuelve esa mezcla con las definiciones de rejilla de Open‑Meteo y con lo que devuelve cada petición. Para 43.36° N, 8.41° O (A Coruña) el resultado es este:
| Fuente | Modelo efectivo | Malla | Observaciones |
|---|---|---|---|
| AROME/ARPEGE | AROME HD | 1.3 km | Horizonte de 48 h. No publica visibilidad. El borde oeste del dominio nativo queda a unos 100 km (a unos 20 km de Fisterra), lo que deja su escala efectiva en 6.3 km. Es una estimación con ±50 km de incertidumbre. |
| HARMONIE DMI | HARMONIE‑AROME (DINI) | 2 km | Horizonte de 60 h. Publica visibilidad y nubes por capas. El borde sur del dominio queda a 230 km y el oeste a unos 1500 km. |
| HARMONIE KNMI | HARMONIE‑AROME Europa | 5.5 km | Desmarcada por defecto. El borde sur queda a 218 km. Su dominio coincide con el de DMI (dominio común UWC‑West): con toda probabilidad es la misma integración remuestreada a 5.5 km, así que no conviene marcar las dos. |
| ICON | ICON‑EU | 7 km | ICON‑D2, de 2 km, empieza en 3.94° O y no llega a Galicia. |
| ECMWF IFS 9 km | IFS HRES | 9 km | Paso horario, punto de rocío y visibilidad nativos. Sustituye a IFS 0.25°, que a esta latitud son celdas de unos 28 × 20 km con paso de 3 h y sin visibilidad. |
| UKMO | UKMO global | 10 km | El modelo UKV de 2 km solo cubre las islas británicas y su entorno. |
| GFS | GFS 0.11° | 13 km | Publica visibilidad y nubes por capas. |
| GEM | GEM global | 15 km | Desmarcada por defecto. No publica visibilidad. |
| ICON EPS | ICON‑EU‑EPS | 13 km | 40 miembros. Solo nubosidad total y sin visibilidad. |
Celda a km es la distancia entre tu punto y el centro de la celda que devuelve la API: en costa Open‑Meteo busca una celda de tierra, y en una malla gruesa esa celda puede quedar varios kilómetros tierra adentro. Borde km es la distancia al límite del dominio en los modelos de área limitada: cerca del borde la solución hereda en buena parte la del modelo global que los alimenta, porque el aire que entra no ha recorrido dentro del dominio la distancia necesaria para desarrollar estructura de escala fina. Galicia está en la zona exterior tanto de AROME como de HARMONIE, pero no por igual: con flujo atlántico del oeste o del noroeste, el habitual, el borde de AROME está a barlovento y a menos de 100 km, mientras que el de HARMONIE queda al sur. Δ km es la escala efectiva que resume todo lo anterior: el paso de malla, salvo a menos de 200 km del borde de un dominio limitado, donde se interpola linealmente hacia la escala del modelo que lo alimenta (ARPEGE, 11 km, para AROME; IFS, 9 km, para HARMONIE; ICON‑EU, 7 km, para ICON‑D2); y nunca menor que la distancia a la celda devuelta. Prior es el peso de partida de cada fuente, proporcional a Δ^(−0.5), que se explica en el apartado del registro. Los bordes de DMI, KNMI, ICON y UKV salen de las definiciones de rejilla de Open‑Meteo. El de AROME no: Météo‑France solo publica un recorte en latitud y longitud, y el dominio nativo está reconstruido a partir de él (1440 × 1536 puntos de 1.3 km centrados en 46.45° N, 2° E). Sus bordes norte y sur quedan bien fijados; el este y el oeste dependen del meridiano central y tienen unos ±50 km de incertidumbre. En cualquier punto de ese intervalo AROME queda en A Coruña por detrás de HARMONIE. Fuera de Europa el catálogo es aproximado.
DMI y KNMI se piden como modelo regional puro. La mezcla “seamless” de esos identificadores devuelve IFS fuera de su dominio, y en ese caso ECMWF contaría dos veces en la fusión; con el modelo puro la casilla indica “sin cobertura” y la fuente no entra. La fuente “ECMWF 0.25°” se conserva desmarcada solo para que el registro antiguo siga siendo legible.
El WRF de 1 km de MeteoGalicia no figura entre las fuentes. Su servidor de datos solo autoriza lecturas desde sus propias páginas, y una web estática como esta no puede consultarlo desde el navegador. La fuente de malla más fina en Galicia es HARMONIE‑AROME de DMI, de 2 km.
Cómo se combina: consenso y contracción
Primero se forma un consenso de los modelos como media ponderada en log‑odds: logit p̄ = Σ w_m · logit p_m / Σ w_m. Esta media está garantizadamente dentro de la envolvente: nunca por encima del modelo más alto ni por debajo del más bajo. Después el posterior se obtiene contrayendo ese consenso hacia la climatología local: logit P = logit π + γ · (logit p̄ − logit π). El resultado queda siempre entre tu tasa local π y el consenso p̄.
Parámetro γ
Cuánto te fías de los modelos frente a la climatología, entre 0.1 y 1 (defecto 0.7). Con γ = 1 el posterior es el consenso puro; con valores bajos se pega a la frecuencia histórica de tu registro. Mantener γ por debajo de 1 es razonable mientras la conversión de índice a probabilidad no esté contrastada con tus observaciones; la recalibración automática (ver más abajo) va supliendo este ajuste a mano a medida que acumulas noches.
Fuentes ensemble (EPS/ENS)
Además de los modelos deterministas hay fuentes de conjunto: el mismo modelo ejecutado 30 a 50 veces con perturbaciones. Para ellas la probabilidad no sale de la logística, sino de los propios miembros (media de las probabilidades de los miembros), lo que refleja la incertidumbre real de la atmósfera esa noche. ICON EPS viene activada por defecto; GFS ENS y ECMWF ENS son más pesadas y están desmarcadas.
Recalibración automática
Con 12 o más noches registradas, la aplicación ajusta una corrección de Platt q = σ(a·logit P + b) sobre los pares (posterior congelado, resultado observado), con prior a ≈ 1, b ≈ 0 para que pocas noches no la distorsionen. Corrige el sesgo sistemático del posterior; cuando está activa, la línea de estado muestra "recalibrado (n, a, b)".
Tarjetas
Posterior para las próximas 6 horas y para la ventana del amanecer, con el rango mínimo a máximo entre modelos y la probabilidad individual de cada uno. La tercera tarjeta da la desviación típica entre modelos en el amanecer: acuerdo alto (< 10 pp), moderado o desacuerdo. Un posterior del 40 % con acuerdo alto es una previsión más útil que un 55 % con desacuerdo. La tarjeta del amanecer trae además su propia ventana fotográfica, medida sobre el posterior con umbral del 25 % (“niebla plena” a partir del 50 %), y, para las fuentes de conjunto, la banda p10–p90 y cuántos miembros dan niebla.
Gráfica
Una línea fina por modelo, banda gris con el rango y línea gruesa negra con el posterior. Eje vertical en %.
Tablas
“Estado del amanecer por modelo” muestra, para cada modelo, su probabilidad máxima en la ventana y el estado físico previsto en esa hora. “Pesos bayesianos y prior” muestra w_m, el Brier, el porcentaje de aciertos (con el número de noches congeladas entre paréntesis), la log‑verosimilitud acumulada y el prior Beta actual. La log‑verosimilitud es lo que fija el peso; Brier y aciertos son la misma información en unidades legibles.
6. Entrenamiento: registro de observaciones
El aprendizaje consiste en comparar lo que cada modelo predijo con lo que tú viste. Para que la comparación sea honesta, la predicción tiene que quedar fijada antes de conocer el resultado. La herramienta lo hace sola:
Congelación automática. Cada vez que pulsas “Calcular” en la pestaña 2, las probabilidades de cada modelo para la ventana del próximo amanecer se guardan asociadas a la fecha de esa noche (la noche se identifica por la fecha de la tarde, es decir, el día anterior al amanecer). Si calculas varias veces, se conserva la última, que es la previsión más reciente antes del amanecer. La línea de estado indica “Previsión congelada para la noche del …”.
Por la mañana. El campo “Noche del” aparece ya con la fecha de la noche recién terminada (antes de las 14:00 propone ayer; después, hoy). Elige lo observado (Niebla si la visibilidad fue inferior a 1 km; Bruma o neblina si hubo reducción notable pero superior a 1 km; Nada) y pulsa “Guardar observación”. La observación se empareja con la previsión que se congeló la víspera para esa fecha. No importa que a esa hora ya exista una previsión nueva para mañana: no se usa.
Etiqueta propuesta con el METAR. Al elegir la noche, la página consulta los partes METAR de la estación escrita en “Estación METAR (OACI)”, por defecto LECO (aeropuerto de A Coruña, en Alvedro), en la ventana del amanecer: de 2.5 h antes a 1.5 h después del orto. Propone Niebla si algún parte da FG o visibilidad inferior a 1000 m; Bruma si da BR, niebla en bancos, parcial, baja o en las inmediaciones (BCFG, PRFG, MIFG, VCFG), o menos de 5000 m; y Nada en otro caso. Una visibilidad reducida que el parte atribuye a otro fenómeno, como lluvia o calima, no cuenta. Debajo del formulario se lee la evidencia: número de partes, visibilidad mínima, hora, fenómenos y el parte en bruto. La propuesta solo preselecciona el desplegable y nunca se guarda sola. La estación no es tu emplazamiento (Alvedro queda a unos 7 km de la costa y a 100 m de altitud), así que corrige la etiqueta si viste otra cosa. Al guardar, la fila anota la evidencia en la columna METAR y marca con ≠ las noches en que tu etiqueta difiere de la propuesta. Los partes proceden del archivo ASOS del Iowa Environmental Mesonet.
Si esa noche no calculaste. No hay previsión congelada para esa fecha. La observación se guarda igualmente (aparece como “pendiente” en la columna posterior) y actualiza el prior climatológico, que solo necesita saber si hubo niebla o no; pero no modifica los pesos de los modelos, porque no hay predicción con la que compararla. Si más tarde ese mismo día calculas antes de que el amanecer cambie de fecha, la fila se completa automáticamente.
Con cada observación ocurren dos cosas. El prior Beta se actualiza (a += y, b += 1 − y, con y = 1, 0.5 o 0), de modo que la tasa base deja de ser el 12 % genérico y pasa a ser tu frecuencia local. Y la log‑verosimilitud de cada modelo acumula log P_m(y): un modelo que daba 80 % y hubo niebla suma log 0.8; uno que daba 10 % suma log 0.1. Los pesos w_m se recalculan como Δ_m^(−0.5) · exp(0.7 · log‑verosimilitud), normalizado.
El factor Δ_m^(−0.5) es un prior estructural. Δ_m es la escala efectiva de la fuente en tu punto, la columna Δ de la tabla de fuentes. Sin observaciones los pesos son ese prior: en A Coruña HARMONIE DMI, con Δ de 2 km, pesa 2.1 veces lo que IFS, de 9 km, y AROME, con Δ de 6.3 km por la cercanía de su borde, 1.2 veces. Con observaciones la verosimilitud lo corrige: una diferencia de 1.6 en log‑verosimilitud ya compensa un factor 3 de prior. Si una noche una fuente no tiene previsión congelada, porque se añadió después, falló o estaba desmarcada, se le imputa la log‑verosimilitud media de las demás en esa noche. Sin esa imputación una fuente con menos noches acumulaba menos penalización y pesaba más solo por tener menos historial.
Debajo de la tabla del registro, “Lecciones de tu registro” resume tus umbrales locales a partir de las noches con rasgos congelados: con qué ΔT y qué viento previstos ha llegado a haber niebla o bruma en tu sitio, con cuánta nubosidad media y con qué visibilidad prevista, y cuál fue la noche sin nada con menor ΔT. Es la parte del registro que más deprisa cambia lo que haces en el campo.
Orientación sobre cantidad: con 10 noches los pesos ya empiezan a separarse; con 40 o 50 tienen significado; con más de 100 merece la pena pasar a una regresión logística sobre las variables crudas.
7. Pestaña 3: calibración con METAR
El registro de observaciones aprende despacio: una noche por día. La pestaña 3 hace de una vez la misma comparación con el pasado. Descarga los partes METAR de una estación durante las últimas 60 a 180 noches y, para cada fuente, la previsión que daba la víspera en las coordenadas de esa estación. De ahí obtiene tres cosas por fuente, que la fusión de la pestaña 2 usa como punto de partida.
| Resultado | Cómo se mide | Cómo se usa en la fusión |
|---|---|---|
| Sesgo de T − Td | Media de (T − Td previsto) − (T − Td del METAR) en las horas de la ventana del amanecer. Positivo: la fuente seca de más. | Se corrige el punto de rocío antes de calcular el índice: Td′ = mín(T, Td + sesgo). La tabla del amanecer muestra el ΔT de la fuente y, tras una flecha, el corregido. |
| Curva de probabilidad | Regresión logística de la etiqueta (1, 0.5, 0) sobre el índice máximo de la ventana: logit p = a·(s − 70)/11 + b, con un prior gaussiano centrado en la curva común (a = 1, b = 0). | Sustituye a la curva común σ((s − 70)/11) para esa fuente y se aplica al índice reducido. La tabla da el umbral (índice con p = 50 %) y la escala κ. |
| Ventaja medida | Diferencia media por noche, Δℓ, entre la log‑verosimilitud de la fuente y la media de las fuentes evaluadas, con validación cruzada en cinco bloques. | Se suma a la log‑verosimilitud como diez noches propias: el peso inicial se multiplica por exp(0.7 · 10 · Δℓ). |
Además, la frecuencia media de niebla y bruma en la estación, ȳ, sustituye al 12 % inicial del prior climatológico, con el mismo peso de diez noches. Tus observaciones siguen actualizando el prior y los pesos a partir de ese punto.
Uso
Escribe el indicativo OACI de la estación (LECO por defecto), elige el periodo y pulsa “Calibrar”. Tarda unos segundos: Open‑Meteo entrega cada fuente en una petición. Al terminar, la calibración queda guardada en el navegador y aplicada; la casilla “Aplicar en la fusión” la desactiva sin borrarla y “Borrar calibración” la elimina. La línea de estado de la pestaña 2 indica “calibración LECO en N fuentes” cuando está en uso, y la tabla de fuentes anota el sesgo, el umbral y la escala de cada una.
De dónde sale la previsión de la víspera
Para las fuentes de Open‑Meteo, del archivo de pasadas anteriores (variables con sufijo _previous_day1): el valor que daba para cada hora la última pasada emitida con al menos 24 h de antelación, es decir, entre 24 y unas 30 h. Las fuentes se comparan así a igual antelación. La previsión que congelas por la tarde lleva menos, de 6 a 18 h, de modo que la destreza medida es una cota prudente. Los ensembles no se evalúan porque el archivo no conserva sus miembros.
El índice reducido
El archivo guarda temperatura, humedad, viento, nubosidad total y precipitación, pero no la visibilidad ni las capas de nubes. La retrospectiva calcula por eso un índice reducido, s_r: visibilidad estimada, nubes sin desglose y sin advección. La curva se ajusta y se valida sobre s_r, y en la fusión la probabilidad de una fuente calibrada sale de ese mismo s_r: logit p = a·(s_r − 70)/11 + b. La visibilidad que publica el modelo, las capas de nubes y la advección siguen a la vista en la pestaña 1 y en las señales de cada fuente, pero no entran en la probabilidad de una fuente calibrada, porque no hay archivo con el que medir cuánto valen. Los ensembles y las fuentes sin calibrar conservan el índice completo y la curva común.
Límites
La verdad es la estación y no tu emplazamiento. El sesgo y las curvas describen cómo se comporta cada modelo en ese punto, y trasladarlos al tuyo es una hipótesis tanto más débil cuanto más lejos o más distinto sea el sitio; la pestaña avisa cuando el punto queda a más de 30 km. Los METAR dan T y Td en grados enteros, lo que añade ruido pero no sesgo: con unas 90 noches el error típico del sesgo medio ronda 0.1 °C. Una fuente con menos de 20 noches utilizables queda sin calibrar y conserva la curva común. Si la destreza medida es baja, las curvas salen planas, con un techo de probabilidad bajo, y el posterior de la pestaña 2 queda comprimido: es el resultado de la medida, no un fallo. Conviene repetir la calibración cada pocas semanas, porque el sesgo de los modelos cambia con la estación del año y con sus actualizaciones.
8. Datos y privacidad: dónde se guarda el registro
Todo el registro (observaciones, probabilidades, selección de modelos, idioma) se guarda con localStorage en el navegador desde el que se usa la página. Nada se envía a ningún servidor; GitHub solo sirve el HTML estático y no recibe ni conserva tus datos. Las consultas de datos llevan solo las coordenadas (Open‑Meteo) o el indicativo de la estación (Iowa Environmental Mesonet). Implicaciones concretas:
| Situación | Qué pasa con el registro |
|---|---|
| Misma URL, mismo navegador, mismo dispositivo | Persiste indefinidamente, aunque cierres el navegador o hagas push de una nueva versión del HTML. |
| Otro navegador u otro dispositivo | No está: localStorage es por navegador y por origen. Usa Exportar e Importar JSON. |
Abrir el archivo en local (file://) y también desde Pages (https://) | Son orígenes distintos; cada uno tiene su propio registro. Exporta de uno e importa en el otro. |
| Borrar datos de navegación o “datos de sitios” | Se pierde. Exporta el JSON de vez en cuando y guárdalo en el propio repositorio, por ejemplo. |
| Modo incógnito | Se borra al cerrar la ventana. |
| Calibración de la pestaña 3 y estación METAR | Se guardan aparte (niebla_cal, niebla_metar) y no viajan en el JSON exportado: en otro navegador basta con pulsar “Calibrar” de nuevo. |
Otras páginas en el mismo origen (usuario.github.io) | Comparten el espacio de localStorage; las claves de datos usadas aquí empiezan por niebla_ (niebla_bayes, niebla_models, niebla_lang, niebla_metar, niebla_cal) para no colisionar. La única excepción es pn-lang, la preferencia de idioma compartida a propósito con las demás páginas del sitio. |
9. Interpretación y buenas prácticas
Señal fuerte de niebla de radiación: ΔT previsto por debajo de 1 °C a partir de medianoche, viento entre 2 y 8 km/h, nubes por debajo del 25 %, presión alta y en ascenso, y visibilidad modelada menor de 3 km (esta última, la variable menos fiable del lote: apoya, no arbitra). Si además varios modelos coinciden (desacuerdo < 10 pp), la probabilidad es alta.
Señal de niebla de advección (costa): punto de rocío del aire uno o dos grados por encima de la SST, viento moderado del mar, humedad alta. Puede darse con cielo nublado y viento de 15 o 20 km/h; en esos casos la pestaña 1 en modo interior la infravalora.
Cuándo desconfiar: valles estrechos, zonas con suelo muy húmedo tras lluvia reciente o embalses y ríos, donde la niebla local se forma con ΔT previsto de 2 o 3 °C. Los modelos no resuelven esa escala; tu registro sí la captura, de ahí la importancia del prior local.
Calibración: la pestaña 2 dibuja ahora este diagrama de fiabilidad por ti, en la sección «Calibración» junto a la tabla de pesos: agrupa las filas del registro por posterior congelado (0–25 %, 25–50 %, 50–75 %, 75–100 %) y pinta cada grupo como un punto (posterior medio, frecuencia real de niebla) sobre la diagonal de calibración perfecta, con área proporcional al número de noches. La lectura sigue siendo la misma que harías a mano: si las frecuencias reales son sistemáticamente más extremas que el posterior, sube γ; si son menos extremas, bájalo; si los puntos se pegan a la diagonal, deja γ como está. La herramienta orienta a partir de unas 10 noches; la lectura es fiable a partir de 30.
10. Ajustes avanzados (editar el HTML)
Todas las constantes están al principio de la sección de la pestaña 2 en niebla.html:
const PI0=0.12, A0=1.2, B0=8.8 // prior Beta inicial (media 0.12) const LAMBDA=0.7 // tempering de los pesos const TH=70, KAP=11 // logística p = σ((s − TH)/KAP) const RECAL_N=12, RECAL_TAU=6 // noches mínimas y anchura del prior de Platt const TIMEOUT=12000 // ms por modelo (los ensembles usan +8 s) const RHO=0.5 // exponente del prior estructural Δ^(−ρ); 0 da pesos iniciales iguales const IDX_V=2 // versión del índice anotada en cada previsión congelada const VIS_EST=0.6 // crédito de la visibilidad estimada (junto a score()) const EDGE_KM=200 // distancia al borde por debajo de la cual Δ se degrada (junto al catálogo SRC) const TAIL_H=54 // horas desde ahora a partir de las que DMI y KNMI se marcan como IFS en la pestaña 1 const CAL_NEQ=10, CAL_MIN=20 // noches propias a las que equivale la ventaja medida; noches mínimas para calibrar una fuente const CAL_VA=0.5, CAL_VB=4 // varianzas del prior de la curva por fuente (pendiente a y desplazamiento b)
En el archivo las cinco primeras van en una sola línea const; aquí se abren para poder comentarlas.
El parámetro γ se cambia desde la propia interfaz. Los pesos w_m y el consenso se calculan en run2(); la contracción hacia la climatología es la línea logit P = logit π + γ·(logit p̄ − logit π).
Los pesos del índice están en la función score(), común a ambas pestañas. Para añadir un modelo, amplía el array MODELS con el identificador de Open‑Meteo (por ejemplo jma_seamless) y, si quieres que la tabla de fuentes y el prior conozcan su malla, añade su entrada al catálogo SRC; sin ella se le suponen 10 km. Las coordenadas por defecto están en los atributos value de los campos de latitud y longitud, y de latitud B y longitud B para el sitio de comparación. La ventana fotográfica se recorta en winRange() y sus umbrales viajan en las llamadas a winTxt() (50 y 75 en la pestaña 1; 0.25 y 0.5 en la pestaña 2). La tabla de próximas mañanas está en morn(), el desglose en brk1() y la calculadora de contraste en renderK().
11. Problemas frecuentes
| Síntoma | Causa y solución |
|---|---|
| “Ningún modelo respondió a tiempo” | Open‑Meteo saturado o conexión lenta. Reintenta, reduce la selección o sube TIMEOUT. |
| Un modelo siempre en “timeout” | Desmárcalo; la fusión funciona con los que respondan. |
| “sin SST, advección desactivada” | El punto está tierra adentro para la API marina o la petición falló. En interior es lo esperado; en costa, prueba a mover el punto unos cientos de metros hacia el mar. |
| “Vis km” con ~ delante | Esa fuente no publica visibilidad (AROME, ARPEGE, ensembles ICON) y el valor es la estimación FSL a partir de T − Td y HR. Puntúa al 60 %. |
| Una casilla indica “sin cobertura” | El dominio de ese modelo regional no cubre las coordenadas: DMI y KNMI terminan hacia 41.5° N en la longitud de Galicia. La fuente no se pide y no cuenta como fallo. |
| “METAR de LECO no disponible” | El archivo del Iowa Environmental Mesonet no responde. Elige lo observado a mano: el registro funciona igual, solo que la fila queda sin evidencia. |
| La propuesta del METAR no coincide con lo que viste | Ocurrirá a veces: la estación está en otro sitio. Corrige el desplegable antes de guardar; la fila queda marcada con ≠. |
| Una fuente “sin previsiones archivadas” o con “menos de 20 noches con datos” en la pestaña 3 | El archivo de pasadas anteriores no tiene esa fuente para la estación o el periodo. Queda sin calibrar y usa la curva común. El registro de peticiones dice qué respondió el servidor. |
| “No se pudo calibrar” | Falta el METAR de la estación (indicativo sin partes o servidor caído), hay menos de 20 noches evaluables o ninguna fuente devolvió previsiones archivadas. La calibración anterior, si la había, se conserva. |
| El registro desapareció | Cambio de navegador, de dispositivo, de origen (file → https) o borrado de datos. Importa el JSON exportado. |
| “Usar mi posición” no hace nada | Permiso denegado o página servida sin HTTPS. Escribe las coordenadas a mano. |