Пример #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);
        }
Пример #2
0
        private static ArtaProcessGeneral CreateArtaProcessG(RealDistribution distribution, double[] artaCorrelationCoefficients, RandomGenerator random) //throws NotStationaryException
        {
            ArtaProcessGeneral    arta   = null;
            AutocorrelationFitter fitter = new AutocorrelationFitter(distribution);

            double[]  arCorrelationCoefficients = fitter.FitArAutocorrelations(artaCorrelationCoefficients, DEFAULT_ERROR);
            ArProcess ar = ArProcessFactory.CreateArProcess(arCorrelationCoefficients, random);

            arta = new ArtaProcessGeneral(ar, distribution);
            return(arta);
        }
Пример #3
0
        private double CalculateMinimumFeasibleBivariateCorrelation(RealDistribution distribution)
        {
            double minFBC = 0.0;

            // consider special cases, final else is general approach
            if (distribution is NormalDistribution || distribution is UniformRealDistribution || distribution is TDistribution)
            {
                minFBC = -1.0;
            }
            else if (distribution is ExponentialDistribution)
            {
                minFBC = 1.0 - Math.PI * Math.PI / 6.0;
            }
            else
            {
                double mean     = distribution.getNumericalMean();
                double variance = distribution.getNumericalVariance();
                double integral = integrator.integrate(IterativeLegendreGaussIntegrator.DEFAULT_MAX_ITERATIONS_COUNT, new UnivariatDistributionFunction(distribution), 0.0, 1.0);
                minFBC = (integral - mean * mean) / variance;
            }

            return(minFBC);
        }
Пример #4
0
 private UnivariatDistributionFunction(RealDistribution distribution)
 {
     this.distribution = distribution;
 }
Пример #5
0
 public FeasibilityTest(RealDistribution distribution) : this(new IterativeLegendreGaussIntegrator(5, IterativeLegendreGaussIntegrator.DEFAULT_RELATIVE_ACCURACY, IterativeLegendreGaussIntegrator.DEFAULT_ABSOLUTE_ACCURACY), distribution)
 {
 }
Пример #6
0
 public FeasibilityTest(UnivariateIntegrator integrator, RealDistribution distribution)
 {
     this.integrator = integrator;
     this.minimumFeasibleBivariateCorrelation = CalculateMinimumFeasibleBivariateCorrelation(distribution);
 }
Пример #7
0
 public ArtaCorrelationEstimator(RealDistribution dist)
 {
     this.distribution = dist;
 }
 public double nextInversionDeviate(RealDistribution distribution)
 {
     return(distribution.inverseCumulativeProbability(nextUniform(0, 1)));
 }
Пример #9
0
 public static IArtaProcess CreateArtaProcess(RealDistribution distribution, double[] artaCorrelationCoefficients)// throws NonFeasibleCorrelationException, NotStationaryException
 {
     return(CreateArtaProcess(distribution, artaCorrelationCoefficients, new RandomAdaptor(new MersenneTwister())));
 }
 public ArtaProcessGeneral(ArProcess ar, RealDistribution distribution) : base(ar)
 {
     this.distribution = distribution;
     // TODO Auto-generated constructor stub
 }
 public AutocorrelationFitter(RealDistribution dist)
 {
     this.artaCorrelationEstimator = new ArtaCorrelationEstimator(dist);
 }