All Downloads are FREE. Search and download functionalities are using the official Maven repository.

timeseries.models.arima.StateSpaceARMA Maven / Gradle / Ivy

The newest version!
package timeseries.models.arima;

final class StateSpaceARMA {

    private final double[] differencedSeries;
    private final double[] arParams;
    private final double[] maParams;
    private final double[][] transitionMatrix;
    private final double[] disturbanceVector;
    private final double[] observationVector;
    private final int r; // r = max(p, q + 1).

    StateSpaceARMA(final double[] differencedSeries, final double[] arParams, final double[] maParams) {
        this.differencedSeries = differencedSeries.clone();
        this.arParams = arParams.clone();
        this.maParams = maParams.clone();
        r = Math.max(arParams.length, maParams.length + 1);
        this.transitionMatrix = createTransitionMatrix();
        this.disturbanceVector = createMovingAverageVector();
        this.observationVector = createStateEffectsVector();
    }

    private double[] createStateEffectsVector() {
        double[] Z = new double[r];
        Z[0] = 1.0;
        return Z;
    }


    private double[] createMovingAverageVector() {
        double[] R = new double[r];
        R[0] = 1.0;
        System.arraycopy(maParams, 0, R, 1, maParams.length);
        return R;
    }

    private double[][] createTransitionMatrix() {
        double[][] T = new double[r][r];
        for (int i = 0; i < arParams.length; i++) {
            T[i][0] = arParams[i];
        }
        for (int i = 1; i < r; i++) {
            T[i - 1][i] = 1;
        }
        return T;
    }

    double[] differencedSeries() {
        return differencedSeries.clone();
    }

    double[] arParams() {
        return arParams.clone();
    }

    double[] maParams() {
        return maParams.clone();
    }

    final double[][] transitionMatrix() {
        return this.transitionMatrix.clone();
    }

    final double[] movingAverageVector() {
        return this.disturbanceVector.clone();
    }

    final double[] stateEffectsVector() {
        return this.observationVector.clone();
    }

    final int r() {
        return this.r;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy