The claim
On 1,000 further random ETS+ARIMA models, the bounds checker of adam() in R and of ADAM in Python with bounds="admissible", which run smoothEigensCpp() on the whole model, gave the same admissibility decision as the prototype check of the whole model on every model, and a penalty slope (the largest root modulus) within the bisection tolerance of it in both families.
Scope: population: random ADAM models that combine additive ETS with ARIMA; conditions: ETS: level; no, additive or damped trend; no or one seasonal lag m in {4, 12}; smoothing parameters drawn from wide ranges, some fixed at 0, ARIMA: AR stationary, differences and MA up to order 2 at lag 1 and 1 at lag m, 15% over-differenced (an MA root at one on the unit circle of a differenced lag), ADAM's state space form of ARIMA (one state per lag of the ARI and MA polynomials), checked against the matrices of adam() on 20 of the models, the checkers called on the matrices of each model, R through pkgload::load_all of the repository; not for: regressors, constant, multiplicative models, several seasonal lags, CES, GUM · Simulation: E22 (T3.r1, T3.r2, T3.r3, T3.r4), artefacts A10, A1, A12, A13, A14 · Assumes: C28 · Limitations: L11 · Supersedes: B3, adam(), bounds = "admissible", smooth 4.6.0 · Planned: lab plan PL9, planned 22 October 2026 · Outcome: computed from the recorded results · Weaknesses: the code changed after the plan
Evidence
Planned test (lab plan PL9, run RN53): ets_arima.py --seed 3 --n 500 --impl generated 500 ETS+ARIMA and 500 ETS+SARIMA models (seed 3) and passed the matrices of each to adam_bounds_checker() of R (through pkgload::load_all of the repository) and of Python, with the AR reflection of its factors, comparing the penalty (zero, or 1e100 times the largest root modulus) with the prototype check of the whole model.
Setup: studied bounds checker of adam() · cases random ETS+ARIMA models · procedure comparison with a reference, check of the whole model · lens admissibility decision, largest mode modulus
- R17 max abs difference between the ARIMA form of the ARIMA part and its ARI and MA polynomials = 0.0000 (models: 1000)
| Row | family | check | models whose admissibility decision differs from the PBH reference | models accepted by the check and rejected by the PBH reference | models rejected by the check and accepted by the PBH reference |
|---|---|---|---|---|---|
| r1 | ETS+ARIMA | split | 171 | 115 | 56 |
| r2 | ETS+ARIMA | joint | 0 | 0 | 0 |
| r3 | ETS+SARIMA | split | 150 | 129 | 21 |
| r4 | ETS+SARIMA | joint | 0 | 0 | 0 |
| Row | family | max abs difference of the largest modulus, check of the whole model against the PBH reference, on models both find inadmissible | models found admissible by the PBH reference (models: 500) | inadmissible |
|---|---|---|---|---|
| r1 | ETS+ARIMA | 0.0000 | 159 | 341 |
| r2 | ETS+SARIMA | 0.0000 | 76 | 424 |
| Row | family | language | admissibility decisions of the package's bounds checker that differ from the prototype check of the whole model | max abs difference of the largest modulus, package's bounds checker against the prototype, on models both find inadmissible | inadmissible |
|---|---|---|---|---|---|
| r1 | ETS+ARIMA | R | 0 | 0.0000 | 341 |
| r2 | ETS+ARIMA | Python | 0 | 0.0000 | 341 |
| r3 | ETS+SARIMA | R | 0 | 0.0000 | 424 |
| r4 | ETS+SARIMA | Python | 0 | 0.0000 | 424 |
Exploratory runs of the checker P4 (exact_oracle.py, seeds 21-23 and 31-34, 250 models each): admissibility by an exact oracle (rational determinants and the exact greatest common divisor of theta and phi, which cancels any shared factor) against the cancellation of cyclotomic factors ('author'), the PBH reference ('pbh') and the package ('pkg'); the number of models whose decision differs from the oracle.
Setup: studied check of the whole model, PBH reference, bounds checker of adam() · cases ETS+ARIMA models of the checker's generator · procedure comparison with a reference, exact gcd oracle · lens admissibility decision
| Row | seed | models whose admissibility decision differs from the exact gcd oracle (check: author) | models whose admissibility decision differs from the exact gcd oracle (check: pbh) | models whose admissibility decision differs from the exact gcd oracle (check: pkg) |
|---|---|---|---|---|
| r1 | 21 | 0 | 0 | 1 |
| r2 | 22 | 0 | 0 | 0 |
| r3 | 23 | 0 | 0 | 0 |
| r4 | 31 | 0 | 0 | 0 |
| r5 | 32 | 0 | 0 | 0 |
| r6 | 33 | 0 | 1 | 1 |
| r7 | 34 | 0 | 0 | 1 |
Limitations
For an MA root exactly on the unit circle that does not cancel, the decision of the check is set by rounding: the checker P4 found three models of a wider generator, with values of the check between 0.99999999999 and 1, that the package accepted and the prototype rejected. Since this finding the bounds checkers admit a model only when the value is at most 1 - 1e-10 (decision DC8 of the lab record), which rejects these three; the planned tests ran before the margin, and their random models have no such root.
Assumptions
For ETS+ARIMA models with a stationary AR polynomial, and of the whole model share no factor with a root in that is not cyclotomic, so the PBH reference and the cancelled MA polynomial decide the same admissibility. Rested on by C26.
Definitions
Methods 6
D5 PBH reference: The largest modulus among the eigenvalues of the expanded discount matrix for which the smallest singular values of and of both exceed (Popov-Belevitch-Hautus rank tests), computed with numpy as pbh_max().
D6 cyclotomic cancellation: The procedure that computes the coefficients of by an inverse discrete Fourier transform of their values at the -th roots of unity ( the smallest power of 2 above ), and divides both by every cyclotomic polynomial , dividing one of the lags, for as long as it divides both with a remainder at most times the sum of absolute coefficients; the quotient of is the cancelled MA polynomial .
D7 step-down test: The Levinson-Durbin step-down (Schur-Cohn) recursion on : for , the test passes when every , which holds if and only if all roots lie outside the unit circle (the are the partial autocorrelations of the autoregression with this polynomial). Source: Barndorff-Nielsen and Schou (1973).
D10 check of the whole model: Admissibility of a lagged SSOE model from the MA polynomial of its ARIMA form: is divided by its common factors with by cyclotomic cancellation, and the model is accepted when the cancelled polynomial has no root in and, for a model with ARIMA components, the AR polynomial of its ARIMA part is stationary; its largest mode modulus is over the roots of . In the numpy prototype (admissibility.py, confirm.py, ets_arima.py) the roots come from numpy; in smooth the step-down test decides and bisection gives the modulus.
D14 · a kind of D10 bounds checker of adam(): adam_bounds_checker() of adam(), om() and omg() in R (R/utils-adam.R) and of ADAM, OM and OMG in Python, with bounds="admissible" after this study: smoothEigensCpp() on the whole model, with a shortcut that accepts a pure ARIMA model (without ETS and adaptive regressors) whose MA factors are invertible without running it; the penalty is zero, or 1e100 times the largest root modulus.
D39 exact gcd oracle: Admissibility by rational determinants and the exact greatest common divisor of and , which cancels any shared factor (code/checker/exact_oracle.py of the checker P4).
Data 2
D22 random ETS+ARIMA models: Random ADAM models combining additive ETS with ARIMA (ets_arima.py), 500 with ARIMA at lag 1 and 500 with seasonal ARIMA per seed (seed 2 for plans PL7 and PL8, seed 3 for plan PL9): ETS with a level; no, additive or damped trend; no or one seasonal lag in {4, 12}; smoothing parameters drawn from wide ranges, some fixed at 0; ARIMA with a stationary AR polynomial, differences and MA up to order 2 at lag 1 and 1 at lag , 15% over-differenced (an MA root at one on the unit circle of a differenced lag); built in ADAM's state space form (one state per lag of the ARI and MA polynomials).
D23 ETS+ARIMA models of the checker's generator: Random ADAM ETS+ARIMA models from the generator of the checker P4 (code/checker/exact_oracle.py with lib.py), wider than the random ETS+ARIMA models: 250 models for each of seeds 21-23 and 31-34.
Variables and measures 2
D29 admissibility decision: Whether a method accepts a model as admissible (decaying weights); compared between a method and a reference as the number of models on which the two differ.
D30 largest mode modulus: The largest modulus of the modes that decide admissibility: for the PBH reference the largest of the reachable and observable eigenvalues of the expanded discount matrix, for the check of the whole model over the roots of the cancelled MA polynomial, for the per-lag check the largest of its blocks; a model is admissible when it is below 1.
Study design 1
D26 comparison with a reference: Each model's admissibility decision, and its largest mode modulus where both find it inadmissible, computed by the method studied and by a reference on the same model (the PBH reference, the roots by numpy, the numpy prototype of the check of the whole model or an exact oracle); the result is the number of models whose decisions differ and the largest absolute difference of the modulus. In the planned tests, models whose reference modulus lies within 1e-8 of 1 are left out and counted.
Concepts 2
D2 expanded discount matrix: The transition matrix of size of the lag-1 system equivalent to , in which component carries itself and its lagged copies; , and are expanded in the same way, so that .
D3 decaying weights: A lagged SSOE model has decaying weights when the weights of the past observations in its fitted values tend to zero, that is, when every eigenvalue of its expanded discount matrix that is reachable from and observable through has ; the largest such is its largest mode modulus. A mode that does not reach but sees carries an initial state whose effect is not covered: with it grows.
Context
References
- Barndorff-Nielsen and Schou (1973) Barndorff-Nielsen, O., & Schou, G. (1973). On the parametrization of autoregressive models by partial autocorrelations. Journal of Multivariate Analysis, 3(4), 408–419. doi:10.1016/0047-259X(73)90030-4 Used by: D7
Artefacts
- A1 · code numpy prototype of the admissibility check of pure additive lagged SSOE models: lag-1 expansion, the per-lag check of smoothEigens(), the PBH reference, ARIMA-form polynomials by inverse DFT, cyclotomic cancellation, step-down test and bisection; ETS and GUM model builders
- A10 · code test script of Q2: random ETS+ARIMA models, the check of the parts apart and of the whole model against the PBH reference, the structure against adam(), and the bounds checkers of the package in R and Python against the prototype
- A12 · code the bounds checker of adam(), om() and omg() in R (adam_bounds_checker())
- A13 · code the bounds checker of ADAM, OM and OMG in Python (adam_bounds_checker())
- A15 · code the exact oracle of the checker P4 (with lib.py in the same folder): rational determinants and the exact gcd of theta and phi against the cancellation, the PBH reference and the package
- A14 · code the C++ check shared by R and Python (smoothEigensCpp()), at the version tested by C26
- A18 · data Every result of the lab record at full precision, one row per result: the lab result, the run that produced it, the quantity, its conditions (JSON) and the value.
Score
Scores are computed by rules from the claimset file (EntryLib rubric 0.2): they check the record, not the science, and may change as the rubric and reviews develop. The rubric.
C26: 92, High
Novelty: new, by the authors · no close match on EntryLib
- −5 Plan The lab record flags the test: code changed after plan. To remove it: Rerun the test as planned, or explain the flag in a limitation.
- −3 Plan The plan's time is anchored by a git push only. To remove it: Anchor plans with the platform, a timestamp authority (RFC 3161) or a registry.