public ArtaStatistics Excecute() { artaNumbers = new double[iterations]; for (int i = 0; i < iterations; i++) { artaNumbers[i] = context.ArtaProcess.Next(); } acfs = AutoCorrelation.CalculateAcfs(artaNumbers, lag); PrintBasicInformation(); if (printAcfs) { PrintAcfs(); } if (printPacfs) { PrintPacfs(); } if (printOrder) { PrintOrder(); } if (printArtaNumbers) { PrintArtanumbers(); } if (printArnumbers) { PrintArnumbers(); } return(this); }
public void PrintAcfs() { acfs = AutoCorrelation.CalculateAcfs(artaNumbers, lag); Console.WriteLine("###############################################\n"); Console.WriteLine("ACFS:"); foreach (var num in acfs) { Console.WriteLine(num); } }
public static IArtaProcess CreateArtaProcess(double[] data)// throws NonFeasibleCorrelationException, NotStationaryException { EmpiricalDistribution distribution = new EmpiricalDistribution(data); int order = OrderEstimator.EstimateOrder(data); Console.WriteLine("order" + order); double[] artaCorrelationCoefficients = new double[AutoCorrelation.CalculateAcfs(data, order).Length]; Array.ConstrainedCopy(AutoCorrelation.CalculateAcfs(data, order), 1, artaCorrelationCoefficients, 1, order + 1); return(CreateArtaProcess(distribution, artaCorrelationCoefficients, new RandomAdaptor(new MersenneTwister()))); }
public static int EstimateOrder(double[] data, int maxOrder) { double significanceLevel = 2 / Math.Sqrt(data.Length); int order = maxOrder; double[] acfs = AutoCorrelation.CalculateAcfs(data, maxOrder); double[] pacfs = AutoCorrelation.CalculatePacfs(acfs); for (int i = 0; i < maxOrder; i++) { if (Math.Abs(pacfs[i + 1]) < significanceLevel) { return(i); } } return(order); }
public static int EstimateOrder(double[] data, int maxOrder) { var significanceLevel = 2 / System.Math.Sqrt(data.Length); var order = maxOrder; var acfs = AutoCorrelation.CalculateAcfs(data, maxOrder); var pacfs = AutoCorrelation.CalculatePacfs(acfs); for (var i = 0; i < maxOrder; i++) { if (System.Math.Abs(pacfs[i + 1]) < significanceLevel) { return(i); } } return(order); }
private void Execute(object obj) { ErrorIsVisible = Visibility.Hidden; if (!InputIsValid()) { return; } ArtaNumbers.Clear(); Acfs.Clear(); Pacfs.Clear(); try { var context = new ArtaExecutionContext((ArtaExecutionContext.Distribution)Distribution, new double[] { correlationCoefficient }); var artaProcess = context.ArtaProcess; artaNumbers = new double[iterations]; artaNumbers = new double[iterations]; for (var i = 0; i < Iterations; i++) { artaNumbers[i] = artaProcess.Next(); ArtaNumbers.Add(new ListHelper(artaNumbers[i], 0, 0)); } acfs = AutoCorrelation.CalculateAcfs(artaNumbers, lag); foreach (var item in acfs) { Acfs.Add(new ListHelper(0, item, 0)); } pacfs = AutoCorrelation.CalculatePacfs(acfs); foreach (var item in pacfs) { Pacfs.Add(new ListHelper(0, 0, item)); } Order = OrderEstimator.EstimateOrder(artaNumbers, lag); ExportIsEnabled = true; } catch (Exception exception) { ErrorMessage = exception.Message; ErrorIsVisible = Visibility.Visible; } }
public static void Main(String[] args) { RealDistribution distribution = new ExponentialDistribution(1.0); double[] artaCorrelationCoefficients = { 0.3, 0.3, -0.1 }; IArtaProcess arta = ArtaProcessFactory.CreateArtaProcess(distribution, artaCorrelationCoefficients); double[] data = new double[10000]; for (int i = 0; i < data.Length; i++) { data[i] = arta.Next(); } int maxLag = 10; double[] acfs = AutoCorrelation.CalculateAcfs(data, maxLag); double[] pacfs = AutoCorrelation.CalculatePacfs(acfs); Console.WriteLine("#########################"); Console.WriteLine("ACFS"); foreach (double d in acfs) { Console.WriteLine(d.ToString()); } Console.WriteLine('\n'); Console.WriteLine("#########################"); Console.WriteLine("PACFS"); foreach (double d in pacfs) { Console.WriteLine(d); } Console.WriteLine('\n'); Console.WriteLine("#########################"); Console.WriteLine("Order"); Console.WriteLine(OrderEstimator.EstimateOrder(data, maxLag)); }
public ArtaStatistics Pacfs() { acfs = AutoCorrelation.CalculateAcfs(artaNumbers, lag); printPacfs = true; return(this); }