# Best way to to find fitting parameters for time series of decaying-growing oscillator type

I have discrete time series emerging from the numerical simulations. It means that the time series can be slightly noisy. The time series should "obey" to the following formula: $$\psi(t) = \sum_{i=1}^{N} a_i \exp(\alpha_i t) \sin (\omega_i t + \phi_i)$$ where $N$ is not known in advance (it can be 1, 2, or 20) depending on a given simulation.

UPDATE 2016-08-05: Unknown parameters here are $a_i$, $\alpha_i$, $\omega_i$, $\phi_i$, and $N$, although the only thing I need is to extract $\alpha_i$ and $\omega_i$ from these time series.

Previously, when $N=1$ was guaranteed, I used nonlinear least-squares algorithm. It turned out that this algorithm requires an extremely good initial guess to find a right fit. I'm not sure how to provide a good initial guess when $N$ is not known in advance.

What is the most robust and best way to extract parameters I need from these time series? Thank you!

UPDATE 2016-08-05: The following is the code that demonstrates an example time series. This example is purely artificial, though, as I don't have a real time series emerging from numerical simulations right now.

alpha(1) = 0.03;
alpha(2) = 0.05;
alpha(3) = -0.01;

a(1) = 1e-5;
a(2) = 1e-5;
a(3) = 1e-5;

omega(1) = 0.9;
omega(2) = 0.125;
omega(3) = 0.001;

phi(1) = pi/2;
phi(2) = pi/3;
phi(3) = pi;

t = linspace(0, 100, 1000);
d = 0 * t;

for i = 1:3
d = d + a(i) * exp(alpha(i)*t) .* sin(omega(i)*t + phi(i));
end

plot(t, d, 'o-'); • You might be able to create a set of models defined by their choice of N and estimate their error using Cross Validation. You would obviously then train each model separately to find this error estimate. Then using the error estimates of each model, you could potentially identify an optimal N value for you to use to train on the data. – spektr Aug 5 '16 at 23:02
• Do you know a maximum $N$ at least? Increasing $N$ by one leads to 4 more predictors. As in general you want to minimize the amount of predictors to avoid statistical overfitting I assume $N$ should be rather small. You can set N = 1 and predict in the manner you already applied (nonlinear least-squares algorithm, as you seem to know how to handle $N=1$ case). You calculate residuals and use the residuals as input for N=2. You do so iteratively until you stop at you maximum N. Then you choose out of all the models ($N$ = 1, $N$ = 2,...) the one with the lowest AIC. – Jan Hackenberg Aug 8 '16 at 15:19