environmentaltools.temporal.fourier_initialization

environmentaltools.temporal.fourier_initialization(df, param)[source]

Initialize Fourier expansion parameters using moving window analysis.

Computes initial parameter estimates for non-stationary analysis by fitting stationary models in a moving time window, then extracting Fourier coefficients from the time-varying parameter estimates.

Parameters:
  • df (pd.DataFrame) – Time series data with ‘n’ column containing normalized time [0,1]

  • param (dict) –

    Configuration dictionary containing:

    • ’no_tot_param’int

      Total number of distribution parameters

    • ’initial_parameters’dict

      With ‘mode’ (list of Fourier orders), ‘par’ (list), ‘plot’ (bool)

    • ’reduction’bool

      Whether using reduced parameter space

    • Other keys required by stationary_analysis

Returns:

Updated param dictionary with:

  • ’initial_parameters’][‘par’]list

    Initialized Fourier coefficients [mean, a1, b1, a2, b2, …]

  • ’par’list

    Same as initial_parameters[‘par’]

  • ’mode’tuple

    Fourier mode orders

Return type:

dict

Notes

The algorithm:

  1. Divides annual cycle into daily windows (14-day width)

  2. Fits stationary model to data in each window

  3. Applies Fast Fourier Transform to parameter time series

  4. Extracts Fourier coefficients: mean, amplitude_n, phase_n

Window width is 14/365.25 (approximately 2 weeks) to capture intra-annual variability while maintaining statistical robustness.

Boundary conditions handle wrap-around at year start/end.

Examples

>>> param['initial_parameters'] = {
...     'mode': [2],  # 2nd order Fourier
...     'par': [],
...     'plot': False
... }
>>> param = fourier_initialization(df, param)
>>> # param['par'] now contains [mean, a1, b1, a2, b2] for each parameter