Beispiel #1
0
        public static IArtaProcess CreateArtaProcess(RealDistribution distribution, double[] artaCorrelationCoefficients, RandomGenerator random) //throws NonFeasibleCorrelationException, NotStationaryException
        {
            AbstractArtaProcess arta = null;

            if (artaCorrelationCoefficients == null || artaCorrelationCoefficients.Length == 0)
            {
                double[] noCorrelation = { 0.0 };
                artaCorrelationCoefficients = noCorrelation;
            }

            // check feasibility
            FeasibilityTest ft = new FeasibilityTest(distribution);

            ft.CheckFeasibility(artaCorrelationCoefficients);

            // check if correlation matrix is positive definite, if not CholeskyDecomposition throws Error
            new CholeskyDecomposition(AutoCorrelation.GetCorrelationMatrix(artaCorrelationCoefficients));

            if (distribution is NormalDistribution)
            {
                arta = CreateArtaProcessN((NormalDistribution)distribution, artaCorrelationCoefficients, random);
            }
            else if (distribution is UniformRealDistribution)
            {
                arta = createArtaProcessU((UniformRealDistribution)distribution, artaCorrelationCoefficients, random);
            }
            else
            {
                arta = CreateArtaProcessG(distribution, artaCorrelationCoefficients, random);
            }
            return(arta);
        }
Beispiel #2
0
 private IArtaProcess CreateArtaProcess()
 {
     if (ArtaCorrelationCoefficients == null)
     {
         ArtaCorrelationCoefficients = new double[] { 0.0 };
     }
     AutoCorrelation.GetCorrelationMatrix(ArtaCorrelationCoefficients).Cholesky();
     return(distribution.CreateArtaProcess(ArtaCorrelationCoefficients, new MersenneTwister()));
 }
        public static double[] ArAutocorrelationsToAlphas(double[] arAutocorrelations)
        {
            var dim    = arAutocorrelations.Length;
            var alphas = new double[dim];
            var psi    = AutoCorrelation.GetCorrelationMatrix(arAutocorrelations);
            var r      = CreateMatrix.DenseOfColumnArrays(arAutocorrelations).Transpose();
            var a      = r.Multiply(psi.Cholesky().Solve(psi).Inverse());

            alphas = a.Row(0).AsArray();
            return(alphas);
        }
        /**
         * Determines the coefficients (alpha) for the ARTA-Process.
         * */
        public static double[] ArAutocorrelationsToAlphas(double[] arAutocorrelations)
        {
            int dim = arAutocorrelations.Length;

            double[] alphas = new double[dim];

            RealMatrix psi = AutoCorrelation.GetCorrelationMatrix(arAutocorrelations);
            RealMatrix r   = new Array2DRowRealMatrix(arAutocorrelations).transpose();
            RealMatrix a   = r.multiply(new CholeskyDecomposition(psi).getSolver().getInverse());

            alphas = a.getRow(0);
            return(alphas);
        }
Beispiel #5
0
 public ArtaStatistics CorrelationMatrix()
 {
     AutoCorrelation.GetCorrelationMatrix(context.ArtaCorrelationCoefficients);
     return(this);
 }