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); }
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); }
public ArtaStatistics CorrelationMatrix() { AutoCorrelation.GetCorrelationMatrix(context.ArtaCorrelationCoefficients); return(this); }