
Una curva de NDVI bonita y una curva de NDVI correcta no son la misma cosa, aunque la mayoría de los tutoriales de teledetección satelital en R las traten como si fueran sinónimos. Esa confusión es, para mí, el error más caro de todo el análisis de fenología vegetal con series temporales: se puede pasar un fin de semana entero puliendo un gráfico que se ve impecable y, aun así, terminar con la fecha de inicio de temporada completamente equivocada.
El problema no está en la curva en sí, sino en lo que uno le hace para "limpiarla". Casi todos los tutoriales que revisé alguna vez decían, de pasada, que había que suavizar los datos antes de sacar conclusiones, sin especificar mucho más que eso. Confié en esa frase suelta, usé el primer filtro de promedio móvil que encontré (el mismo que se recomienda para casi cualquier serie de tiempo) y el resultado se veía prolijo, con una curva redondeada y sin sobresaltos. El problema apareció recién cuando comparé esa fecha de inicio de temporada contra lo que veía a simple vista en las imágenes: no calzaban.
Antes de llegar a esto probé partir por QGIS, siguiendo un tutorial que prometía guiarme paso a paso, y me perdí en los menús desde el primer clic. Volví a RStudio no porque fuera más simple, sino porque ahí al menos podía ver cada línea de código y repetirla cuantas veces quisiera. Fue Raimundo, un conocido de las salidas de senderismo, quien me habló por primera vez de esto que llaman NDVI, sin que yo supiera todavía que terminaría metida hasta el cuello tratando de entenderlo. Detrás de esa sigla hay algo bastante simple: un número que resume qué tan verde está algo, calculado a partir de las bandas espectrales que trae cada imagen satelital, aunque ese cálculo ya lo dejé explicado en otro texto y no voy a repetirlo acá.
El mito de la curva perfecta en las series temporales de NDVI
Cada imagen satelital es, en el fondo, un raster: una grilla de números que RStudio tiene que saber leer antes de que uno intente cualquier cosa con fenología (ese primer paso, con sus propios dolores de cabeza, también quedó anotado en otra parte). Ya con las imágenes leídas, hay que decidir cómo se recorta el área que importa, cómo se sacan las nubes de encima y cómo se descargan las escenas correctas desde un principio: trabajo previo que casi nadie muestra, pero que determina si la serie temporal que se arma después tiene algún sentido.
Esa preparación silenciosa es justamente lo que hace que el mito de la curva bonita sea tan fácil de creer. Si las imágenes de base están mal recortadas, mal proyectadas o todavía con nubes de sobra, ningún filtro de suavizado va a arreglar eso después: solo va a esconder el problema bajo una línea más pareja.
Las nubes del sur también cuentan una mentira
Con las nubes pasa algo parecido al problema del filtro, pero al revés: en vez de aplanar la curva, la vuelven loca. En el pedazo de bosque nativo que sigo cerca de Barrio Alemania, hay tramos del año en que el satélite pasa varias veces seguidas y solo ve blanco.

Cuando por fin aparece una imagen despejada después de esas rachas, el gráfico puede mostrar un salto brusco, como si el bosque hubiera muerto y resucitado en cuestión de días. No fue el bosque el que cambió tan rápido: fueron restos de nubes o sombras que el filtro automático no alcanzó a limpiar bien, algo que un ojo entrenado en reconocer ese patrón habría descartado de inmediato.
Para entender cómo distinguir ese ruido de un cambio real en el bosque, me sirvió mucho leer sobre visualizar series temporales de satélite en R para cambios forestales, un tema aparte que no voy a repetir acá porque ya está bien cubierto en ese texto. Lo que sí puedo decir es que confundir ruido de nubes con una señal fenológica real es, probablemente, el segundo mito más caro después del de la curva bonita: ambos hacen confiar en un gráfico que se ve razonable, pero que está contando una historia que no pasó.
¿Por qué cualquier filtro de promedio arruina la fenología?
Un tutorial que seguí en su momento sí advertía, en una sola frase, que convenía revisar los picos después de suavizar, pero la advertencia venía casi al final y se me pasó por completo; terminé confiando a ciegas en el filtro por defecto.
La lluvia no daba tregua ese sábado, y el vidrio de la ventana que da al patio interior se empañaba otra vez, cuando tuve uno de esos momentos que una guarda para contar: llevaba un rato mirando un error de proyección que antes me habría hecho cerrar el computador de la rabia, y esa vez el mensaje, en lugar de ser un bloque de texto en inglés que ignoraba sin leer, de repente tuvo sentido, y lo resolví sola.
Esa misma tarde até cabos: el filtro de suavizado por defecto podía estar mintiéndome de una forma parecida, prolija por fuera pero equivocada por dentro.

Un filtro de promedio móvil hace exactamente lo que promete: agarra varios puntos vecinos y los reemplaza por su promedio. Sirve bien para series de tiempo tranquilas, pero la vegetación no cambia así, sobre todo en el bosque nativo, donde el brote de primavera puede ocurrir en una ventana bastante corta. Si el filtro es muy agresivo, aplana ese salto justo donde más importa, y la curva termina pareciendo un cambio gradual cuando en realidad fue algo bien puntual. Lo peor es que no se nota mirando solo el gráfico final: se ve limpio, coherente, incluso presentable, y esa apariencia de orden es justamente lo que hace que el error pase piola.
La alternativa que terminé adoptando no es mágica ni difícil de explicar: en vez de promediar puntos vecinos sin criterio, ajusta pequeños tramos de la curva a una forma que respeta los picos y valles reales, así que el brote sigue viéndose como un salto y no como una pendiente suave inventada por el cálculo. Se llama filtro Savitzky-Golay, tiene nombre de trabalenguas, pero no hace falta memorizar cómo funciona por dentro para usarlo bien: basta con entender qué problema resuelve y por qué el filtro más obvio no lo resuelve.

Cuando aplico ese filtro y comparo con la curva anterior, la diferencia no está en que se vea más bonita (de hecho, a veces se ve más irregular), sino en que respeta mejor lo que de verdad pasó en el bosque. Si quieres ver cómo se prepara todo esto desde antes, desde que la imagen todavía no tiene ninguna curva encima, puede que te sirva revisar cómo hacer un análisis multiespectral en R usando imágenes de satélite, que es el paso previo a meterse con el tiempo.
Encontrar el inicio real de la temporada sin inventar fechas
Una vez que la curva está bien suavizada, calcular el Start of Season deja de ser un ejercicio de ojo y pasa a ser una pregunta con una respuesta más concreta: el punto donde la curva empieza a subir de forma sostenida, no donde a alguien le parece que "aquí como que empieza".
Isidora, una compañera de este mismo camino autodidacta que conocí comentando los mismos tutoriales en YouTube, me avisó hace poco de una explicación en español que por fin dejaba esto claro sin dar tantas vueltas, así que se la debo. Más allá de la fenología, en este mismo camino se cruzan primos de este problema: clasificar coberturas vegetales y después revisar qué tan bien salió esa clasificación, sacar el valor de un raster justo en un punto específico, o incluso asomarse a cómo se modela dónde podría vivir una especie a partir de estas mismas imágenes. Son caminos distintos, cada uno con sus propios paquetes de R, pero todos parten de la misma base: imágenes bien leídas, bien proyectadas y bien limpias antes de sacar cualquier conclusión.

Con el filtro correcto y las nubes bien filtradas, algo que sí me sorprendió fue ver que las laderas que miran al norte despiertan bastante antes que las que quedan en sombra, algo que se intuye por lógica pero que se siente distinto cuando lo procesa una misma a partir de datos bajados del satélite. También se puede marcar el momento en que la vegetación llega a su punto más alto y el momento en que empieza a decaer hacia el invierno, siempre que la curva de base esté bien construida y no maquillada por un filtro que promedia sin pensar.
La regla que me quedó grabada
La regla que uso ahora, antes de confiar en cualquier curva suavizada, es simple: reviso si el filtro deja ver el mismo número de picos y valles que tenía el gráfico crudo, y comparo la fecha de inicio de temporada que me da con la que obtengo probando un filtro distinto. Si esa fecha se mueve mucho de un método a otro, algo anda mal, no importa cuán prolija se vea la línea en pantalla.
Guardo cada una de estas reglas en una carpeta de papel donde voy anotando a mano los errores que ya resolví, para no pelear otra vez con el mismo problema el próximo fin de semana; ahí quedó anotada esta también, justo al lado de la vez que no entendía por qué mis superficies de coberturas vegetales no cuadraban, algo que conté con más detalle en cómo logré calcular la superficie de coberturas vegetales en R sin errores. La taza de té, ya fría junto al trackpad, sigue ahí como prueba de que esto de la fenología convierte cualquier tarde en más horas de las que una planeaba, pero cada vez que una curva sale bien construida y no solo bien dibujada, vale la pena.