package datascience

import "math"

// Impute rellena valores NaN usando forward-fill.
// Cada NaN se reemplaza con el último valor válido (no NaN) anterior.
// Si el primer valor es NaN y no hay valor anterior, se mantiene como NaN.
func Impute(data []float64) []float64 {
	result := make([]float64, len(data))
	last := math.NaN()
	for i, v := range data {
		if !math.IsNaN(v) {
			last = v
		}
		result[i] = last
	}
	return result
}
