Package jline.api.sim

Class Sim_firquest

java.lang.Object
jline.api.sim.Sim_firquest

public final class Sim_firquest extends Object
Fixed-sample-size quantile interval from independent replications, FIRQUEST.

The replicated counterpart of Sim_fquest. It differs in four places.

  • The warmup randomness test runs independently on each replicate path, and the batch size it settles on may differ between replications.
  • Truncation removes the largest of those batch sizes from the front of every replication, not just from one path. This is more aggressive on purpose: an untruncated transient common to all replications biases every replicate estimate the same way, and averaging cannot remove it.
  • The four stage tests act on the R*b signed areas and R*b replicate batched quantile estimators pooled across replications, with the same b in every replication and at least one batch from each.
  • The delivered interval is ytilde_p(N*) +- t_{1-alpha/2,2Rb-1} sqrt(Vtilde_p(w;R,b,m)/N*), N* = R*b*m, with the pooled estimators
       A_p(w;R,b,m)    = (Rb)^-1 sum_j A_p(w;j,m)^2
       Ntilde_p(R,b,m) = m (Rb-1)^-1 sum_j (yhat_p(j,m) - ytilde_p(N*))^2
       Vtilde_p        = [Rb A_p + (Rb-1) Ntilde_p] / (2Rb-1).
     
    The heuristic fallback drops the residual-autocorrelation correction, since the pooled batch quantiles come from independent paths.

Independent replications shorten the correlation the estimator has to fight, and they parallelize, but they reintroduce initialization bias in every path, so a short run length per replication is worse here than in Sim_fquest. The article reports slight undercoverage at p = 0.99 when the total sample is under 500000, down to 90.8%.

Port of MATLAB sim_firquest.m.

Reference: A. Lolos, C. Alexopoulos, D. Goldsman, K. D. Dingec, A. C. Mokashi, J. R. Wilson, "A Fixed-Sample-Size Procedure for Estimating Steady-State Quantiles Based on Independent Replications", Proc. Winter Simulation Conference, 2025.

Since:
LINE 3.1.0
  • Method Details

    • defaultBatchCounts

      public static int[] defaultBatchCounts(int R)
      Article default batch counts per replication, as a function of the replication count.

      Chosen so that R*b pooled statistics remain enough to test while every replication still contributes at least one batch.

      Parameters:
      R - number of replications, at least 2
      Returns:
      the descending batch counts
    • sim_firquest

      public static QuantileCIResult sim_firquest(double[][] y, double p)
      Runs FIRQUEST at nominal 95% coverage with the default constants.
      Parameters:
      y - the replicate sample paths, y[r] being replication r, all of equal length
      p - quantile probability in (0,1)
      Returns:
      the point estimate and interval
    • sim_firquest

      public static QuantileCIResult sim_firquest(double[][] y, double p, double alpha)
      Runs FIRQUEST with the default constants.
      Parameters:
      y - the replicate sample paths, all of equal length
      p - quantile probability in (0,1)
      alpha - significance level in (0,1)
      Returns:
      the point estimate and interval
    • sim_firquest

      public static QuantileCIResult sim_firquest(double[][] y, double p, double alpha, QuestOptions options)
      Runs FIRQUEST.
      Parameters:
      y - the replicate sample paths, all of equal length
      p - quantile probability in (0,1)
      alpha - significance level in (0,1)
      options - procedure constants, null for the defaults; when b0 or s are left at the Sim_fquest defaults they are replaced by 25 and defaultBatchCounts(int)
      Returns:
      the point estimate and interval